Jak pisałem tutaj, na Raspberry Pi nie zbudujemy sensownego serwera WWW (po prostu wydajność obliczeniowa jest za niska). Nie przeszkadza to oczywiście próbować, co częściowo opisałem w tym wpisie.

Dzisiaj idziemy krok dalej i na serwerze WWW, zbudowanym w oparciu o Raspberry Pi i system operacyjny Raspbian Weezy, zainstalujemy i uruchomimy popularną platformę blogową Wordpress.

Instalacja serwera WWW

Jeśli na naszej Malince jest już zainstalowany Apache i PHP, ten krok możemy opuścić. Jeśli nie, wykonujemy następujące kroki:

  1. aktualizujemy repozytoria sudo apt-get update
  2. instalujemy Apache i PHP sudo apt-get install apache2 php5 libapache2-mod-php5
  3. instalujemy MySQL sudo apt-get install mysql-server mysql-client php5-mysql
  4. aby umożliwić PHP pracę z obrazami, dorzucamy bibliotekę GD sudo apt-get install php5-gd
  5. restartujemy apache sudo service apache2 restart

W tym momencie, nasze RPi powinno być już dostępne w sieci na porcie 80 i pracować jako serwer WWW z MySQL i PHP.

Instalacja Wordpress

Gdy serwer jest już skonfigurowany, możemy przystąpić do instalacji samej platformy blogowej.

  1. pobieramy wordpressa wget http://wordpress.org/latest.tar.gz
  2. rozpakowujemy archiwum tar -xvzf latest.tar.gz
  3. tworzymy katalog docelowy sudo mkdir /var/www/wordpress
  4. kopiujemy pliki sudo cp -r wordpress/* /var/www/wordpress
  5. nadajemy pełne prawa (tak, wiem, lekki overkill ale nikt z tego strzelać nie będzie) sudo chmod -R 777 /var/www/wordpress/

W tym momencie WP jest wgrany, jednak jeszcze nie możemy przystąpić do instalacji, należy przygotować użytkownika i bazę danych MySQL:

  1. logujemy się do bazy danych jako root z hasłem ustawionym w czasie instalacji mysql -u root -p
  2. tworzymy użytkownika CREATE USER wordpress;
  3. tworzymy bazę danych CREATE DATABASE wordpress;
  4. ustawiamy hasło dla użytkownika SET PASSWORD FOR wordpress = PASSWORD("superpassword");
  5. nadajemy użytkownikowi wordpress z hasłem superpassword dostęp do bazy danych wordpress GRANT ALL PRIVILEGES ON wordpress.* TO wordpress@localhost IDENTIFIED BY "superpassword";
  6. przeładowujemy uprawnienia FLUSH TABLES;
  7. wychodzimy exit;

I to tyle. Wordpress jest gotowy do uruchomienia. Odpalamy przeglądarkę, wpisujemy [IP Malinki]/wordpress/ i postępujemy zgodnie  z poleceniami instalatora.

Marudzenie

A teraz trochę dziegciu to tej beczki miodu. Pisałem już, że będzie to działać bardzo wolno? Pisałem, a teraz dowody.

Po pierwsze, po adresem http://pi.spychalski.info jest dostępny właśnie utrzymywany przeze mnie Wordpress na Raspberry Pi. Wydaje się chodzić dość sprawnie? To tylko pozory. Takie tempo jest możliwe wyłącznie przy włączonym agresywnym cache (W3 Total Cache na Memcached), APC i hostowaniu treści statycznych z CDN Amazon CloudFront. Bez tego wszystkiego czas wygenerowania strony głównej bloga dochodził do 9 sekund. Tylko strony głównej, czystego HTML.

Teraz jest trochę lepiej. Niewiele, ale lepiej. Najlepiej odda to chyba wykres z Apache JMeter przedstawiający czas odpowiedzi bloga dla 5 żądań w czasie 20 sekund (żądanie co 4 sekund). Dość szybko serwer się zapchał.

To może 10 żądań w 10 sekund? Proszę bardzo:

Tutaj serwer zapchał się jeszcze szybciej i jeszcze skuteczniej.

Niestety, nie dysponuję pomiarami z JMeter czystej instalacji Wordpress według instalacji przedstawionej powyżej. Brak mi jednej karty SD na eksperymenty. Jeśli ktoś ma ochotę stosowne testy wykonać i podzielić się wynikami, to zapraszam serdecznie.