Serwer www na Raspberry Pi5 z dostępem do internetu cz. 2

Czas czytania: 7 minuty

Instalacja serwera www Apache, MySQL, PHP itp.

W niniejszym tutorialu pokaże ci jak szybko i skutecznie zainstalować wymagane oprogramowanie serwerowe jak serwer Apache, czy MySQL i dostosować go do wymagań, aby wszystko działało szybko i bezproblemowo.

Tutorial będzie dotyczył

  1. Instalacji serwera www Apache bądź serwera Nginx (preferuję obecnie OpenLiteSpeed ale z jakiegoś powodu pomimo prawidłowej instalacji nie chciał on się uruchomić ani na Ubuntu ani na Raspberry Os vel Debian12). Powodem jest prawdopodobnie jakiś błąd w tym oprogramowaniu na systemy ARM, Z uruchomieniem go na procesorach x86 tego problemu nie miałem. Gdy tylko oprogramowanie zostanie poprawione albo ktoś opisze jak można obejść ten problem, napisze tutorial jak postawić serwer na OpenLiteSpeed.
  2. Let’s Encrypt, czyli darmowych certyfikatów SSL
  3. Redis i MemCache. Bardzo szybkich i wydajnych serwerów cache dla twoich stron internetowych.
  4. PureFtpd, czyli serwera FTP
  5. Serwera MySQL MariaDB wraz panelem zarządzania bazami MySQL PhpMyAdmin
  6. Interpretera PHP w wersjach 5.6, 7.0, 7.1, 7.2, 7.3, 7.4, 8.0, 8.1, 8.2, 8.3. Zawsze powinieneś używać najnowszej wersji interpretera PHP, jednak nie zawsze jest to możliwe. Gdyby zdarzyło się, że skrypt twojej strony nie chce współpracować z najnowszą wersją PHP, użyj ostatniej, możliwie najnowszej wersji, z którą problemów nie ma. Jeśli na twoim serwerze będzie działała tylko jedna strona, bądź kilka stron ale na tym samym skrypcie, zostaw tą wersję php jaka będzie z nimi używana. Inne możesz spokojnie odinstalować lub ich nie instalować.
  7. Potencjalnie Serwera DNS Bind. Prawdopodobnie nie będziesz musiał z niego korzystać ale gdyby jednak zaszła taka potrzeba, masz taką możliwość.
  8. Potencjalnie serwerów poczty wychodzącej i przychodzącej Postfix oraz Dovecot wraz z oprogramowaniem antywirusowym/antyspamowym jak Rkhunter i Rspamd. Gdybyś chciał mieć pocztę we własnej domenie, na własnym serwerze to istnieje taka możliwość. Aby to było możliwe, wymagane jest, aby twój usługodawca internetowy nie blokował żadnych portów na jakich działają te usługi. Niestety mój usługodawca internetowy UPC/Play je blokuje. Mimo, że podają o blokowaniu jedynie portu 25, to w efekcie blokują też prawdopodobnie inne porty na jakich działają serwery pocztowe, bo pocztę mogłem jedynie odbierać. Wysyłanie poczty nie jest i nie było możliwe zarówno po SSL jak i przy połączeniu nieszyfrowanym.
  9. Także Rouncube, czyli managera poczty przez www
  10. Fail2Ban i UFW do ochrony twojego serwera przed zagrożeniami z zewnątrz
  11. Innego przydatnego oprogramowanie jak Brotli, Midnight Commander, JailKit i wiele więcej
  12. Panel hostingowy IspConfig3. Służy do prostego zarządzania serwerem. Tworzenia kont www, baz danych, kont ftp, zarządzania firewallem, pocztą i wiele więcej. Panel także udzieli ci jasnych i klarownych informacji o stanie zasobów i obciążeniu serwera bez znajomości i wpisywania odpowiednich komend w konsoli.

Instalacja

W poprzedniej części opisałem jakie warunki musisz spełnić, aby postawienie takiego serwera było w ogóle możliwe i aby funkcjonował on możliwie wydajnie i bezawaryjnie. Na końcu artykułu cz.1 prosiłem ciebie o zalogowanie się do systemu Raspberry Os poprzez konsolę ssh. Żeby instalacja nie doprowadziła ciebie do białej gorączki, wpisz dodatkowo w konsoli serwera poniższą komendę.

$ sudo -s

Pozwoli ci to na przejęcie uprawnień roota i nie wpisywania za każdym razem sudo przed każdą komendą jaką będziesz chciał wywołać na serwerze.

Zaktualizuj oprogramowanie systemowe wpisując w konsoli kolejno polecenia

$ apt update

a następnie

$ apt upgrade

Jako, że serwer będzie pracował w oparciu o system operacyjny linuks, dość często będziesz musiał korzystać z różnych jego poleceń, czy to podczas aktualizacji oprogramowania, czy też przeprowadzając różne prace na serwerze. Jako, że dobrze jest znać przynajmniej podstawowe polecenia linuks, aby wiedzieć dokładnie co się w danej chwili robi, proponuję zapoznać się z nimi w dziale Polecenia Linuks. Polecenia posegregowane są tam wraz z ich krótkim opisem w postaci. Faq.

Aby łatwiej tobie było zarządzać plikami konfiguracyjnymi zainstaluj tekstowego managera okien Midnight Commander

$ apt insttall mc

następnie uruchom go

$ mc

Twoim oczom powinno pokazać się podobnie wyglądające okno

Teraz zmień edytor tekstu w MC na bardziej poludzki :]

Kliknij prawym przyciskiem myszy w górnym menu MC Options, a następnie Configuration …

W sekcji Other options zaznacz Use internal edit i kliknij ok. Z managera okien MC wychodzisz poprzez kliknięcie w klawisz F10.

Wejdź raz jeszcze do MC i poruszając się strzałkami na klawiaturze w górę i w dół wejdź do katalogu /etc/ a następnie najedź na plik hosts i kliknij klawisz F2, co umożliwi ci edycję tego pliku.

Zmień linie podświetlone na czerwono, aby wyglądały jak na przykładzie poniżej. Przy czym w server1.example.com, example.com zamień na nazwę swojej domeny. Dla mojej domeny na jakiej stoi niniejszy blog, wyglądało by to tak: server1.giai.pl.

Zamień także adres ip 192.168.0.210 na dres ip jakim logowałeś się poprzez program putty do serwera, czyli adres ip twojego serwera.

127.0.0.1 localhost.localdomain   localhost
# This line should be changed to the correct servername:
192.168.0.210 server1.example.com server1

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Zapisz zmiany klawiszem F2, a następnie wyjdź z edytora klawiszem Esc. Następnie wyedytuj plik hostname, znajdujący się w tym samym katalogu /etc/ i w nim pozostaw jedynie wpis

server1

Oczywiście server1 możesz zmienić na dowolnie wybraną przez ciebie nazwę, jednak gdy zmienisz ją w pliku hostname, to zmienić ją też musisz w edytowanym chwilę wcześniej pliku hosts.

Sprawdź, czy zmiany odniosły pożądany skutek. Zapisz plik i wyjdź z edytora i MC. Wpisz w konsoli

$ hostname
$ hostname -f

Powinieneś otrzymać podobne do poniższych informacje

root@server1:~$ hostname
server1
root@server1:~$ hostname -f
server1.example.com

Jeśli tak jest, to konfiguracja hosta przebiegła pomyślnie. Następnie musisz zrestartować swoje Raspberry Pi wpisując w konsoli komendę

$ systemctl reboot

W tym momencie sesja SSH z twoim serwerem zostanie przerwana. Gdy serwerek uruchomi się ponownie, co powinno zająć dosłownie chwilę, zaloguj się ponownie do niego za pomocą programu Putty jak to już opisałem w części pierwszej tutoriala. Nie zapomnij też uzyskać prawa roota poprzez sudo -s.

Do instalacji prawie całego potrzebnego oprogramowania wykorzystamy gotowy skrypt, który zainstaluje nam wszystko co potrzebne i skonfiguruje większość usług na serwerze (dokona odpowiednich wpisów w plikach konfiguracyjnych).

Zastanów się teraz z jakiego serwera www chcesz korzystać, czy z Apache, czy z Nginx. Kompletnym laikom polecam Apache, natomiast tym bardziej zaawansowanym oraz w przypadku, gdy na serwerze będzie działała tylko jedna wymagająca strona www, dla której priorytetem jest wysoka wydajność i optymalizacja serwera pod jej kontem, zalecam instalację Nginx.

Dlaczego serwera Nginx nie polecam początkującym ?. Otóż serwer ten nie obsługuje plików .htaccess, więc wszelkie reguły, które standardowo dopisują skrypty stron i pluginy do nich w tym pliku, nie będą działać. Mało tego Nginx ma własną składnię, więc gdy będziesz chciał uruchomić np. przyjazne linki itp. to reguły będziesz musiał przepisać pod ten serwer ręcznie, co często wcale nie jest takie proste. Sama optymalizacja takiego serwera także jest bardziej skomplikowana niż Apache, jeśli w ogóle nie miałeś z nią wcześniej do czynienia.

Gotowy ? więc zaczynamy. Uruchom w konsoli swojego serwera poniższe polecenie.

Dla osób, które wybrały serwer www Apache

$ wget -O - https://get.ispconfig.org | sh -s -- --use-ftp-ports=40110-40210 --no-dns
--unattended-upgrades

Dla osób, które wybrały serwer www Nginx

$ wget -O - https://get.ispconfig.org | sh -s -- --use-nginx --use-ftp-ports=40110-40210 --no-dns --unattended-upgrades

Instalator umożliwia także dostosowanie instalacji dokładnie do twoich potrzeb. Powinieneś z tego skorzystać, gdy nie chcesz instalować wszystkich usług jak np. serwerów dns i poczty itp.

Pełną listę dostępnych opcji znajdziesz wpisując w konsoli

wget -O - https://get.ispconfig.org | sh -s -- --help

Jeśli chcesz zainstalować tylko wybraną lub wybrane wersje php dodaj np. flagę

--use-php=7.4, 8.3

co spowoduje, że zainstalowana zostanie jedynie wersja php 7.4 oraz 8.3

Jeżeli nie chcesz instalować serwerów pocztowych to dodaj flagę

--no-roundcube --no-mail

Serwery poczty email oraz panel do zarządzania pocztą przez www nie zostaną zainstalowane

Natomiast jeżeli nie zamierzasz instalować serwera dns użyj flagi

--no-dns

Standardowo podane prze mnie reguły instalacyjne nie instalują serwera dns. Jeśli chcesz go zainstalować usuń flagę odpowiedzialną za jego nieinstalowanie.

Pełną listę flag oraz pełniejszy opis znajdziesz na stronie twórcy skryptu

https://www.howtoforge.com/ispconfig-autoinstall-debian-ubuntu/

Podczas samej instalacji będziesz musiał odpowiedzieć na kilka pytań więc zaraz po uruchomieniu skryptu instalacyjnego ujrzysz taki komunikat.

WARNING! This script will reconfigure your complete server!
It should be run on a freshly installed server and all current configuration that you have done will most likely be lost!
Type 'yes' if you really want to continue:

Wpisz yes i kliknij enter

Kiedy instalator zakończy pracę, poda hasła administratora do MySQL oraz panelu IspConfig3. Skopiuj je i zapisz sobie. Jest to bardzo ważne, aby uzyskać do nich dostęp w razie potrzeby. Do zapisywania haseł polecam bank haseł LastPass. Oczywiście możesz też użyć każdego innego banku haseł, ważne aby były one odpowiednio chronione i w każdej chwili miałbyś do nich dostęp, także w przypadku awarii dysku twardego na twoim komputerze (tak na wypadek gdybyś pomyślał o zapisywaniu loginów i haseł np. w wordpadzie).

Hasła zostaną ci podane na końcu coś na wzór

[INFO] Your ISPConfig admin password is: 5GvfSSSYsdfdYC
[INFO] Your MySQL root password is: kkAkft82d!kafMwqxdtYs

Do panelu hostingowego serwera z internetu jeszcze dostępu nie masz ale możesz się na niego zalogować po sieci lokalnej. W przeglądarce na swoim komputerze wpisz https://twoje-ip:8080

Przy czym twoje-ip, to lokalny adres serwera, ten jakim logowałeś się do konsoli przez Putty.

Jeżeli wszystko poszło jak należy, to pokaże się tobie panel logowania. Jako login wpisujesz admin, jako hasło, to podane przez skrypt instalacyjny do ispconfig, które prosiłem ciebie abyś sobie zapisał.

Po zalogowaniu się do panelu ispconfig3, przejdź od razu do zakładki System, a następnie Firewall. Kliknij w swój serwer, czyli server1.twojadomena.pl. Następnie usuń porty usług jakich nie używasz. Poniżej krótka instrukcja.

port 20 - pozostaw lub dopisz jeśli go nie masz w konfiguracji firewalla. Port ten odpowiada za odbieranie i przesyłanie plików po FTP.

port 21- port dla FTP, powinieneś zostawić jeśli używasz serwera www i chcesz na serwer dodać pliki swojej strony. Port odpowiada za przesyłanie poleceń.

port 22 - Port dla połączeń ssh, powinieneś zostawić.

port 25 - port połączeń nieszyfrowanych serwera email ale także połączeń do poczty online. Jeśli nie instalowałeś i nie używasz serwerów pocztowych, usuń ten port.

port 53 - port dns, możesz usunąć jeśli nie instalowałeś serwera dns. Zarówno dla TCP jak i UDP.

port 80 - port dla połączeń nieszyfrowanych www, powinieneś zostawić.

port 110 - port wykorzystywany przez serwer emai. Możesz usunąć jak nie korzystasz.

port 143 - port wykorzystywany przez serwer emai. Możesz usunąć jak nie korzystasz.

port 443 - port dla połączeń szyfrowanych (przez ssl) www, powinieneś zostawić.

port 445 - port dla połączeń samby, powinieneś zostawić jeżeli zamierzasz stworzyć NAS na serwerze.

port 465 - port wykorzystywany przez serwer emai. Możesz usunąć jak nie korzystasz.

port 587 - port wykorzystywany przez serwer emai. Możesz usunąć jak nie korzystasz.

port 993 - port wykorzystywany przez serwer emai. Możesz usunąć jak nie korzystasz.

port 995 - port wykorzystywany przez serwer emai. Możesz usunąć jak nie korzystasz.

port 3306 - port wykorzystywany do połączeń z bazą danych MySQL, pozostaw.

port 4190 - port związany z obsługa poczty, jeśli nie masz zainstalowanych serwerów pocztowych możesz go usunąć.

port 8080 - port dla połączeń z panelem hostingowym Ispconfig3, powinieneś zostawić.

port 8081- port dla połączenia się z panelem pocztowym Rouncube online, jeśli nie instalowałeś Rouncube usuń ten port.

port 10000 - port dla połączeń z panelem webmin poprzez przeglądarkę. Instalacją webmina zajmiemy się w dalszej części tutoriala. Powinieneś go dopisać do portów TCP.

port 40110:40210 - Porty wykorzystywane do połączeń ftp. Powinieneś pozostawić jeśli korzystasz z PureFTP, a taki masz zainstalowany jeśli korzystałeś ze skryptu instalacyjnego w tym tutorialu.

Twoja konfiguracja więc może wyglądać np. tak

Otwarty port TCP: 20,21,22,80,443,3306,8080,10000,40110:40210
Otwarty port UDP:

Następnie na samym dole zaznacz Activ i zapisz konfigurację.

Uwaga. Panel Ispconfig3 umożliwia włączenie polskiej wersji językowej, możesz to zrobić w zakładce Narzędzia/Tools

Serwer www na Raspberry Pi5 z dostępem do internetu cz. 1

Serwer www na Raspberry Pi5 z dostępem do internetu cz. 3

Serwer www na Raspberry Pi5 z dostępem do internetu cz. 4

Serwer www na Raspberry Pi5 z dostępem do internetu cz. 5

Serwer www na Raspberry Pi5 z dostępem do internetu cz. 6

Autor

  • gielo

    Witam! Jestem pasjonatem technologii z wykształceniem matematycznym i informatycznym. W kręgu moich zainteresowań leży między innymi elektronika, linuks i technologie serwerowe.

    View all posts