Raspberry Pi – instalacja serwera www (apache)

Raspberry Pi jest malutkim komputerem na którym możemy uruchamiać wiele ciekawych aplikacji, a dzięki złączu 2×20 pin mamy dostęp do portów GPIO przez które możemy podłączyć różnego rodzaju czujniki, diody i przyciski. Dziś pokażę Wam jak zainstalować serwer www, który pozwoli nam postawić na naszej malinie w pełni funkcjonalną stronę www (która może być np. panelem wyświetlającym wartości czujników).

Instalacja serwera

Aby zainstalować serwer Apache wystarczy że wpiszemy w konsoli

sudo apt-get install apache2

Jeżeli system nie będzie mógł znaleźć odpowiednich paczek przed instalacją apache zaktualizujmy zależności:

sudo apt-get update

Kiedy serwer Apache się już zainstaluje możemy sprawdzić czy działa wchodząc z poziomu przeglądarki na adres naszego Raspberry.

Od teraz możemy dodawać nasze własne dokumenty .html do folderu /var/www/html. Jednak gołe pliki html to nie jest to o czym marzyliśmy. Fajnie byłoby dodać do tego trochę logiki, dlatego też doinstalujemy na malince interpreter PHP.

Instalacja PHP

W celu instalacji interpretera php działającego pod serwerem apache wpisujemy w konsole następującą komendę:

sudo apt-get install php5 libapache2-mod-php5

Jeżeli paczki zainstalują się pomyślnie możemy przejść do katalogu /var/www/html, a następnie usunąć plik index.html i stworzyć index.php w którym umieścimy jakiś testowy skrypt. Aby usunąć index.html musimy wywołać polecenie rm poprzez sudo. Następnie wpisujemy

sudo touch index.php
sudo chown nazwa_uzytkownika index.php

gdzie zamiast nazwa_uzytkownika wpisujemy naszą aktualną nazwę użytkownika. Od teraz możemy edytować plik index.php bez użycia sudo.

Możemy także nadać sobie prawa na cały katalog /var/www/html wydając polecenie

sudo chown nazwa_uzytkownika /var/www/html/ -R

Parametr -R nada naszemu użytkownikowi uprawnienia rekursywnie do wszystkich podkatalogów znajdujących się w html.

Innym sposobem na nadanie pełnych praw do /var/www/html jest ustawienie chmod’a

sudo chmod 777 /var/www/html/

Testy

Do celów testowych wpiszmy do pliku index.php następującą treść:

<?php
phpinfo();
?>

Po odwiedzeniu adresu malinki powinniśmy zobaczyć coś podobnego:

Jeżeli mamy zainstalowany program wiringpi (sudo apt-get install wiringpi) możemy z poziomu PHP wykonywać operacje na GPIO np. odczytać stan konkretnego pinu:

<?php
        echo "Stan pinu 29: ";
        system("gpio read 29");
?>

Numery pinów dla wiringpi możemy sprawdzić na stronie https://pinout.xyz/

Można odczytać z niej, że pin 29 to pin, który znajduje się na krawędzi płytki od storny portów USB. Jeżeli przyłożymy do niego napięcie 3,3V i wejdziemy na adres malinki zostaniemy poinformowani, że

Stan pinu 29: 1

W ten oto sposób zainstalowaliśmy na naszej malince interpreter php i serwer apache. Dzięki funkcjom takim jak system() lub exec() możemy wywoływać komendy basha z poziomu skryptu php (np. możemy sterować portami GPIO poprzez wywołanie porgramu wiringpi).