nginx mit php und Firebird SQL nutzen

  • Als Alternative zu der recht häufig verwendeten Kombination Apache/PHP/MySQL verwende ich lieber nginx/PHP/Firebird: Das ist leichtgewichtiger und die Firebird-Datenbankengine ist komplett open source und sehr leistungsfähig.
    Dieses Tutorial bezieht sich auf Rapbian.

    Vorbereitung
    Ich habe mich mit

    Code
    sudo startx


    angemeldet, damit ich einerseits die grafischen Tools nutzen kann und andererseits gleich eine administrative Konsole zur Verfügung habe.
    Alternativ mache ich sowas mit

    Code
    sudo mc


    dann habe ich den Midnight Commander, bei dem man mit Strg-O in eine Konsole wechseln kann, oder mit

    Code
    sudo -s


    um auf der Kommandozeile als root zu werkeln.

    nginx
    Mit

    Code
    apt-get install nginx


    habe ich in einer Konsole nginx installiert.
    In /etc/nginx/sites-available/default stehen die Standard-Server-Einstellungen von nginx. Sie besteht aus Abschnitten, die jeweils mit einem Schlüsselwort beginnen dem nach einem Leerschritt ein Wert und ein Semikolon oder ein in geschweifte Klammern eingeschlossener Block folgt.
    Insbesondere steht hier, dass das Standard-Web-Verzeichnis unter /usr/share/nginx/www liegt.
    Wenn Ihr im Browser localhost als Adresse eingebt, wird der Inhalt der Datei /usr/share/nginx/www/index.html angezeigt - nginx ist korrekt installiert.

    PHP
    Von nginx wird PHP als CGI-Modul angesprochen und muss folglich auch so installiert werden. Man kann dafür den PHP-FPM (FastCGI Process Manager) verwenden:

    Code
    apt-get install php5-fpm


    der sich als Daemon /etc/init.d/php5-fpm als FastCGI Server auf Port 9000 installiert.

    PHP in nginx anbinden
    In /etc/nginx/sites-available/default steht bereits ein Abschnitt zu PHP, den man einfach einkommentieren kann ("#" entfernen). Dabei bleibt der Abschnitt zu "php-cgi alone" auskommentert.
    Es wird darauf hingewiesen, dass in /etc/php5/fpm/php.ini die Option cgi.fix_pathinfo=0 gestellt werden soll - weil ich PATH_INFO nicht verwende, hat das für mich keine Bedeutung.
    Mit einem

    Code
    nginx -s reload


    wird die Konfiguration neu eingelesen.
    Sollte gemault werden, dass /var/run/nginx.pid nicht korrekt ist, läuft nginx noch nicht und Du startest ihn mit

    Code
    /etc/init.d/nginx restart


    Testen kann man das Ganze dann mit einem

    PHP
    echo "<?php phpinfo(); ?">/usr/share/nginx/www/index.php


    und der Angabe von localhost/index.php in der Adresszeile des Browsers.
    Soll index.php standardmäßig als Index-Seite gelten, muss das in /etc/nginx/sites-available/default in der Zeile "index index.html index.htm;" ergänzt werden: "index index.php index.html index.htm;".

    Session-Data unter nginx mit PHP als FastCGI

    Auf das Standard-Verzeichnis für die Speicherung der Session-Daten in "/var/lib/php5" hat der FastCGI-Benutzer i.d.R. keinen Schreibzugriff, daher kann kein Session-Data abgelegt werden. Erstellt ein entsprechendes Verzeichnis und gebt ihm die entsprechende Berechtigung:

    Code
    mkdir /var/lib/php5/seesiondata
    chmod 1733 /var/lib/php5/sessiondata


    Das Verzeichnis muss dann in der "/etc/php5/fpm/php.ini" eingetragen werden:

    Code
    session.save_path = "/var/lib/php5/sessiondata"


    Firebird
    Der Datenbank-Server Firebird wird mit

    Code
    sudo apt-get install firebird2.5-super


    installiert. Die anderen Firebird-Architekturen sind für den Pi nicht so geeignet.
    Man kann den Server auch selbst kompilieren, wie hier beschrieben, das dauert aber ein Weilchen.
    Nach der Installation läuft der Firebird-Server auf Port 3050 unter dem Benutzer firebird (letzteres bedeutet, dass der Server selbst nur dann z.B. Datenbanken anlegen kann, wenn das Datenbankverzeichnis mit den entsprechenden Rechten versehen ist, z.B. firebird gehört).
    Die Installation erfolgt im wesentlichen nach /user/local/firebird. Hier unter bin stehen eine Reihe von Standard-Werkzeugen zur Verfügung, für die der Benutzer pi keine Rechte hat - es empfiehlt sich, die nach /home/pi/bin zu verlinken und den Pfad entsprechend zu modifizieren.
    Mit

    Code
    /usr/local/firebird/bin/isql -z


    kann man prüfen, ob der Server korrekt läuft.
    Da dies kein Firebird-Tutorial werden soll, nur kurz der Hinweis: Als grafisches Datenbank-Administrationswerkzeug läuft auf dem PI auch FlameRobin, und wer eine Windows-Maschine mit dem PI verbinden kann/will, kann auch IBExpert benutzen.

    Firebird in PHP
    In der Ausgabe der Testseite (phpinfo, s.o.) lässt sich erkennen, dass standardmäßig interbase bereits als dynamische Bibliothek zur Verfügung steht und dass die zugehörige Client Library Firebird ist - Firebird ist im wesentlichen kompatibel mit Interbase und die Aufrufe im PHP-Code erfolgen über die entsprechenden ibase_ Funktionen - Hinweise, wie die Verwendung erfolgt, finden sich in der PHP-Dokumentation zu Firebird/Interbase.

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!