Kursy • Poradniki • Inspirujące DIY • Forum
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.
Jednak na końcu artykułu znajduje się również projekt, z którym poradzą sobie nawet osoby, które nigdy nie miały styczności z tworzeniem www.
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.
Zaletą tego rozwiązania jest też to, że nasz mały serwer posiadamy fizycznie u siebie i mamy nad nim pełną kontrolę. Niestraszne nam żadne ograniczenia firm hostingowych związane z uprawnieniami i dozwolonymi programami.
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.
Gotowe zestawy do kursów Forbota
Komplet elementów Gwarancja pomocy Wysyłka w 24h
Elementy niezbędne do wykonania wszystkich ćwiczeń z kursu podstaw Rasberry Pi dostępne są w formie gotowych zestawów!
Zamów 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:
Aktualizacja systemu może zająć nawet ponad godzinę! Wszystko zależy od prędkości łącza i tego jak dawno wykonywana była poprzednia aktualizacja.
sudo apt update
sudo apt upgrade
sudo apt update
Jak zainstalować Apache'a na Raspberry Pi?
Instalacja Apache'a to dosłownie jedna linijka:
sudo apt install apache2 -y
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.
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.
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ą.
sudo mkdir /var/www/html/forbot
cd /var/www/html/forbot
sudo nano index.html
Zawartość pliku /var/www/html/forbot/index.html:
<html>
<head>
<title>FORBOT</title>
</head>
<body>
<p style="text-align: center; font-size: 20px">FORBOT TEST</p>
</body>
</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:
Należy użyć numeru IP Raspberry Pi, który może być inny od używanego powyżej!
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:
sudo apt install php -y
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):
<?php
echo("TEST PHP OK - " . date('Y-m-d H:i:s'));
?>
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:
Jeśli zamiast tego w przeglądarce wyświetli się kod php to problem powinno rozwiązać przeładowanie Apache'a za pomocą polecenia:
sudo service apache2 restart
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:
<?php
phpinfo();
?>
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:
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:
sudo apt install mysql-server php-mysql -y
Po instalacji od razu restartujemy serwer:
sudo service apache2 restart
Następnie logujemy się do konsoli MySQL jako domyślnie utworzony użytkownik root:
sudo mysql --user=root
W efekcie uruchomi się konsola 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):
CREATE USER 'mysql_user'@'localhost' IDENTIFIED BY 'tajnehaslo';
Następnie nadajemy uprawnienia:
GRANT ALL PRIVILEGES ON *.* TO 'mysql_user'@'localhost';
Ważne, aby komendy te wydawać we wcześniej uruchomionej konsoli 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):
mysql --user=mysql_user -p
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:
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:
sudo apt install phpmyadmin
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.
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:
sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin
Ostatni, konieczny krok to restart serwera:
sudo service apache2 restart
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.
Dzięki temu każdy będzie mógł uruchomić swojego bloga na RPi!
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:
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:
sudo mkdir /var/www/html/blog
cd /var/www/html/blog/
sudo wget http://wordpress.org/latest.tar.gz
Następnie wypakowujemy archiwum, pliki przenosimy z katalogu wordpress do blog i robimy porządek usuwając zbędne archiwum i pusty folder wordpress:
sudo tar xzf latest.tar.gz
sudo mv wordpress/* .
sudo rm -rf wordpress latest.tar.gz
Ostatni krok, to zmiana właściciela wszystkich plików. Wydajemy poniższe polecenie w katalogu blog:
sudo chown -R www-data: .
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.
Powyższe polecenie chown z flagą -R zmienia właściciela wszystkich plików w danym katalogu wraz z podkatalogami na www-data.
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:
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ć:
- Jak zdalnie i wygodnie edytować skrypty na Raspberry Pi?
- Kurs Raspberry Pi – #7 – dostęp zdalny VNC, SCP, klucze RSA
- Kurs Raspberry Pi – #9 – edytory tekstów, konsola cd.
- 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!
Nawigacja kursu
Autor: Damian Szymański
Powiązane wpisy
apache, html, kurs, kursRPiProjekty, mysql, php, raspberrypi, serwer
Trwa ładowanie komentarzy...