Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Jak stworzyć własny domowy serwer WWW! [LEMP]
Offline
Tpk
Administrator


*******

Administratorzy
Liczba postów: 551
Liczba wątków: 228
Dołączył: Nov 2013
Reputacja: 11
Points: 504.72€
#1
Cześć, w tym poradniku pokaże Wam w jaki sposób możecie stworzyć swój własny publiczny serwer WWW w pełni za darmo!

Wstęp

Niegdyś już napisałem taki poradnik w którym to tworzyłem serwer głosowy TS3, tym razem postanowiłem pokazać jak mając w domu jakiś stary zbędny komputer stworzyć Wasz własny serwer WWW.

W moim przypadku jako obiekt testów wziąłem sobie na warsztat laptop'a Samsung NP350E5C-S05PL (zalanego w dodatku już raz Colą). Jeżeli pamiętacie jeszcze tego drugiego na którym robiłem serwer TS'a to nie jest to ten sam (choć również Samsung), no i przede wszystkim jest on nieco mocniejszy. Mam na nim postawiony Ubuntu w wersji Desktop co nie przeszkodzi nam specjalnie w tym aby hostować na nim swoją stronę. Równie dobrze możecie zainstalować sobie wersje Server - jest to bez znaczenia.

Instalacja Ubuntu Desktop:
// Tworzymy nośnik instalacyjny:

W tym celu pobierzemy sobie program pod Windows'a o nazwie Universal USB Installer (lub inny jeżeli zależy Wam na instalacji pod UEFI z GPT - np. Rufus).
Sam program możecie pobrać w pełni za darmo stąd.

Dodatkowo przyda nam się oczywiście obraz Linux'a, ja posłużę się tak jak już wcześniej wspomniałem wersją Ubuntu Desktop, którą możecie pobrać z oficjalnej strony dystrybucji - TUTAJ
Wybierając edycję LTS (Long Time Support) klikamy Download a następnie w prawym dolnym rogu "Not now, take me to the download ›" i pobieracie lub decydujecie się przekazać darowiznę na rozwój projektu i również pobieracie.

Teraz wsuwamy naszą pamięć masową i uruchamiamy sam programik do nagrywania obrazów na USB który wcześniej zaciągnęliśmy.
Akceptujemy wszelkie licencje i przechodzimy od razu dalej:

[Obrazek: 20170723234544000000-2674.png]

Wskazujemy dystrybucję, ścieżkę do obrazu systemu, zaznaczamy "We will Fat32 format" oraz wybieramy urządzenie i naciskamy Create.
Zatwierdzamy raz jeszcze całą procedurę:

[Obrazek: 20170723234840000000-9137.png]
I rozpoczyna się nagrywanie, po zakończeniu musimy jedynie nacisnąć "Close" i gotowe.

// Bootujemy komputer z USB:
Mając już podłączonego naszego pendrive'a wystarczy, że uruchomimy komputer i wybierając F12 lub inną kombinacje - w zależności od producenta płyty głównej (lub w przypadku komputerów przenośnych laptopa / notebook'a czy czegokolwiek innego) uruchamiamy tzw. Boot Menu z którego wybieramy naszą pamięć. Dodatkowo w przypadku laptopów można się spodziewać czasami potrzeby uruchomienia jakiś dodatkowych opcji aby zainstalować inny system nie wyglądający jak Windows (taki monopolizm i tyle). 

// 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:

[Obrazek: 20170721220323000000-4391.jpg]


Instalacja i konfiguracja SSH:
Aby móc resztę komend wykonywać zdalnie z komputera z Windows'em (dla wygody) dobrze byłoby uruchomić sobie usługę zwaną SSH (wymaga to wcześniejszego połączenia serwer'a z internetem bez różnicy jak).
Dla rozróżnienia obu maszyn przyjmijmy tymczasowo, że komputer z Windows'em od teraz będę nazywał PC1, a SRV0 to nasz serwer z Ubuntu.

No więc na początek na PC1 zainstalujemy sobie klient'a do łączenia się z naszym zdalnym SRV1.
Prosty i łatwy w obsłudze programik o nazwie Putty, który wykorzystamy w tym poradniku możecie pobrać tutaj (Client).
Wypełniamy w nim wszystkie potrzebne dane (w moim przypadku usługa ta działa na nieco zmienionym porcie - standardowy to 22).
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).

[Obrazek: 20170721231845000000-6308.png]


Wypełniamy takie dane jak login/hasło, polecam przy okazji dowiedzieć się jak działają klucze RSA 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]
E... no chwila zapomnieliśmy o instalacji SSH na SRV0.
Już się tym zajmujemy, w swoim środowisku korzystam z Webmin'a a więc graficznej nakładki z web'owym panelem zarządzania (odpalanym na porcie 10000) z którego bez większego problemu mogę sobie zarządzać wszystkimi usługami które tylko działają na SRV0 w tym również SSH. 

Jednak na potrzeby tego poradnika pokaże jak przeprowadzić taka minimalną instalacje i konfigurację tego pakietu z poziomu terminala.
Wystarczy wykonać w terminalu na SRV0 polecenie:

Kod:
sudo apt-get install openssh-server

Z racji tego, że pracujemy na standardowym użytkowniku w systemie za pomocą (sudo) na początku każdego polecenia podnosimy sobie chwilowo uprawnienia do root'a - w systemach linuxowych nie zaleca się pracy na koncie administrator'a stąd też wspomagamy się tym rozwiązaniem (jeżeli w waszym systemie nie ma czegoś takiego możecie bez problemu to zainstalować jak zwykły pakiet poleceniem "apt-get install sudo").

Przed dokonaniem jakichkolwiek zmian w konfiguracji robimy jeszcze kopie głównego pliku konfiguracyjnego:

Kod:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.factory-defaults

Zaleca się tez usunięcie możliwości edycji tego pliku poprzez zmianę praw dostępu do pliku, choć jest to opcjonalne to może ktoś się zainteresuje:

Kod:
sudo chmod a-w /etc/ssh/sshd_config.factory-defaults

Dobra teraz odpalamy w edytorze np. nano nasz plik:

Kod:
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, z innych przydatnych opcji możemy np. odszukać opcje "#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 (o których wspominałem wyżej) 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 enter.
Ponadto warto zrestartować samą usługę poleceniem "systemctl restart ssh".

Dobra to wracamy do PC1 - połączyliśmy się z naszym komputerem i zalogowaliśmy się na nasz serwer - możemy teraz w pełni zarządzać naszym komputerem kompletnie przy nim nie będąc. Mając jedynie podpięty kabel od zasilania i lan.
Dlatego resztę konfiguracji możemy wykonywać właśnie pod PC1 tak aby nie trzeba było przechodzić z komputera do komputera czy biegać z mieszkania do mieszkania.

Statyczny adres IP:
Jak zrobić aby nasz komputer miał stale taki sam adres IP? Aby był on niezmienny w obrębie naszej sieci LAN? Oczywiście przypisać mu go, no więc do dzieła!

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

[Obrazek: 20170723211654000000-7711.png]
*W przypadku połączenia wlan konfiguracja wygląda identycznie stąd pozwoliłem sobie pominąć dodawanie i jej.

*Terminal:
Choć wiem, że możecie chcieć to zrobić 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:

[Obrazek: 20170723212149000000-4745.png]

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

Kod:
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.

Aby wszystko grało, tak jak w moim przypadku należy przypisać ten sam adres (192.168.1.100) do urządzenia (poprzez zablokowanie go) na stronie router'a tak aby uruchomiony tam serwer DHCP nie zrobił Wam małego misz masz (o ile nie macie zewnętrznego serwer'a pełniącego tą rolę).
Wracamy więc z powrotem na PC1 i odszukujemy na nim adres bramy domyślnej, znajdziemy go poprzez użycie skrótu Win+R a następnie wpisując w konsole CMD i otwierając wiersz poleceń wykonacie komendę ipconfig która to pokaże nam konfiguracje zainstalowanych kart sieciowych:

[Obrazek: 20170723210533000000-6014.png]

Oczywiście wiem, że tyle co ustawialiśmy go na SRV0 ale warto też wiedzieć gdzie go można znaleźć na Windzie np. gdyby coś poszło nie tak z ustawieniem statycznego adresu na SRV0 ponieważ ktoś postanowił Wam zmienić adres bramy domyślnej.
No dobra to gdy już wiemy jaki jest, mogę zdradzić tajemnice o której i tak już wiecie i powiedzieć, że prawdopodobnie jest to 192.168.1.1 bo to jest domyślny adres, ale i tak warto było abyście sprawdzili ponieważ nie jest to zasadą.

Bez dalszego owijania w bawełnę wpisujemy w adres przeglądarki własnie powyższy adres, który ukaże nam stronę konfiguracyjna router'a - coś takiego:

[Obrazek: 20170723214429000000-2286.jpg]

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).

[Obrazek: 20170723222247000000-5013.jpg]

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

[Obrazek: 20170723210258000000-5508.jpg]
*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:

[Obrazek: 20170721221810000000-7740.jpg]

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 (192.168.1.100) - w przypadku gdybyśmy musieli podać adres fizyczny możemy go sprawdzić w SRV0 w systemie poleceniem: ifconfig

[Obrazek: 20170721224511000000-5678.jpg]

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 (u mnie oba nie wchodzą w grę - co nie zmienia faktu, że tak można).

Konfiguracja DDNS:
Aby nasz adres IP (ten zew. reprezentujący naszą sieć w internecie) był stały i pozostawał niezmienny należy podpiąć go pod domenę, za pomocą usługi zwanej DDNS zamieniającej adres naszej sieci (zmienny) na adres domenowy (stały, zwany również mnemonicznym). Jest też możliwość posiadania stałego zew. adresu ip ale w zdecydowanej większości przypadków macie raczej zmienny stąd musicie kombinować - tak jak ja.

W ten sposób mamy pewność, że podając komuś z zewnątrz adres example.ddns.net czy jakikolwiek inny który uda nam się zarezerwować zostanie on przekierowany do naszej sieci, w której wystawimy sobie tzw. strefę zdemilitaryzowaną (DMZ) czyli komputer na który za pomocą router'a będzie kierowany cały ruch z zew, komputer na którym bez problemu uruchomimy sobie nasze usługi jak np. nasz serwer WWW na porcie 80.

Zanim jednak do tego dojdziemy musimy sobie założyć konto w jednym z serwisów, obsługujących taka możliwość - najlepiej takim który jest dodatkowo obsługiwany przez nasz router (o ile w ogóle). Dlatego dalej będąc na stronie konfiguracyjnej naszego router'a przechodzimy do sekcji Dynamiczny DNS (jeżeli taką znajdziecie lub DDNS).

W przypadku Orange Funbox (ver. 2.0) znajdziecie ją w Zaawansowane > Konfiguracja sieci > Dynamiczny DNS:

[Obrazek: 20170721222723000000-2623.jpg]

Znajdziemy tam cały szereg listy usług wspieranych przez wasze urządzenie, teraz wystarczy w zależności od wybranej opcji zarejestrować się w jednym z tych serwisów tak aby otrzymać własną domenę (wł. subdomenę), samo tworzenie kont'a i dodawanie usługi jest chyba na tyle intuicyjne, że powinniście sobie bez problemu poradzić. W razie pytań bądź problemów odsyłam do wujka Google oraz sekcji komentarzy poniżej.

Gdyby wasz router nie wspierał takiej funkcjonalności (mało możliwe) istnieją też aplikacje klienckie działające wprost na komputerze.

W moim przypadku dodałem sobie dwie (choć pojedyncza w zupełności wystarczy) - szczególnie polecam DNSdynamic ponieważ jest bezpłatna i nie trzeba jej przedłużać co kilkanaście dni tak inne bardziej popularne usługi (oczywiście jeżeli tylko jest dostępna).

Po przejściu całego procesu rejestracji należy uzupełnić tą zakładkę na routerze o swoje hasła do usługi oraz nazwę subdomeny jaką wybraliście.
W tym momencie, pasowałoby skonfigurować nieco bardziej swój serwer - w końcu nic na nim jeszcze nie ma.

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:

Kod:
sudo apt-get install nginx 

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

Kod:
service nginx status

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

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:

[Obrazek: 20170723224546000000-3823.png]

Gotowe! Od teraz możecie bez problemu uruchamiać proste statyczne strony WWW. Ścieżka do głównego katalogu z plikami serwer'a to /var/www/html, możecie dograć sobie również jakiś serwer FTP - dla przykładu ProFTPD tak aby łatwiej było zarządzać plikami. W tym momencie dopóki nie wiecie w jaki sposób skonfigurować sobie vhosty możecie zrobić to moim sposobem czyli w głównym katalogu tworzymy sobie kilka katalogów a w każdym z nich trzymać inny projekt.

Instalacja i konfiguracja PHP: ~ niebawem
Instalacja i konfiguracja MYSQL: ~ niebawem

Ustawienie strefy DMZ:
No dobra powróćmy jeszcze na moment do ustawiania strefy DMZ, zrobimy to oczywiście w zakładce "DMZ" ponownie na stronie naszego router'a Smile
Dzięki temu wystawimy serwer publicznie i od teraz każdy będzie mógł go widzieć.

[Obrazek: 20170721222424000000-8933.jpg]

Uzupełniamy tu oczywiście IP naszego serwer'a (nasze 192.168.1.100). Pamiętajmy jeszcze aby przeskanować nasz SRV0 na obecność zbyt wielu otartych portów (w końcu wystawiliśmy całą maszynę a nie robiliśmy przekierowania pojedynczych portów - dlatego warto powyłączać zbędne stosunkowo "niebezpieczne" usługi oraz pozmieniać porty tych znanych tak aby ograniczyć ryzyko jakichkolwiek ataków z zew). Od teraz macie w pełni działający serwer WWW pod własną subdomeną.

Ad. W przypadku Funbox'a próba wejścia na wasz serwer z zew (poprzez domenę którą sobie do niego przypisaliście) w obrębie waszej sieci domowej wyświetli wam jedynie stronę główną router'a - tak więc aby sprawdzić czy wszystko działa trzeba to zrobić z zew sieci (np. sieci komórkowe w waszym telefonie).

Przydałaby się jeszcze instalacja PHP / Mysql tak aby mieć pełny zestaw - tzw. LNMP/LEMP czyli LINUX & NGINX & MYSQL & PHP jednak na ten moment trzeba będzie chwilę poczekać (opis jak to zrobić powinien się tu znaleźć w ciągu najbliższych dni).

Poradnik napisany dla TcgForum.pl i zastrzegam sobie prawo do kopiowania i rozpowszechniania całości bądź części tego tekstu bez mojej zgody.
Nie ma programów uniwersalnych, są tylko te zaprogramowane na odpowiednio dużą ilość wyjątków -- Tpk ( I July 2k17 )


Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości