OpenWrt - LAMP
Instalacja i konfiguracja Apache/MySQL/PHP w OpenWrt
Ostatnia zmiana: 2012-08-09 11:07

1. Apache
 1.1. Instalacja
 1.2. Konfiguracja
 1.3. Uruchomienie
2. PHP5
 2.1. Instalacja
 2.2. Konfiguracja
3. MySQL
 3.1. Instalacja
 3.2. Konfiguracja
 3.3. Uruchomienie
4. Zakończenie


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">

Uruchomienie

    # apachectl start

Poprawnie działanie można sprawdzić umieszczając dowolny plik pod nazwą index.html w katalogu /www1.
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.