Instalacja Apache2 + PHP

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 😛