Własny domowy serwer oparty o LEMP stack [Poradnik]


  • Admin

    Cześć, w dzisiejszym poradniku pokaże Wam w jaki sposób stworzyć swój własny domowy serwer WWW.
    Konfiguracja ta będzie oparta o tzw. LEMP stack (czyli Linux & Nginx & MySQL & PHP) - świetny i wydajny "starter kit" dla początkującego developera. Później spróbujemy to sobie wszystko wystawić na zewnątrz (poza naszą sieć domową) czyniąc jednocześnie dostępne z zewnątrz.

    Całość spocznie na dedykowanym do tego celu komputerze do zadań specjalnych - czyli starym laptopie ;)
    Natomiast nic nie stoi na przeszkodzie aby to samo zrobić wykorzystując zwykłą stacjonarkę, jeżeli tylko nie mamy na względzie oszczędności prądowych czy generowanego hałasu (dlatego właśnie laptop świetnie się do tego celu nadaje).

    Przygotowanie

    Będziemy potrzebowali paru rzeczy, a mianowicie:

    • Wolny (dostępny) komputer z internetem + drugi roboczy (np. z Windows'em)
    • Dystrybucja z dowolnym Linux'em
    • Pendrive ~ 4gb
    • Wolny czas (instalacja w zależności od sprzętu może chwile zająć)

    Tutaj parę słów wyjaśnienia, dystrybucja którą wybraliśmy do tego poradnika to Ubuntu Desktop, z racji tego, że jest bardziej uniwersalna (laptop wciąż może pozostać laptopem - jednocześnie pełniąc funkcje serwer'a) jeżeli jednak macie taką możliwość mocno zalecam zainteresować się wersją Serwer'ową (bez klikalnych okienek) czyli np. Ubuntu Server czy Debian Server.

    Drugim mankamentem który trzeba mieć na uwadze to fakt, że taki sprzęt posiada dwie karty sieciowe a co za tym idzie obu z nich musimy przypisać stały adres IP w obrębie naszej sieci (ale szczegółowo na ten temat porozmawiamy sobie za chwile).

    Pobieramy distro

    Nie przedłużając, jednak przygotujmy sobie nasz nośnik instalacyjny.
    Pierwsze co to pobierzemy sobie naszą dystrybucje z oficjalnej strony -> klik!.
    Tutaj standardowo zaufamy wersji LTS (Long Time Support) czyli z wydłużonym okresem wsparcia, klikamy Download i gotowe, obraz się ściąga więc idźmy dalej.

    Bootowalny pendrive

    Sposobów na nagranie Linux'a na pendrive'a jest mnóstwo, wybór w dużej mierzy zależy od systemu na jakim aktualnie pracujemy oraz opcji jakie chcemy uzyskać - jest to jedyne ograniczenie na jakie napotkamy.

    Weźmy na przykład sytuacje w której chcielibyśmy taki obraz nagrać z ukierunkowaniem na UEFI & GPT - tutaj bardzo dobrze poradzi sobie Windows'owy Rufus w którym najzwyczajniej w świecie możemy takie opcje wybrać (zbytnio nie komplikując).

    *Dlaczego akurat tak? Na przykład wybieramy UEFI bo zależy nam na szybszym uruchamianiu a GPT bo np. potrzebujemy obsługi dysków powyżej 2TB danych. Zresztą skoro interesujecie się tym tematem to sądzę, że z instalacją nie macie najmniejszego problemu, tym bardziej, że tutaj wymaga się też odpowiedniego formatowania samego pendrive'a.

    Jeżeli jednak nie do końca zależy nam na tym w jakim trybie czy też w jaki sposób ma przebiegać instalacja (po prostu nie wiemy, czy też nie wdajemy się w szczegóły techniczne tych rozwiązań) to Etcher wydaje się dobrym wyborem, ponieważ skopiuje on obraz 1:1 na pendrive'a zachowując taką samą strukturę dysku jaką zastał. Wyjątkiem od reguły jest tutaj Windows z którym sobie nie radzi. Dodatkowo jest on dostępny dla Linux'a / Windows'a / Mac'a tak więc czego chcieć więcej.

    Podłączamy naszego pendrive'a, odpalamy (wcześniej pobierając) program i wskazujemy lokalizacje do naszego obrazu (.iso) z dystrybucją:

    Ether.io

    Instalacja

    Jeżeli wszystko poprawnie zrobiliśmy przechodzimy w tym momencie do właściwej instalacji, sam kreator jest dostępny w języku Polskim tak więc nie powinno być z nim większych problemów, jednakże wrzucam screen'y typowej instalacji, krok po kroku:

    Ubuntu install

    Uruchomienie

    Pierwsze uruchomienie, logujemy się do systemu (graficznie i/lub tekstowo) i w przypadku okienek uruchamiamy terminal.
    Cześć jest już za nami, teraz nadszedł czas na docelową konfiguracje.
    Na początku wydajemy sobie polecenie:

    sudo apt update && sudo apt upgrade

    Komenda ta aktualizuje informacje o listach pakietów oraz aktualizuje system (jeżeli tylko pojawiła się nowa łatka).
    Jest to opcjonalne działanie ale nie zaszkodzi, ogólnie jest to dobry nawyk zanim zaczniemy coś robić raz na jakiś czas wydać sobie to polecenie (w naszym przypadku akurat jest to czysta instalacja więc wszystko powinno być raczej nowe).

    Statyczny adres IP

    Prawdopodobnie posiadasz w swoim domu router, a skoro tak to jest duże prawdopodobieństwo, że również korzystasz z adresacji DHCP. Generalnie chodzi o to, że każdy z komputerów wewnątrz twojej sieci ma swój własny adres IP który może być stały lub zmienny (podobnie jak ten który otrzymujesz od swojego dostawcy internetowego ~ ISP).

    DHCP to taka usługa uruchamiana na routerze (i/lub innym serwerze) pozwalająca na przypisywanie komputerom w sieci losowych adresów z ustalonej puli. Czyli uruchamiasz sobie komputer a on uzyskuje od router'a swoje własne unikalne (w obrębie sieci) IP.

    Opiszę może jak to wygląda w moim przypadku, w mojej sieci domowej jest to stosunkowo proste:

    • Router (ma na stałe przypisany adres: 192.168.1.1)
    • Komputery i urządzenia mobilne (uzyskują losowo adresy z przedziału od 192.168.1.2 - 254)

    Dla rozróżnienia przyjmijmy tymczasowo, że komputer roboczy z Windows'em od teraz będzie nazywał się PC1, a SRV0 to będzie nasz nowo powstały serwer z Ubuntu (laptop).

    Naszym celem jest więc aby SRV0 zawsze miał stały (statyczny) adres, czyli np. 192.168.1.100 - taki chcemy i już.
    Aby to uzyskać musimy zrobić dwie rzeczy, po pierwsze zablokować taki właśnie numer w ustawieniach karty sieciowej a po drugie zablokować go na stronie router'a (tak aby nie powstał konflikt interesów i DHCP nie przyznało sobie go innej maszynie).

    Ok wiemy co robić tak więc do dzieła!

    Konfiguracja kart(y) sieciowej

    W moim przypadku z racji możliwości skorzystania z graficznego interface'u ustawiłem sobie stały adres bez najmniejszego problemu, zarówno dla karty Wifi jak i zwykłego połączenia:

    Przypisanie stałego adresu IP - okienka

    *W przypadku połączenia wlan konfiguracja wygląda identycznie stąd pozwoliłem sobie pominąć dodawanie i jej.

    Choć wiem, że możecie chcieć przeprowadzić taką modyfikacje z poziomu wiersza poleceń (jak typowi linux'owcy) lub korzystając z oprogramowania w wersji bez x'ow (server) dlatego dodaje również screen'a jak to wygląda w terminalu:

    Przypisanie stałego adresu IP - terminal

    Edytujemy za pomocą np. nano plik /etc/network/interfaces, oczywiście z uprawnieniami root'a: (sudo)

    sudo nano /etc/network/interfaces

    Dokonujemy odpowiednich zmian i zapisujemy CTRL + X, zatwierdzamy Yes(Y) / Tak(T) (w zależności od języka) i enter.


    Na koniec (niezależnie od środowiska) restartujemy interface'y poleceniem:

    /etc/init.d/network restart

    Blokujemy 192.168.1.100 na routerze

    Wracamy na chwile do PC1 i odszukujemy na nim adres bramy domyślnej, znajdziemy go poprzez użycie skrótu Win+R a następnie wpisując cmd i otwierając wiersz poleceń wykonując komendę ipconfig która to pokaże nam konfiguracje zainstalowanych kart sieciowych:

    Network configuration

    Brama domyślna to nic innego jak adres naszego router'a w sieci.
    Bez dalszego owijania w bawełnę wpisujemy w pasek przeglądarki własnie powyższy adres, który ukaże nam stronę konfiguracyjna router'a - coś takiego:

    Orange Funbox 2.0 index

    Logujemy się na standardowe hasła admin / admin, w zależności od urządzenia może to być też admin / 1234, no chyba, że zmieniliście to wcześniej (jak w moim przypadku).

    Orange Funbox 2.0 dashboard

    Sam panel może wyglądać kompletnie inaczej, np:

    Tp-link example

    *Przykładowy wygląd strony konfiguracyjnej w przypadku modemów TP-Link'a, obraz po zalogowaniu.

    No nic, gdy już dostaniecie się do głównej strony, przechodzimy od razu do Zaawansowane > Konfiguracja sieci > DHCP:

    Orange Funbox 2.0 dhcp

    W zależności od urządzenia i wyglądu panelu może się to znajdować w kompletnie innej lokalizacji - chodzi po prostu o zakładkę DHCP i/lub "Konfiguracja LAN IPv4" tak jak w Tp-link'ach.
    Poniżej tych ustawień powinniśmy mieć możliwość dodania własnych wyjątków (ustawienia adresów statycznych urządzeń w oparciu o ich adres MAC / fizyczny).

    Ustawiamy tam dla wybranego komputer'a adres IP (192.168.1.100).
    Adres fizyczny możemy sprawdzić natomiast poleceniem: ifconfig w terminalu SRV0:

    Laptop network settings

    W moim przypadku osobno dla karty wlan (dolna) i lan (górna) - w zależności od tego z czego serwer będzie częściej korzystał, można dodać jedno albo oba.

    Mając to z głowy możemy zając się już samym serwerem i jego poprawnym ustawieniem.

    Konfiguracja SSH

    Pierwszą rzeczą jaką będziemy chcieli wykonać jest możliwość zdalnego zarządzania komputerem wew. naszej sieci.
    Aby móc resztę komend wykonywać zdalnie z komputera z PC1 (dla wygody) dobrze byłoby uruchomić sobie usługę zwaną SSH (Secure Shell).

    W skrócie chodzi głównie o zdalny dostęp do terminala.
    Tak więc instalujemy sobie na SRV0 SSH komendą:
    sudo apt install openssh-server

    Przed dokonaniem jakichkolwiek zmian w konfiguracji robimy jeszcze kopie głównego pliku konfiguracyjnego:
    sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.factory-defaults

    Dobra teraz odpalamy w edytorze np. nano nasz plik:
    sudo nano /etc/ssh/sshd_config

    Pierwsze co się rzuca w oczy to Port 22 - jest to oczywiście port na którym nasłuchuje nasz SRV0, można go zmienić na jakiś inny - nie ma najmniejszego problemu.
    Czyli nasz serwer nasłuchuje czy ktoś nadaje na adresie 192.168.1.100:22 - jeżeli tak i jest to protokół SSH to połączenie zostanie nawiązane, w przeciwnym razie nie.

    Kolejna przydatna opcja czyli "#PasswordAuthentication yes" - ustawienie to dotyczy autoryzacji hasła (# z przodu oznacza zakomentowaną linie - aby usunąć komentarz wystarczy ją usunąć).
    Jeżeli korzystamy z kluczy SSH możemy spokojnie tą opcje wyłączyć "PasswordAuthentication no" - jeżeli jednak logujemy się zwykle hasłem to zdecydowanie odradzam tykać tej opcji.

    Innym również ciekawym ustawieniem jest dopuszczanie ( AllowUsers tpk ) oraz blokowanie ( DenyUsers kasia ) wybranym użytkownikom możliwości korzystania z SSH.
    Więcej opcji znajdziecie na wiki tutaj.

    Gdy już pozmieniamy wszystko tak jak chcemy wychodzimy CTRL+X, zatwierdzamy Yes(Y) / Tak(T) (w zależności od języka) i naciskamy enter. Ponadto warto zrestartować pod koniec samą usługę poleceniem sudo systemctl restart ssh.

    Instalacja i konfiguracja klienta Putty

    Jeżeli wszystko gra, możemy wrócić już na stałe do PC1 i zainstalować na nim klient'a SSH :)
    Prosty i łatwy w obsłudze programik o nazwie Putty, który wykorzystamy w tym poradniku możecie pobrać tutaj.

    Wypełniamy w nim wszystkie potrzebne dane (w moim przypadku usługa ta działa na nieco zmienionym porcie).
    Przy okazji polecam sobie zapisać to połączenie jako nowy profil - tak jak ja poniżej (pozwoli nam to na szybszy dostęp do maszyny w przyszłości).

    Putty client

    Łączymy się i uzupełniamy takie dane jak login/hasło (identyczne jak do systemu), polecam przy okazji dowiedzieć się jak działają klucze RSA (o czym wspominałem wyżej) i w przyszłości przejść właśnie na taki sposób logowania, w razie czego poradnik na ten temat już istnieje i serdecznie zapraszam do zapoznania się z nim: Logowanie przy pomocy kluczy RSA [SSH]

    Jeżeli wszystko działa poprawnie powinniśmy być w stanie zobaczyć komunikat podobny do tego:

    Ubuntu welcome

    Instalacja i konfiguracja NGINX:

    Teraz wypadałoby zainstalować nasz serwer (wł. oprogramowanie serwerowe) i przeprowadzić na nim wstępną konfigurację. Instalujemy wydając w terminalu / putty polecenie:

    sudo apt-get install nginx

    Gdy wszystko będzie ok możemy przejść do sprawdzenia czy nasz serwer jest już uruchomiony:
    sudo systemctl status nginx

    *Na niektórych dystrybucjach trzeba go zastartować ręcznie poleceniem "sudo systemctl start nginx".

    Zapora UFW:

    Dodatkowo dodamy sobie regułę do zapory, umożliwiającą ruch dla HTTP:
    sudo ufw allow 'Nginx HTTP'

    Jest to wbudowana w UFW reguła, podobnie jeżeli chcielibyśmy możemy zrobić ustawiając 'Nginx Full' dla ruchu HTTP/HTTPS lub analogicznie 'Nginx HTTPS' tylko dla szyfrowanych połączeń.

    Warto również w tym miejscu sprawdzić czy nasza zapora w ogóle jest aktywna poleceniem sudo ufw status.
    Następnie w zależności od sytuacji (np. inactive) włączyć ją poprzezsudo ufw enable lub pozostawić bez zmian.


    Skoro wszystko działa pozostaje nam uruchomić przeglądarkę na PC1 i wpisać ustalony wcześniej adres naszego serwera SRV0, a więc: 192.168.1.100:

    Nginx start page

    Gotowe! Od teraz możecie bez problemu uruchamiać proste statyczne strony WWW.

    Tak na marginesie taki sam widok uzyskamy wpisując na SRV0 adres localhost (to tak samo jak gdyby było tam 127.0.0.1) - oczywiście jeżeli działamy na wersji z okienkami.

    Kilka podstawowych informacji o Nginx

    Główny plik konfiguracjny: /etc/nginx/nginx.conf
    Katalog w którym są trzymane wszystkie pliki stron (domyślnie): /var/www/html

    Dalsza struktura:

    • /etc/nginx/sites-available - Katalog zawierający pliki konfiguracyjnej każdej z witryn
    • /etc/nginx/sites-enabled - Katalog w którym umieszcza się linki symboliczne (coś jak skróty do plików w Windows) aby włączyć poszczególne witryny.

    Krótkie objaśnienie, domyślnie serwer WWW jest przystosowany do trzymania na nim max i min jednej strony WWW, jednak już dawno temu wymyślono coś co zwie się Wirtualne host'y (Virtual hosts) pozwalające na zwielokrotnienie liczby witryn przypadających na jeden serwer (jakkolwiek wiele by ich nie było).

    Dzięki temu możemy w prosty sposób stworzyć tyle stron ile nam się tylko żywne podoba, nie wiem czy są w tym zakresie w ogóle jakieś ograniczenia. Szmat czasu temu przygotowałem nawet do tego celu prosty skrypt powłoki pozwalający w łatwy sposób stworzyć/usunąć nową instalacje takiego v-host'a - link do projektu na github'ie tutaj.

    Nam jednak nie chodzi o zaawansowane wykorzystanie a po prostu postawienia LEMP stack, dlatego lecimy dalej...

    Baza danych MariaDB - instalacja itd.

    Na wstępie trochę zarysu historycznego, MySQL ogólnie to twór Oracle Corporation czyli firmy którą możecie kojarzyć z łatania JVM (Java Virtual Machine). MariaDB to natomiast fork (coś jak Ubuntu dla Debian'a) czyli dziecko o tych samych korzeniach ale rozwijane niezależnie (przez MariaDB Foundation).

    Oba rozwiązania są bliźniaczo podobne i praktycznie rzecz biorąc zamienne, dlatego właśnie skorzystamy sobie z MariaDB. Przyznaje, że to oprogramowanie jest dużo łatwiejsze w instalacje i mniej problematyczne na starcie stąd ta decyzja.

    Standardowo lecimy z instalacją:

    sudo apt install mariadb-server

    Teraz odpalamy prosty skrypt instalacyjny:

    sudo mysql_secure_installation

    Zostaniesz zapytany o hasło administrator'a (root'a) dla bazy danych.

    My na tym etapie konfiguracji nie mamy jeszcze takiego hasła dlatego pomijamy to pytanie naciskając (enter).
    Instalator zapyta nas również czy chcemy ustawić hasło administratora - oczywiście tak, więc wybieramy Y i lecimy dalej (enter) i podając dwukrotnie wybrane przez nas hasło.

    MariaDB Configuration Script v1

    Kolejny krok to odpowiadanie na specyficzne dla Waszej konfiguracji pytania. Standardowo przyduszenie enter oznacza wybranie pierwszej z odpowiedzi czyli Y, tak więc bez przedłużania 4x ENTER i gotowe.

    MariaDB Configuration Script v2

    Jeżeli jednak chcecie wiedzieć na co się zgodziliście to:

    • Usunięcie anonimowych użytkowników (zablokowanie dostępu do bazy gościom - osobą które nie posiadają konta)
    • Zablokowanie logowania się na root'a z innego urządzenia
    • Usunięcie testowej bazy danych i dostępu do niej
    • Przeładowanie tabeli uprawnień // działanie bardziej prewencyjne ale czemu nie?

    W przypadku oryginalnego projektu MySQL otrzymalibyśmy w tym miejscu serie pytań na temat zasad sprawdzania poprawności haseł i takich tam, zupełnie niepotrzebnie marnując czas i energie na rozwiązywanie błahych problemów.

    PHP

    Kolejny element naszej układanki to oczywiście PHP, chcąc pisać back-end naszych aplikacji będzie to dla nas rzecz niezbędna. Dobrze byłoby tutaj znać wersje z której będziemy chcieli skorzystać.

    Domyślnie w repozytoriach Ubuntu w wersji 16.04 dostępne są biblioteki php w wersji 7.0 natomiast nic nie stoi na przeszkodzie aby zainstalować sobie ich nowszą wersje czyli ~ PHP 7.2.

    Tak więc zwyczajnie instalacja przebiega w ten sposób:
    sudo apt install php-fpm php-mysql

    Jeżeli za to chcemy nowszą wersje będziemy musieli skorzystać z zewnętrznych repozytoriów:
    sudo add-apt-repository ppa:ondrej/php // Dodajemy zewnętrzne repo, zatwierdzamy (enter)
    sudo apt update // Aktualizujemy listy pakietów
    sudo apt install php7.2-fpm php7.2-mysql // Instalujemy właściwe pakiety

    Właściwie php czy tam php7.2 to mogłoby się wydawać podstawowy pakiet który należałoby zainstalować, niemniej w PHP dostępne są także dodatki takie jak np. cli (command line interface), fpm(fastcgi process manager) itd.

    Instalując je tak czy siak pobierane są pakiety bazowe dlatego w naszym przypadku przy serwerze NGINX'a wystarczy instalacja php-fpm oraz php-mysql do komunikacji php z bazą danych.

    W praktyce podczas instalacji zostaną zainstalowane "php-common php7.2-cli php7.2-common php7.2-fpm php7.2-json php7.2-mysql php7.2-opcache php7.2-readline" i inne zależności.

    Ok, jeżeli mamy już to możemy teraz całość spiąć w działający serwer.

    Konfiguracja NGINX'a z PHP-FPM

    Przechodzimy do głównego (na ten moment) pliku konfiguracyjnego:
    sudo nano /etc/nginx/sites-available/default

    Tak to wygląda w całej okazałości:

    ##
    # You should look at the following URL's in order to grasp a solid understanding
    # of Nginx configuration files in order to fully unleash the power of Nginx.
    # http://wiki.nginx.org/Pitfalls
    # http://wiki.nginx.org/QuickStart
    # http://wiki.nginx.org/Configuration
    #
    # Generally, you will want to move this file somewhere, and start with a clean
    # file but keep this around for reference. Or just disable in sites-enabled.
    #
    # Please see /usr/share/doc/nginx-doc/examples/ for more detailed examples.
    ##
    
    # Default server configuration
    #
    server {
            listen 80 default_server;
            listen [::]:80 default_server;
    
            # SSL configuration
            #
            # listen 443 ssl default_server;
            # listen [::]:443 ssl default_server;
            #
            # Note: You should disable gzip for SSL traffic.
            # See: https://bugs.debian.org/773332
            #
            # Read up on ssl_ciphers to ensure a secure configuration.
            # See: https://bugs.debian.org/765782
            #
            # Self signed certs generated by the ssl-cert package
            # Don't use them in a production server!
            #
            # include snippets/snakeoil.conf;
    
            root /var/www/html;
    
            # Add index.php to the list if you are using PHP
            index index.html index.htm index.nginx-debian.html;
    
            server_name _;
    
            location / {
                    # First attempt to serve request as file, then
                    # as directory, then fall back to displaying a 404.
                    try_files $uri $uri/ =404;
    	        # proxy_pass http://localhost:8080;
            	# proxy_http_version 1.1;
    	        # proxy_set_header Upgrade $http_upgrade;
            	# proxy_set_header Connection 'upgrade';
    	        # proxy_set_header Host $host;
            	# proxy_cache_bypass $http_upgrade;
            }
    
            # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
            #
            #location ~ \.php$ {
            #       include snippets/fastcgi-php.conf;
            #
            #       # With php7.0-cgi alone:
            #       fastcgi_pass 127.0.0.1:9000;
            #       # With php7.0-fpm:
            #       fastcgi_pass unix:/run/php/php7.0-fpm.sock;
            #}
    
            # deny access to .htaccess files, if Apache's document root
            # concurs with nginx's one
            #
            #location ~ /\.ht {
            #       deny all;
            #}
    }
    

    Mnóstwo zbędnych rzeczy, standardowo wszystko to co zawiera # na początku linijki jest kodem wyłączonym z użytku, tak więc uprośćmy to nieco:

    server {
            listen 80 default_server;
            listen [::]:80 default_server;
    
            root /var/www/html;
    
            index index.php index.html index.htm index.nginx-debian.html;
    
            server_name _;
    
            location / {
                    try_files $uri $uri/ =404;
            }
    
            location ~ \.php$ {
                   include snippets/fastcgi-php.conf;
                   fastcgi_pass unix:/run/php/php7.2-fpm.sock;
            }
    
            location ~ /\.ht {
                   deny all;
            }
    
    }
    

    W takim też stanie pozostawimy sobie ten plik, zapisując Ctrl+X i zatwierdzając Y(Yes) / Tak(T).
    Sądzę że większość z tego co tutaj się znajduje bez problemu da się domyślić ale tak czy inaczej wrzucam pobieżny opis tego co za co odpowiada i jak całość działa:

    Pierwsze co to należy zauważyć to konfiguracja NGINX'a występuje w blokach kodu zamkniętych w obrębie klamer, przykład sekcja server, takich bloków może być kilka w obrębie dokumentu ale mogą być także dołączane z innych plików.

    • listen // nasłuchiwanie na wybranym porcie - pierwsza linia odnosi się do IPv4 druga IPv6
    • root // główny katalog w którym znajdują się pliki strony
    • index // wspierane rozszerzenia plików ~ pamiętajcie dodać index.php!
    • server_name // to ustawienie przydaje się bardziej na produkcji gdy znamy już domenę strony itd.

    Na koniec bloki location to specyficzne dla danych ścieżek ustawienia - np. location / odnosi się do strony głównej, z kolei location ~ \.php$ to blok zawierający ustawienia PHP (tutaj również trzeba pamiętać aby podać dobrą wersje np. php7.2-fpm.sock; - taką jaką zainstalowaliśmy). Ostatni blok wyłącza dla wszystkich dostęp do pliku .htaccess.

    Testujemy:

    Dobra koniec tego, teraz wystarczy sprawdzić czy wszystko hula tak jak tego oczekujemy.

    Przechodzimy więc do katalogu głównego:
    cd /var/www/html

    Tworzymy nowy plik, niech to będzie np. test.php:
    nano test.php

    Następnie zapisujemy w nim prosty kod:

    <?php
    phpinfo();
    

    Standardowo Ctrl+X, (Y)es i (enter). Pod sam koniec sprawdzamy jeszcze poprawność:
    sudo nginx -t

    oraz przeładowujemy konfiguracje NGINX'a:
    sudo systemctl reload nginx.

    Przechodzimy do PC1 wpisujemy wcześniej ustalony adres w przeglądarce czyli 192.168.1.100/test.php i sprawdzamy.
    Naszym oczom powinno się ukazać taka oto strona, zawierające podstawowe informacje na temat konfiguracji PHP:

    PHP test file

    *Podobnie jak wcześniej dostęp do tej samej strony macie z SRV0 również poprzez udanie się do localhost/test.php.

    Ostatnim krokiem jest usunięcie testowego pliku z maszyny:
    sudo rm /var/www/html/test.php

    I gotowe w ten oto sposób stworzyliśmy swój własny domowy serwer WWW oparty o LEMP stack.
    Gorąco zachęcam do dalszego eksperymentowania, uruchamiania na nim wielu różnych usług tak aby nauczyć się jak działa oraz co potrafi.

    Poradnik napisany dla TcgForum.pl i zabrania się kopiowania oraz rozpowszechniania bez zgody autora!