Kurs Raspberry Pi, projekty – #5 – serwer www (PHP, MySQL)

Kurs Raspberry Pi, projekty – #5 – serwer www (PHP, MySQL)

Tym razem sprawdzimy jak z Raspberry Pi zrobić prosty serwer www, na którym będą mogły działać strony korzystające z html, PHP oraz baz danych MySQL.

Projekt ten będzie na pewno przydatny dla osób, które chciałyby administrować serwerami oraz dla wszystkich elektroników i fanów IoT.

Artykuł ten jest częścią serii wpisów opisujących praktyczne wykonanie różnych projektów bazujących na Raspberry Pi (popularnym komputerze jednopłytkowym). W tym artykule skupiamy się na wykonaniu konkretnego projektu. Jeśli nie znasz podstaw tego układu (instalacja, konfiguracja, praca z Linuksem) to niezbędne informacje znajdziesz w poprzednim kursie podstaw Raspberry Pi.

Czego nauczysz się z tego poradnika?

Tym razem zajmiemy się instalacją i konfiguracją prostego serwera www na Raspberry Pi. Zaczniemy od popularnego Apache'a, czyli otwartego serwera HTTP dostępnego dla wielu systemów operacyjnych. Następnie przyjdzie pora na interpreter PHP oraz bazę danych MySQL. Na koniec doinstalujemy również popularny program phpMyAdmin, który znacznie ułatwia korzystanie z baz danych.

Inaczej mówiąc stworzymy sobie środowisko nazywane LAMP (Linux, Apache, MySQL, PHP), które oznacza zestaw oprogramowania umożliwiającego uruchomienie platformy serwerowej zdolnej do utrzymywania dynamicznych stron www.

Celem tego poradnika nie jest przedstawienie konkretnego zastosowania serwera - tym razem chodzi o ogólną, wstępną instalację. Z poradnika najwięcej skorzystają osoby, które miały wcześniej styczność z tworzeniem stron i mają chociaż bardzo podstawowe pojęcie o html/PHP/MySQL.

Po co serwer www na Raspberry Pi?

Jak zawsze powodów jest kilka. Osoby związane z IT na pewno od razu mają wiele pomysłów. Zacznijmy jednak od podstaw. Po pierwsze, serwer taki warto postawić w celach edukacyjnych. Dzięki niemu można nauczyć się w praktyce administrowania prostym serwerem przez ssh. Zamiast kupować serwer w firmie hostingowej do nauki możemy wykorzystać RPi. Na początku możliwości malinki będą wystarczające, a zdobyte umiejętności będzie można wykorzystać później na "prawdziwym" serwerze.

Po drugie, często w różnych projektach elektronicznych istnieje potrzeba wysłania danych z czujników na serwer (np. aby zapisywać je w bazie danych). Za pomocą malinki możemy łatwo utworzyć serwer lokalnie i trzymać na nim dane. Dostęp do takiego serwera może odbywać się "tradycyjnie" przez internet, ale będzie też działał w sieci lokalnej, pozbawionej dostępu do internetu.

Zestaw elementów do kursu

Gwarancja pomocy na forum Błyskawiczna wysyłka

Elementy niezbędne do wykonania wszystkich ćwiczeń z kursu podstaw Rasberry Pi dostępne są w formie gotowych zestawów!

Kup w Botland.com.pl

Instalacja LAMP na Raspberry Pi

Pora przejść do praktyki. Poniższa instrukcja będzie działała poprawnie na Raspberry Pi z najnowszym Raspbianem. Zakładam, że dostęp do malinki mamy zdalny (przez SSH). Dokładną instrukcję jak tego dokonać znaleźć można w kursie podstaw Raspberry Pi. Dla pewności zaczynamy od upewnienia się, że pracujemy na najnowszej wersji oprogramowania wydając kolejno trzy polecenia:

Jak zainstalować Apache'a na Raspberry Pi?

Instalacja Apache'a to dosłownie jedna linijka:

Po zakończeniu instalacji wystarczy wpisać w pasek adresu przeglądarki naszego PC adres IP malinki. Jeśli Apache został zainstalowany poprawnie to zobaczymy stronę testową. Oczywiście, aby było to możliwe komputer i malinka muszą znajdować się w tej samej sieci lokalnej.

Efekt poprawnej instalacji Apache'a.

Działanie serwera możemy też sprawdzić logując się bezpośrednio do RPi w trybie graficznym, np. za pomocą VNC. Wtedy wystarczy uruchomić przeglądarkę i w pasek adresu wpisać localhost lub 127.0.0.1, adresy te zadziałają identycznie, ponieważ oznaczają adres komputera lokalnego.

Podgląd działania serwera z poziomu trybu graficznego Raspberry Pi.

Własne strony z html/js/css na Raspberry Pi

Powyższy krok właściwie wystarcza do tego, aby na Raspberry Pi można było trzymać proste strony, które korzystają z html, javascript oraz css. Dodajmy teraz testowo prostą stronę.

Domyślna witryna, którą widać na powyższych zrzutach znajduje się w /var/www/html/index.html, można podmienić zawartość tego pliku lub utworzyć nowy katalog z inną stroną. Dla przykładu dodajmy katalog forbot, a w nim utwórzmy plik index.html z testową stroną.

Zawartość pliku /var/www/html/forbot/index.html:

Po zapisaniu pliku możemy w przeglądarce wywołać adres, np.: http://192.168.1.32/forbot/index.html, naszym oczom powinna ukazać się prosta strona korzystająca z html i css:

Nowa strona testowa.

Jak zainstalować PHP na Raspberry Pi?

Żadna rozbudowana strona nie obejdzie bez obsługi skryptów PHP, które są wykonywane po stronie serwera. Pora zainstalować interpreter tego języka:

Dla testu tworzymy w katalogu forbot (tym samym co wcześniej) plik index.php o poniższej treści. Nie jest to kurs PHP, więc nie będziemy dokładnie zajmować się opisywaniem tego kodu. W skrócie: jest tam jedna linijka, która odpowiada za wypisanie tekstu oraz aktualnej godziny (pobranej z serwera):

Następnie uruchamiamy w przeglądarce adres nowej strony, np.: http://192.168.1.32/forbot/index.php. Jeśli wszystko przebiegło poprawnie to zobaczymy efekt zbliżony do poniższego:

Test strony PHP uruchomionej na Raspberry Pi.

Jeśli zamiast tego w przeglądarce wyświetli się kod php to problem powinno rozwiązać przeładowanie Apache'a za pomocą polecenia:

Jeśli jesteśmy już przy PHP to warto również sprawdzić co tak właściwie zainstalowaliśmy i jaka jest konfiguracja interpretera. W tym celu najlepiej skorzystać z funkcji phpinfo(), która wyświetli wszystkie ważne informacje. Tworzymy więc kolejny plik, np.: info.php o treści:

Po uruchomieniu nowej podstrony zobaczymy najważniejsze informacje, w tym wersję PHP - w chwili pisania artykułu domyślnie instalowane było PHP 7.0.30.0:

Informacje na temat zainstalowanego PHP.

Jak zainstalować MySQL na Raspberry Pi?

Pora, aby dodać do naszego serwera możliwość przetrzymywania informacji w bazie danych. Najlepiej zacząć od sprawdzonego MySQL, które przyda się zarówno przy projektach webmasterskich, jak i przy urządzenia IoT wysyłających dane do serwera.

Instalujemy MySQL wraz z dodatkiem, który pozwoli nam używać bazy danych przez PHP:

Po instalacji od razu restartujemy serwer:

Następnie logujemy się do konsoli MySQL jako domyślnie utworzony użytkownik root:

W efekcie uruchomi się konsola MySQL:

Konsola serwera MySQL.

Domyślny użytkownik root może być używany tylko przez użytkownika zalogowanego na Linuksie z uprawnieniami administratora. W związku z tym nie można go używać na potrzeby serwera www. Tworzymy nowe konto (mysql_user) i ustawiamy mu hasło (tajnehaslo):

Następnie nadajemy uprawnienia:

Ważne, aby komendy te wydawać we wcześniej uruchomionej konsoli MySQL:

Dodawanie nowego użytkownika do MySQL.

Następnie wychodzimy z konsoli za pomocą CTRL+C. Dla testu możemy spróbować dostać się teraz do konsoli MySQL za pomocą nowego użytkownika (dopisek -p oznacza, że będziemy podawać hasło):

Po wydaniu tego polecenia pojawi się pytanie o hasło. Wpisujemy je w konsoli - tak samo, jak podczas logowania do Raspberry Pi nie będzie widać żadnych wpisywanych znaków (ani gwiazdek). Jeśli hasło będzie poprawnie to po prostu dostaniemy się do konsoli:

Logowanie do MySQL jako nowy użytkownik.

Jak zainstalować phpMyAdmin na Raspberry Pi?

Oczywiście z baz MySQL można korzystać z poziomu konsoli, ale w większości przypadków operacje znacznie łatwiej wykonywać przez phpMyAdmin czyli narzędzie służące do zarządzania bazami danych przez interfejs graficzny.

Instalację phpMyAdmin rozpoczynamy od wydania polecenia:

Tym razem jednak proces instalacji będzie bardziej rozbudowany. Chwilę po starcie pokaże się kreator, w którym wskazujemy typ serwera. Wybieramy opcję apache2, a nasz wybór zatwierdzamy przez Ok.

Wybór typu serwera podczas instalacji phpMyAdmin.

W kolejnym kroku wyświetlona zostania informacja, z którą się zapoznajemy i wybieramy Ok. Na drugim ekranie, który pojawi się później wybieramy No. Mamy już zainstalowaną i skonfigurowaną bazę danych, więc nie chcemy, aby instalator coś teraz zmieniał w ustawieniach.

Po zakończeniu instalacji wydajemy jeszcze jedno polecenie, które sprawi, że phpMyAdmin będzie dostępne pod łatwym do zapamiętania adresem np.: 192.168.1.32/phpmyadmin:

Ostatni, konieczny krok to restart serwera:

Od teraz, jeśli po adresie IP naszego Raspberry Pi dodamy "/phpmyadmin" powinniśmy zobaczyć panel logowania do nowego narzędzia. Logujemy się do niego podając dane wcześniej utworzonego konta:

To tyle - od tej pory nasza malinka może działać jak pełnoprawny, prosty serwer www!

Praktyczne wykorzystanie serwera

Osoby, które miały jakąś styczność z tworzeniem stron internetowych na pewno wiedzą już jak można wykorzystać taką instalację. Zdaje sobie jednak sprawę, że część czytelników może nie mieć pomysłu - stąd bardzo krótki, praktyczny przykład.

W wielu poradnikach dotyczących Raspberry Pi pokazywana jest instalacja WordPressa, czyli bardzo popularnego systemu do tworzenia stron internetowych (głównie blogów, Forbot jest oparty właśnie o ten mechanizm). Przejdźmy więc szybko przez proces instalacja WordPressa na Raspberry Pi.

Baza danych dla WordPressa

Nasz przyszły blog będzie korzystał z bazy MySQL. Stwórzmy więc nową bazę nazwaną jako "blog". W tym celu możemy wykorzystać zainstalowany przed chwilą phpMyAdmin. W lewym górnym rogu klikamy New. W kreatorze wpisujemy nazwę bazy (blog) i wybieramy sposób kodowania znaków:

Tworzenie nowej bazy danych w phpMyAdmin.

Pobranie WordPressa

Teraz musimy pobrać pliki WordPressa, który napisany jest w PHP. W miejscu na strony www tworzymy nowy katalog (blog) i pobieramy do niego archiwum z najnowszą wersję WP:

Następnie wypakowujemy archiwum, pliki przenosimy z katalogu wordpress do blog i robimy porządek usuwając zbędne archiwum i pusty folder wordpress:

Ostatni krok, to zmiana właściciela wszystkich plików. Wydajemy poniższe polecenie w katalogu blog:

Domyślnie właścicielem wszystkich plików w tym katalogu jest administrator (dlatego wcześniejsze polecenia poprzedzaliśmy sudo). "Aplikacja serwera" jest uruchamiana jako konkretny użytkownik, który musi istnieć w systemie. Nie możemy pozwolić na to, aby użytkownik ten miał prawa administratora, bo byłoby to bardzie niebezpieczne. Dlatego podczas instalacji Apache'a tworzony jest automatycznie użytkownik www-data. Serwer pracuje więc właśnie z poziomu tego użytkownika.

Instalacja WordPressa na Raspberry Pi

Pora zainstalować WordPressa. W tym celu uruchamiamy w przeglądarce adres bloga na serwerze, np.: 192.168.1.32/blog. Naszym oczom powinien ukazać się graficzny instalator.

Wybieramy język, podajemy dane do bazy danych, nazwę strony, nazwę administratora i ustawiamy hasło. Po kilku chwilach powinniśmy zobaczyć Kokpit, czyli panel administratora nowego bloga.

Blog zainstalowany! Pora napisać pierwszy wpis. W tym celu wystarczy kliknąć w pasku na samej górze Dodaj i z menu wybrać opcję Wpis. W edytorze wpisujemy przykładowy tytuł i treść pierwszego wpisu. Klikamy Opublikuj i gotowe - od teraz na stronie głównej bloga będzie widoczny nowy wpis:

Blog taki można potraktować jako miejsce do różnych testów i zabaw z WordPressem. Można go nawet udostępnić znajomym wewnątrz sieci lokalnej. Oczywiście nic nie stoi na przeszkodzie, aby dostęp do tego bloga był również możliwy z poza sieci lokalnej. Wymaga to jednak trochę więcej pracy i jest to temat na kilka osobnych artykułów.

Korzystając z tego, że WordPress jest zainstalowany na "naszym serwerze" warto sprawdzić jak malinka zachowa się pod większym obciążeniem. Za pomocą programu htop, można np. zaobserwować jak każde odświeżenie bloga wpływa na obciążenie CPU:

Podgląd obciążenia Raspberry Pi w roli serwera.

Przy okazji na powyższym zrzucie ekranu potwierdza się, że Apache jest uruchamiany jako specjalny użytkownik www-data.


Dodatkowe artykuły, które mogą Cię zainteresować:

  1. Jak zdalnie i wygodnie edytować skrypty na Raspberry Pi?
  2. Kurs Raspberry Pi – #7 – dostęp zdalny VNC, SCP, klucze RSA
  3. Kurs Raspberry Pi – #9 – edytory tekstów, konsola cd.
  4. Kurs Raspberry Pi – #10 – kamera, zdjęcia, transmisja obrazu

Podsumowanie

Instrukcja instalacji i wstępnej konfiguracji serwera jest stosunkowo prosta. Jednak należy pamiętać, że temat konfiguracji serwerów i ich administracji to obszerna dziedzina informatyki. Na ten temat można by było napisać setki artykułów (szczególnie dotyczących bezpieczeństwa i optymalizacji).

Serwer na Raspberry Pi to świetne narzędzie do nauki i eksperymentów, mam nadzieję, że wpis ten zachęci chociaż część z Was do dalszego poznawania tej tematyki. W internecie znaleźć można wiele artykułów omawiających konfigurację serwerów, ustawienia PHP itd. Nawet o samym Apachu dostępne jest sporo książek. Jeśli chcecie, aby poruszyć na Forbocie jakieś konkretne zagadnienia związane z konfiguracją serwera na Raspberry Pi to dajcie znać w komentarzach!

Autor: Damian Szymański

Nawigacja kursu

apache, html, kurs, kursRPiProjekty, mysql, php, raspberrypi, serwer