Wprawdzie są inne możliwości niż Apache2, ale z różnych przyczyn polecam zacząć jednak od Apache2…
W tym celu skorzystam z:
Część 1.
- Apache (+ ew. PHP-FPM) i/lub Nginx
- PHP (Apache PHP-MOD lub PHP-FPM)
Część 2.
- MySQL
- phpMyAdmin
Opisana metoda/procedura zadziała nie tylko na Raspberry Pi, ale także na innych komputerach/urządzeniach (serwer, VPS) działających pod kontrolą systemu Debian/Ubuntu, a po lekkiej modyfikacji i na innych dystrybucjach.
Wprawdzie są inne możliwości niż Apache2, ale z różnych przyczyn polecam zacząć jednak od Apache2… Przemawia ku temu prosta i szybka instalacja i konfiguracja, a i ewentualne różnice w wydajności jeśli są – nie przy każdym projekcie (stronie) są na tyle odczuwalne by sobie komplikować niepotrzebnie sprawę…
Instalacja
Zaczniemy od zainstalowania podstawowych składników:
sudo apt-get install apache2 php5 libapache2-mod-php5 php5-curl php5-mcrypt php5-gd -y
Wszystko poszło OK…
Konfiguracja
Gdy instalacja przebiegnie pomyślnie musimy jeszcze tylko dokonać małej modyfikacji „domyślnej” konfiguracji.
W tym celu wpisujemy polecenie:
sudo nano /etc/apache2/sites-enabled/000-default
W przypadku – chyba – Apache2.4 może to być:
sudo nano /etc/apache2/sites-enabled/000-default.conf
Szukamy:
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
By zmienić na:
Options Indexes FollowSymLinks MultiViews
AllowOverride ALL
Order allow,deny
allow from all
Wychodzimy zapisując: CTRL+Q i Y.
Restartujemy serwer/Apache:
sudo service apache2 restart
WWW
Po tej operacji właściwie już możemy sprawdzić czy wszystko działa OK, wpisując w przeglądarce adres:
- Z Raspberry Pi: localhost
- Z Raspberry Pi: 127.0.0.1
- Z innego urządzenia w sieci LAN: Adres IP Raspberry Pi
Powinna wyświetlić się strona domyślna Apache:
Jeśli chcemy wgrać „na serwer” (Pi) własną stronę, możemy to zrobić np. WinSCP
Pliki naszej strony wgrywamy do katalogu:
/var/www
Jeśli chcecie mieć dostęp do swojej strony „z Internetu” pamiętajcie by na routerze ustawić przekierowanie odpowiedniego portu „z zewnątrz do Pi” (domyślnie 80)
Oczywiście potrzebujecie też mieć publiczne IP.
www-data, czyli uprawnienia…
Może jeszcze być konieczne ustawienie odpowiednich praw dostępu do katalogu ze stroną dla użytkownika „www-data”, pod którym kryje się (w uproszczeniu) Apache.
W tym celu korzystamy z polecenia:
sudo chown -R www-data:www-data /var/www
„ServerName” fix
Wprawdzie dla samego działania serwera nie ma to znaczenia, ale np. „ze względów estetycznych” można pozbyć się komunikatu „błędu” który pojawia się podczas startu Apache w domyślnej konfiguracji:
apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1 for ServerName
waiting apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1 for ServerName
W tym celu otwieramy do edycji plik:
sudo nano /etc/apache2/apache2.conf
I dodajemy (np. na końcu) linijkę:
ServerName localhost
Ukrywamy wersję serwera
Nie jest to konieczne – ale na wszelki wypadek, by nie kusić… losu – ukryjemy również wersję serwera jaka działa na naszej maszynie:
sudo nano /etc/apache2/apache2.conf
I dodajemy (np. na końcu) 2 linijki:
ServerSignature Off
ServerTokens Prod
Domena
Jeśli chodzi o podpięcie do tak skonfigurowanego serwera Apache na Raspberry Pi to jest to również jak najbardziej możliwe…
Choć na pewno nie obejdzie się bez publicznego adresu IP, fajnie też jak będzie stały, choć przy zmiennym można ratować się serwisami typu DDNS.
Pokaże chyba najprostszy (bez zbytniego wdawania się w vHosty) z nich, idealnie pasujący do tego poradnika…
Ponownie edytujemy plik/alias:
sudo nano /etc/apache2/sites-enabled/000-default
Gdy korzystamy z SSL dodatkowo edytujemy:
sudo nano /etc/apache2/sites-enabled/default-ssl
Tak naprawdę jest to alias/link, i edytujemy plik /etc/apache2/site-available/default i /etc/apache2/site-available/default-ssl – wynika to z tego, że w katalogu „site-enabled” umieszczone są pliki konfiguracyjne stron które mają działać – być aktywne, a w „site-available” dostępne, ale niekoniecznie aktywne w danej chwili.
I dodajemy linijkę:
ServerName nasza_domena
ServerAdmin webmaster@localhost
DocumentRoot /var/www
ServerName test.rembiejewski.pl
Wychodzimy zapisując CTRL+X i Y, oraz restartujemy serwer Apache:
sudo /etc/init.d/apache2 restart
Musimy jeszcze zrobić 2 rzeczy:
Ustawić rekord A w DNS’ach naszej domeny ze wskazaniem na adres IP (publiczny) pod którym Raspberry Pi jest widoczna w Internecie:
A nazwa_domeny_lub_subdomena publiczny_adres_ip
Oraz na routerze ustawiamy przekierowanie portu (domyślnie 80, ale może być inny) „z Internetu” do Raspberry Pi:
- Adres: Lokalny adres IP Raspberry Pi
- Protokół: najlepiej oba, lub TCP
- Publiczny port: 80
- Lokalny port: 80
I to wszystko, jak widać – działa:
Tylko mała uwaga: po skonfigurowaniu w DNS’ach nowego rekordu musicie uzbroić się w cierpliwość, bo zmiana może być widoczna w kilka minut, a czasem nawet kilka(naście) godzin.
SSL!!! Teraz na Topie
Warto tez „na zaś” ustawić obsługę połączenia szyfrowanego do serwera.
Wykorzystamy do tego celu certyfikat który sami sobie wygenerujemy – poza ostrzeżeniem przeglądarki, że nie wydał go „znany urząd certyfikacji” wszystko powinno działać.Zobacz również: Let’s Encrypt to bezpłatny i wygodny w konfiguracji certyfikat SSL dla Twojej strony
Instalacja modułu:
sudo a2ensite default-ssl
sudo a2enmod ssl
Generujemy certyfikatu:
sudo make-ssl-cert generate-default-snakeoil --force-overwrite
Restart Apache:
sudo service apache2 restart
I to wszystko… Na „stronę” powinniście już móc wejść poprzez „https” – z czego warto korzystać wszędzie tam, gdzie przesyłacie prywatne dane (hasła, formularze, itp.).
Musicie tylko pamiętać, by dodatkowo na routerze ustawić port 443 „z zewnątrz do Raspberry Pi”.
mod rewrite
Wprawdzie modułów które można dodać (aktywować) do Apache jest całkiem sporo, to jest jeden bez którego nie wyobrażam sobie pracy 😉
Chodzi o mod rewrite, który możemy aktywować za pomocą polecenia:
sudo a2enmod rewrite
I – standardowo – restart Apache:
sudo service apache2 restart
Domyślne kodowanie znaków
Można też ustawić domyślne kodowanie znaków (chodzi o „ogonki”, czyli np.: ęóąśłżźćń).
W tym celu ponownie edytujemy plik konfiguracyjny:
sudo nano /etc/apache2/apache2.conf
Ew. może to też być:
sudo nano /etc/apache2/conf.d/charset
i dodajemy linijkę:
AddDefaultCharset UTF-8
lub:
AddDefaultCharset ISO-8859-2
Oczywiście zmiana będzie aktywna po restarcie serwera Apache…
PHP.ini
Nie można też zapomnieć o edycji pliku php.ini by troszkę usprawnić działanie naszego serwera…
sudo nano /etc/php5/apache2/php.ini
I warto spojrzeć okien na pozycje:
memory_limit = 64M
post_max_size = 64M
upload_max_filesize = 64M
Apache2 utils
Warto też zainstalować też paczkę „apache2-utils”:
sudo apt-get install apache2-utils
Dzięki czemu dostaniemy dostęp do dodatkowych poleceń/narzędzi:
- ab – narzędzie testujące Apache’a
- fcgistarter – uruchamia program FastCGI
- logresolve – uzyskuje nazwę komputera na podstawie adresów IP w plikach dziennika
- htpasswd – obsługuje pliki uwierzytelniania typu Basic
- htdigest – obsługuje pliki uwierzytelniania typu Digest
- htdbm – obsługuje pliki uwierzytelniania typu Basic w formacie DBM, używając APR
- htcacheclean – czyści pamięć podręczną dysku
- rotatelogs – okresowo zatrzymuje zapisywanie do pliku dziennika i otwiera nowy
- split-logfile – dzieli pojedynczy plik dziennika obejmujący wiele wirtualnych hostów
- checkgid – sprawdza, kiedy odwiedzający może ustawić setgid dla określonej grupy
- check_forensic – wydobywa mod_log_forensic z plików dziennika serwera Apache’a
- httxt2dbm – generuje pliki DBM, używane z RewriteMap
Czytaj część drugą: instalacji MySQL, phpMySQL ….
Patryk, dzięki za udostępnienie na szybko swoich screenów 😛