Anleitung: OS X 10.6 Snow Leopard, Lighttpd, PHP 5.2 und MySQL Server
Montag, 26. Oktober 2009 | Autor: David Krcek
Snow Leopard wird “out-of-the-box” mit Apache2, PHP 5.3 und in der Client Version ohne MySQL ausgeliefert.
Benötigt man aus Kompatibilitätsgründen PHP 5.2 oder MySQL oder gar einen anderen WebServer als Apache, muß man selber Hand anlegen. Ich beschreibe hier die Installation und Konfiguration eines Lighttpd 1.4 Servers, die parallele Installation von PHP 5.2 und die Installation der MySQL Datenbank 5.1.4 .
Nebenbei installieren und verwenden wir macports. Die Anleitung ist so gehalten, daß die einzelnen Komponenten größtensteils auch selbstständig ohne die Übrigen installiert werden können.
Aber der Reihe nach.
1. Installation der Basics
Ich “baue” mir die Server mit Hilfe von MacPorts selber. MacPorts benötigt dafür ein installiertes XCode, das in meinem Fall direkt von der Installations CD des Schneeleoparden kommt. Sollte die gerade nicht zu Hand sein, kann man sich die aktuelle Version auch hier http://developer.apple.com/ runterladen.
Anschliessend lade ich mir bei http://www.macports.org/ die aktuelle Version von MacPorts herunter und installiere das ebenso. Maus Schubser unter uns laden und installieren sich die grafische Oberfläche Porticus .
Damit ich eine aktuelle Version des Macports-Baums erhalte aktualisieren ich Macports.
sudo port -d selfupdate
2. Installation MySQL Server 5.1.40
Die Installation des MySQL Servers ist mit Macports keine Raketenwissenschaft.
Entweder mit Porticus oder im Terminal starte ich das Kommando:
sudo port install mysql5-server-devel
Gefüllte 30 Minuten später ist die Datenbanksoftware installiert und kann genutzt werden.
Allerdings sind hier noch ein paar Konfigurationsschritte nötig.
Die wesentlichen Dateien werden von Macports unter
/opt/local/share/mysql5/mysql abgelegt.
Mit dem Terminal initialisiere ich die Datenbank
sudo /opt/local/lib/mysql5/bin/mysql_install_db --user=mysql
Ich benutze hier ausdrücklich kein Passwort bei der Installation, zur Absicherung des DB Servers möge jeder die einschlägigen Ratschläge bei mysql.com nachsehen.
Soll der MySQL Server automatisch beim Systemstart gestartet werden, dann das Kommando
sudo launchctl load -w /Library/LaunchDaemons/org.macports.mysql5.plist>
eingeben.
Nun kann ich mit dem Kommando
sudo /opt/local/share/mysql5/mysql/mysql.server start
den Server starten.
Damit ich, wie gewohnt die MySQL Konsole erreiche lege ich mir noch einen symbolischen Links an.
cd /usr/local sudo ln -s /opt/local/share/mysql5/mysql/ mysql cd /usr/local/bin sudo ln -s /opt/local/bin/mysql5 mysql
Falls die Verzeichnisse /usr/local und /usr/local/bin nicht vorhanden sind können diese mit
cd /usr/ sudo mkdir local sudo mkdir local/bin
angelegt werden.
Damit hätte ich den Datenbankserver am laufen.
3. Installation Lighttpd 1.4
Wie bei der Datennbank erledigt Macports hier die Hauptarbeit für mich.
Über Porticus oder Terminal installieren ich den “Lighty”.
sudo port install lighttpd +mysql5 +ssl
Wie man unschwer erkennen kann füge ich die SSL und mysql5 Unterstützung bei.
Nach ein paar Minuten ist auch dies erledigt, will man den “Lighty” beim Systemstart automatisch gestartet bekommen führt man
sudo launchctl load -w /Library/LaunchDaemons/org.macports.lighttpd.plist
aus .
Zur Konfiguration komme ich noch gleich, erst installieren ich mir PHP5.2 .
4. Installation PHP 5.2
Dankenswerterweise kommt der Port von PHP 5.2 bereits mit fast allen benötigten Modulen (incl. SOAP).
Ich füge der Kollektion nur noch fastcgi, mysql5 und readline hinzu. Den Rest erledigt wie immer Macports für mich.
sudo port install php52 +fastcgi +mysql5 +readline
Nach einer guten halben Stunde ist PHP 5.2 installiert und ich kann zur Konfiguration des “Lighty” schreiten.
5. Konfiguration Lighttpd und PHP 5.2
zur Konfiguration von PHP gibts es ganze Bücher, ich lasse erstmal alles auf Standard und ändere nur eine Zeile, die den PATH_INFO Fix aktiviert.
cd /opt/local/etc/php5 sudo cp php.ini-recommended php.ini sudo nano php.ini
hier suche ich die Zeile mit dem Inhalt
; cgi.fix_pathinfo=1
und entferne das Semicolon am Anfang. Zu Beginn möchte ich, dass mein “Lighty” auf localhost (127.0.0.1) und Port 8080 lauscht.
Die Änderungen in der Standard Konfiguration des “Lighty” sehen dann so aus.
cd /opt/local/etc/lighttpd sudo nano lighttpd.conf
server.modules = (
...
"mod_fastcgi",
...
server.port = 8080
server.bind = "127.0.0.1"
server.username = "_www"
server.groupname = "_www"
...
fastcgi.server = ( ".php" =>
( "localhost" =>
(
"socket" => "/opt/local/var/run/lighttpd/php-fastcgi.socket",
"bin-path" => "/opt/local/bin/php-cgi",
"broken-scriptfilename" => "enable",
"allow-x-send-file" => "enable",
"min-procs" => 2,
"max-procs" => 2,
"bin-environment" => (
"PHP_FCGI_CHILDREN" => "4",
"PHP_FCGI_MAX_REQUESTS" => "100"
)
)
)
)Über die Parameter server.bind und server.port stelle ich den “Lighty” auf den gewünschte Adresse und Port ein. Die Parameter server.username und server.groupname stellen den Benutzer und die Gruppe ein mit der “Lighty” ausgeführt wird.
Die PHP Einbindung über fastcgi erfordet ein paar Parameter mehr.
Zu den Standardparametern nehme ich hinzu:
- broken-scriptfilename damit PATH_INFO ermittelt wird
- allow-x-send-file damit das senden von großen Files der “Lighty” selbständig besorgt
- “min-procs”/”max-procs” damit will ich nur 2 fastcgi Prozesse vom “Ligthy” gestartet bekommen.
- “PHP_FCGI_CHILDREN” => “4″ damit jeder der oben genannten Prozesse 4 Kinderprozesse öffnet um die Requests zu befriedigen.
- “PHP_FCGI_MAX_REQUESTS” => “100″ damit bei hundert Request ist Schluß
Die Parameter oben sind alle optional, ohne diese sollte der Standard aber auch gut laufen.
Kurz noch prüfen ob die Konfiguration syntaktisch passt
lighttpd -t -f /opt/local/etc/lighttpd/lighttpd.conf Syntax OK
Damit der “Lighty” noch fehlerfrei startet muß ich ein paar Verzeichnisrechte setzen
cd /opt/local/var/
sudo chown _www:_www lighttpd/
cd /opt/local/var/run/
sudo chown _www:_www lighttpd
Nun kann ich den “Lighty” starten
sudo lighttpd -D -f /opt/local/etc/lighttpd/lighttpd.conf tail -f /opt/local/var/log/lighttpd/error.log 2009-10-25 13:00:56: (log.c.172) server started
und der “Lighty” läuft.
Für einen ersten Test erstelle ich mir die Datei index.php im Verzeichnis /opt/local/www/htdocs/
mit dem Inhalt
<?php phpinfo(); ?>
und sehe mir den Inhalt unter http://localhost:8080 an.
Habe fertig.



Cool, danke
Bei mir scheitert die Intallation von PHP offensichtlich:
—> Installing apr @1.3.9_0
Error: Target org.macports.install returned: MacPorts requires root privileges for this action
Error: The following dependencies failed to build: apache2 apr apr-util db46 expat libiconv gperf mysql5 openssl zlib readline ncurses ncursesw sqlite3 pcre bzip2 autoconf213 gawk gettext m4 perl5 perl5.8 curl pkgconfig freetype gsed jpeg libmcrypt libpng libtool automake autoconf help2man p5-locale-gettext libxml2 libxslt mhash tiff
Error: Status 1 encountered during processing.
Zumindest existiert unter /opt/local/etc danach kein Verzeichnis “php5″
Hallo Lelo,
hast Du auch das sudo verwendet ?
Offenbar hast Du keine Rechte für die Installation:
@1.3.9_0 Error: Target org.macports.install returned: MacPorts requires root privileges for
Die Rechte bekommst Du entwender über
sudo bash (und der Eingabe Deines Passworts), danach bist Du der root-User
oder Du setzt das sudo immer vor den port Befehl, also:
sudo port install php5
Dort wirst Du bis zum Timeout wieder nach DEINEM Passwort gefragt.
Grüße
David
Alles klar, danke! Jetzt scheint’s zu klappen
Servus,
tolle Anleitung, hakt aber noch an einer Stelle bei mir: der Test mit der index.php bringt mir einen 403. Hab schon mit unterschiedlichen Rechten herumexperimentiert (zuletzt _www:_www), hat aber nix daran geändert.
Was nu?
Grüssle,
Hardy
Hallo Hardy,
danke, was steht denn in dem Lighty Logs (/opt/local/var/log/litghttpd) ?
Grüße
David
Danke Hardy,
hab vergessen, dass unter server.modules das mod_fastcgi einkommentiert werden muß, wenn man php Dateien verabeiten will. Die übliche Fehlermeldung wenn man das vergisst ist der 403 Error.
cu
David