Dieses Tutorial bezieht sich auf fun_plug 0.5, welches veraltet ist und daher nicht mehr genutzt werden sollte! Dieses Tutorial ist daher ebenfalls veraltet! Bitte sehe hier nach den aktuellen Tutorials! Nach meinem Artikel über die Installation von PHP5.2 zusammen mit dem Webserver lighttpd gehe ich nun einen Schritt weiter. Es geht konkret um die Installation von MySQL5.1 inklusive PHP5.2 zusammen mit dem Webserver lighttpd auf dem NAS.

Voraussetzung für die Installation ist die Einrichtung des fun_plug in der Version 0.5, welche hier für verschiedene Geräte zu finden ist. Für alle Listings in diesem Beitrag gilt: Wenn man auf “Plain Text” klickt, gehts kopieren leichter ;) Und wenn Pfade abgeändert werden sollen, bitte selbstständig anpassen.

Zunächst muss man mein Repository wie gewohnt synchronisieren. Anschließend müssen mindestens curl, mysql, php und lighttpd aus meinem Repository installiert werden. Fonz’ Repository sollte sowieso komplett installiert sein, hier muss man aber auf jeden Fall libiconv installiert haben.

Wenn man (so wie im ffp0.5-Tutorial beschrieben) bereits früher einmal das PHP von fonz installiert hat, so muss man dieses mittels “funpkg -u” nun upgraden.

Normalerweise wird man die Pakete wie folgt installieren (lighttpd ist hierbei auf -u, also update gestellt, da dieser vermutlich schon installiert ist):

1
2
3
4
5
funpkg -i /ffp/pkg/additional/*/mysql-*.tgz
funpkg -i /ffp/pkg/additional/*/curl-*.tgz
funpkg -i /ffp/pkg/additional/*/php-*.tgz
funpkg -u /ffp/pkg/additional/*/lighttpd-*.tgz
funpkg -i /ffp/pkg/packages/libiconv-*.tgz

Alle Webdienste werden in Zukunft das Verzeichnis /srv/ als Datenablageort nutzen. Da es unklug wäre, diese Speicherort auf dem kleinen RAM des NAS zu erzeugen, werden wir nun erstmal einen Link zu einem Verzeichnis auf der Festplatte oder dem USB-Stick erstellen. Dazu öffnet man die Datei /ffp/etc/fun_plug.init und fügt am Ende folgendes ein:

1
2
# create custom link to the server-folder
ln -s /ffp/opt/srv/ /srv

Den letzten Befehl führen wir nun auch gleich auf der Konsole aus, damit der Link erstellt wird. Zunächst erstellen wir jedoch das Verlinkte Verzeichnis:

1
2
mkdir -p /ffp/opt/srv/
ln -s /ffp/opt/srv/ /srv

Der Webserver lighttpd muss noch konfiguriert werden, einige Configuration-Files werden bereits mitgeliefert. Für das D-Link DNS-320/DNS-325 gibt es ein besonderes File, bitte das folgende in diesem Falle überspringen und beim nächsten Schritt weitermachen:

1
cp /ffp/etc/examples/lighttpd.conf-with-php /ffp/etc/lighttpd.conf

Wie bereits angesprochen braucht das DNS-320/DNS-325 ein besonderes Config-File, da bei diesem NAS der interne Webserver ebenfalls lighttpd ist. Damit sich diese nicht in die Quere kommen muss man den internen stoppen und kann dann den FFP-lighttpd starten. Das folgende Configfile macht dann die Weboberfläche des NAS auf Port 81 verfügbar, sodass man darauf weiterhin arbeiten kann:

1
cp /ffp/etc/examples/lighttpd.conf-dns320 /ffp/etc/lighttpd.conf

Damit php auch weiß, was erlaubt oder verboten ist, muss eine php.ini im Verzeichnis /ffp/etc/ liegen:

1
cp /ffp/etc/examples/php.ini-wolfuli /ffp/etc/php.ini

Und die my.cnf von MySQL darf natürlich nicht fehlen:

1
cp /ffp/etc/examples/mysql/my-small.cnf /ffp/etc/my.cnf

Nun befinden sich die drei wichtigen Dateien php.ini (Konfiguration von PHP), lighttpd.conf (Konfiguration für den Webserver) sowie my.cnf (Konfiguration des MySQL-Servers) im Verzeichnis /ffp/etc/. Prinzipiell sollten alle Configs mal durchgesehen werden, ob die Werte so okay sind.

Der Webroot des Webservers ist direkt auf /srv/www/ gelegt, dort muss man nun die entsprechenden Verzeichnisse erstellen:

1
2
3
4
mkdir -p /srv/tmp/mysql/
mkdir -p /srv/www/logs/
mkdir -p /srv/www/pages/
mkdir -p /srv/mysql/

Die MySQL-Datenbank muss noch initialisiert werden mittels der folgenden Befehle:

1
2
3
mysql_install_db
sh /ffp/start/mysqld.sh start
/ffp/bin/mysql_secure_installation

Dort wird nun nach dem Passwort gefragt: “Enter current password for root (enter for none):” Bei einer neuen Installation ist dieses einfach leer!

Nun kann man den Webserver mal starten, der folgende Befehl ist jedoch nur für alle NAS ausser dem DNS-320/DNS-325 gültig:

1
sh /ffp/start/lighttpd.sh start

Für das DNS-320/DNS-325 muss der interne Webserver erst abgeschalten werden, was die Datei “kickwebs_dns320.sh” macht:

1
2
sh /ffp/start/kickwebs_dns320.sh start
sh /ffp/start/lighttpd.sh start

Sollte alles glatt gehen, so kann man die Pakete im fun_plug dauerhaft aktivieren:

1
2
chmod a+x /ffp/start/lighttpd.sh
chmod a+x /ffp/start/mysqld.sh

Hat man das DNS-320/DNS-325 so ist zusätzlich dieser Befehl auszuführen: chmod a+x /ffp/start/kickwebs_dns320.sh

Kleiner Hinweis am Rand für alle NAS ausser dem DNS-320: Der Webserver startet bis jetzt auf Port 8080. Möchte man diesen auf Port 80 (also den regulären HTTP-Port) legen, so muss man folgende Befehle ausführen:

1
2
sed -i '/server.port/ s/^/#/' /ffp/etc/lighttpd.conf
chmod a+x /ffp/start/kickwebs.sh

Dies bewirkt, dass der interne Webserver für die Weboberfläche gekillt wird, anschließend startet lighttpd und legt sich auf Port 80. Der interne Webserver ist ein paar Minuten später dann auf Port 81 wieder verfügbar.

Standardmäßig sind in meiner PHP.ini derzeit die untenstehenden Extensions aktiviert. Danke an Peter für den Hinweis!

Einzelne Extensions kann man problemlos auch deaktivieren oder eventuell auch neue hinzufügen (bitte per Kommentar melden, wenn eine fehlt!). Welche momentan überhaupt verfügbar sind, bekommt man mittels “ls -al /ffp/lib/php/extensions/no-debug-non-zts-20060613/” heraus. Dann sucht man den Punkt “Dynamic Extensions” in der /ffp/etc/php.ini und kommentiert dort die Extensions ein oder aus. Beispielhaft hier mbstring aktiviert:

1
extension=mbstring.so

Momentan sind folgende verfügbar und aktiviert:

calendar ctype ftp gd mbstring mysql pdo pdo_mysql pdo_sqlite sqlite tokenizer zlib

Changelog des Eintrags

09.10.2008 - 01:30

  • Update: Umstieg auf fonz’ Pakete.
  • Umstellung des Webroots auf /srv/
  • Cleanup der php.ini
  • Anpassung aller Pfade

07.01.2011 - 00:40

  • Update: Umstieg auf meine Pakete.
  • Anpassungen für DNS-320
  • Cleanup mit direkter Paketierung meiner php.ini

16.02.2011 - 00:40

  • Anpassungen für DNS-325
  • Änderung des Pfads auf /ffp/opt/srv/ um Festplattenpfad-Konflikte zu vermeiden