Instalacja i konfiguracja Apache/MySQL/PHP w OpenWrt
Ostatnia zmiana: 2014-09-20 13:29

LAMP jest akronimem określającym platformę serwerową składającą się z następujących elementów:

  • Linux (system operacyjny)
  • Apache (serwer www)
  • MySQL (baza danych)
  • PHP (język skryptowy)
Nic nie stoi na przeszkodzie aby takie połączenie oprogramowania zainstalować na OpenWrt. Linux już jest, należy tylko zainstalować pozostałe komponenty. Mała uwaga: routery mają małą ilość pamięci RAM i są ograniczone zasobami obliczeniowymi. Nie będzie to super wydajna platforma, ale do domowych i niewielkich zastosować może się sprawdzić.
Niezbędne jest posiadanie zewnętrznego nośnika na dane bazy oraz najlepiej extroot, jako że same pakiety zajmują dość dużo miejsca.
Założenia:

  • serwer nasłuchuje na porcie 80 (więc wyłączamy wbudowane LuCI)
  • katalog główny serwera to /www1
Przed instalacją należy spełnić w/w wymagania, czyli:


    # opkg update
    # mkdir -p /www1
    # /etc/init.d/uhttpd stop
    # /etc/init.d/uhttpd disable

Apache

Instalacja



    # opkg install apache

Konfiguracja

Plik konfiguracyjny znajduje się w pliku /etc/apache/httpd.conf. Należy zmienić linię zawierającą DocumentRoot tak, aby wskazywała na wymagany przez nas katalog, czyli:


    DocumentRoot "/usr/share/htdocs"

na


    DocumentRoot "/www1"

Należy też zmienić sekcję


    <Directory "/usr/share/htdocs">

na


    <Directory "/www1">

Z powodu błędu w AA należy także zmienić opcję LogLevel na error.

Uruchomienie



    # apachectl start

Poprawnie działanie można sprawdzić umieszczając dowolny plik pod nazwą index.html w katalogu /www1. Aby apache uruchamiało się po starcie routera należy np. w/w linię dopisać jako pierwszą w pliku /etc/rc.local.

PHP5

Instalacja



    # opkg install php5-cgi php5-mod-mysql

Konfiguracja

Do zmiany niezbędna jest aktualizacja pliku konfiguracyjnego apache. Dodajemy handler do obsługi plików php przez cgi na końcu pliku /etc/apache/httpd.conf.


    ScriptAlias /local-bin /usr/bin
    AddHandler application/x-httpd-php5 php
    Action application/x-httpd-php5 /local-bin/php-cgi
    <Directory "/usr/bin">
        Order allow,deny
        Allow from all
    </Directory>

Restartu dokonujemy poleceniem


    # apachectl restart

Następnie należy zmodyfikować plik konfiguracyjny /etc/php.ini. Do modyfikacji jest linia:


    doc_root = "/www1"

oraz dodajemy:


    extension=mysql.so

PHP będzie uruchamiane z poziomu Apache, więc nie potrzeby specjalnego uruchamiania tego interpretera. Sprawdzenie czy PHP działa poprawnie dokonujemy wykonując polecenie:


    # php-cgi -v

Należy pamiętać że do instalacji for czy portali niezbędne jest dużo rozszerzeń php; w tym celu należy zainstalować określone (lub wszystkie) pliki php5-mod-*. Niezbędne może się okazać także ustawienie date.timezone, w przeciwnym przypadku PHP może wyrzucać ostrzeżenia. Zobacz także dokument poświęcony instalacji PHP.

MySQL

Instalacja



    # opkg install mysql-server

Konfiguracja

Plik konfiguracyjny to /etc/my.cnf. Do modyfikacji niezbędne jest ustawienie katalogu z bazą danych (linia z datadir). Nie powinna wskazywać wewnętrznej pamięci flash, powinien to być zewnętrzny nośnik:


    datadir = /mnt/sda1/mysql/

To samo dotyczy linii tmpdir:


    tmpdir = /mnt/sda1/tmp

Przed uruchomieniem należy utworzyć te katalogi:


    # mkdir -p /mnt/sda1/mysql
    # mkdir -p /mnt/sda1/tmp

Dobrze jest także zmienić domyślne wartości buforów na mniejsze:


    key_buffer = 2M
    max_allowed_packet = 2M

Niezbędne jest zainicjowanie bazy danych poleceniem

 
    # mysql_install_db --force

Uruchomienie



    # /etc/init.d/mysqld enable
    # /etc/init.d/mysqld start

Zakończenie

Powyższe połączenie Apache + PHP + MySQL bez problemu działa na Linksysie WRT160NL (procesor 400MHz, 32MB pamięci RAM). Oczywiście wymagało to zewnętrznego nośnika USB do przechowywania danych i plików oraz niewielkiego tuningu pliku konfiguracyjnych.