PHP und MySQL in lighttpd unter Mac OS X einrichten

Warning: This page is a part of an archive now and will be removed in the future.

Nachdem ich schon hier gezeigt habe, wie man lighttpd unter Mac OS X installiert, geht es nun um die Konfiguration von PHP und MySQL, da sie praktisch für Webauftritte essentiell sind.

Ich gehe hier davon aus, dass lighttpd nach der verlinkten Anleitung oben erstellt wurde. Daher gehe ich auf die Installation von Xcode und MacPorts nicht mehr ein, welche für mein Tutorial benötigt werden.
Demnach muss man für die Installation erst folgenden Code ausführen:

Source Code

  1. sudo port install php5 +fastcgi +pear && sudo port install php5-mysql && sudo port install php5-xsl && sudo port install php5-gd && sudo port install php5-mbstring && sudo port install php5-iconv && sudo port install php5-curl && sudo port install php5-soap && sudo port install mysql5-server
Damit installiert man ein gutes Grundgerüst an Funktionen für PHP und MySQL.

Danach muss man erst einmal PHP in der Webserver-Konfiguration von lighttpd aktivieren. Dazu werden einfach die entsprechenden Konfigurationsdateien bearbeitet:

Source Code

  1. sudo pico /opt/local/etc/lighttpd/lighttpd.conf
  2. sudo pico /opt/local/etc/lighttpd/conf.d/fastcgi.conf
Man findet in der lighttpd.conf folgende Zeilen:

Source Code

  1. ##
  2. ## bind to a specific IP
  3. ##
  4. #server.bind = "localhost"
  5. ##
  6. ## Run as a different username/groupname.
  7. ## This requires root permissions during startup.
  8. ##
  9. server.username = "_www"
  10. server.groupname = "_www"
Display All
Hier entfernt man in Zeile 4 die # am Anfang und fügt sie in Zeile 10 und 11 hinzu, damit der Webserver mit root-Rechten läuft (ansonsten gab es bei mir ein 403 - Permission denied). Hier möchte ich nochmals zu bedenken geben, dass das nur ein Testsystem werden soll. Für ein Produktivsystem ist diese Einstellung schlecht.

In die Datei fastcgi.conf muss man folgendes hinzufügen:

Source Code

  1. fastcgi.server = ( ".php" =>
  2. ( "localhost" =>
  3. (
  4. "socket" => "/var/run/lighttpd/php-fastcgi.socket",
  5. "bin-path" => "/opt/local/bin/php-cgi"
  6. )
  7. )
  8. )
Jetzt muss man noch die php.ini selbst anpassen. Dazu muss man sie erst einmal anlegen. Es werden zwei Dateien schon mitgeliefert:
php.ini-production
php.ini-development

Im Grunde entscheiden sie sich gar nicht start, deshalb ist es egal, welche man als Basis nimmt. Für ein Produktivsystem sowieso. ;) Ich nehme in meinem Beispiel die php.ini-development. Mit einem einfachen Befehl wird sie kopiert und geöffnet:

Source Code

  1. sudo cp /opt/local/etc/php5/php.ini-development /opt/local/etc/php5/php.ini && sudo pico /opt/local/etc/php5/php.ini
Neben den gewünschten Änderungen ist es wichtig, dass folgende Änderungen in dieser Datei durchgeführt werden:
Das Semikolon vor dieser Zeile entfernen:

Source Code

  1. ;cgi.fix_pathinfo=1
Damit wird FastCGI aktiviert, womit man unter Mac OS X gut bedient ist.
Mittlerweile wichtig ist es auch, eine Zeitzone anzugeben. Demnach muss man folgende Zeile suchen:

Source Code

  1. ;date.timezone =
und zu dieser ändern:

Source Code

  1. date.timezone = Europe/Berlin
Für MySQL ist es dann noch wichtig, dass die "default_socket" entsprechend gesetzt werden. Dazu muss man folgende drei Zeilen suchen (sind nicht hintereinander, daher nach jeder Zeile einzeln suchen):

Source Code

  1. pdo_mysql.default_socket =
  2. mysql.default_socket =
  3. mysqli.default_socket =
Hier muss man jeweils hinter dem = folgendes Eintragen:

Source Code

  1. /opt/local/var/run/mysql5/mysqld.sock
Damit ist PHP erfolgreich für den Einsatz mit MySQL konfiguriert und man kann den Webserver starten, wenn man möchte.

Mit folgenden Befehlen kann man zudem das Vorhandensein von PHP als CGI-Modul überprüfen (jeweils Befehl und Ausgabe):

Source Code

  1. $ php -v
  2. PHP 5.3.10 (cli) (built: Feb 27 2012 10:50:11)
  3. Copyright (c) 1997-2012 The PHP Group
  4. Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies

Source Code

  1. php-cgi -v
  2. PHP 5.3.10 (cgi-fcgi) (built: Feb 27 2012 10:50:10)
  3. Copyright (c) 1997-2012 The PHP Group
  4. Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies

Nun fehlt noch MySQL. Das muss man erst einmal mit folgendem Befehl einrichten:

Source Code

  1. sudo mysql_install_db5
Die Ausgabe sollte in etwa die folgende sein:

Source Code

  1. WARNING: The host 'speedport_w723_v_typ_a_1_00_090' could not be looked up with resolveip.
  2. This probably means that your libc libraries are not 100 % compatible
  3. with this binary MySQL version. The MySQL daemon, mysqld, should work
  4. normally with the exception that host name resolving will not work.
  5. This means that you should use IP addresses instead of hostnames
  6. when specifying MySQL privileges !
  7. Installing MySQL system tables...
  8. OK
  9. Filling help tables...
  10. OK
  11. To start mysqld at boot time you have to copy
  12. support-files/mysql.server to the right place for your system
  13. PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
  14. To do so, start the server, then issue the following commands:
  15. /opt/local/lib/mysql5/bin/mysqladmin -u root password 'new-password'
  16. /opt/local/lib/mysql5/bin/mysqladmin -u root -h speedport_w723_v_typ_a_1_00_090 password 'new-password'
  17. Alternatively you can run:
  18. /opt/local/lib/mysql5/bin/mysql_secure_installation
  19. which will also give you the option of removing the test
  20. databases and anonymous user created by default. This is
  21. strongly recommended for production servers.
  22. See the manual for more instructions.
  23. You can start the MySQL daemon with:
  24. cd /opt/local ; /opt/local/lib/mysql5/bin/mysqld_safe &
  25. You can test the MySQL daemon with mysql-test-run.pl
  26. cd /opt/local/mysql-test ; perl mysql-test-run.pl
  27. Please report any problems with the /opt/local/lib/mysql5/bin/mysqlbug script!
Display All
Wie hier gewünscht, sollte man danach folgenden Befehl ausführen, um das Passwort zu ändern:

Source Code

  1. /opt/local/lib/mysql5/bin/mysqladmin -u root password 'new-password'
Das "new-password" wäre dann das neue Passwort.

Um den Start und das Stoppen von MySQL zu vereinfachen, kann man noch folgende Aliases eintragen:

Source Code

  1. alias mysqlstart='sudo /opt/local/etc/LaunchDaemons/org.macports.mysql5/mysql5.wrapper start';
  2. alias mysqlstop='sudo /opt/local/etc/LaunchDaemons/org.macports.mysql5/mysql5.wrapper stop';
  3. alias mysqlrestart='sudo /opt/local/etc/LaunchDaemons/org.macports.mysql5/mysql5.wrapper restart';
Damit kann man MySQL mit folgendem Befehl starten: mysqlstart
Mit folgendem Befehl beenden: mysqlstop
Und mit folgendem Befehl neu starten: mysqlrestart
Die Befehle kann man natürlich auch beliebig ändern, wie man es selbst gerne möchte.

Nun kann man den MySQL-Server auch starten und mit folgendem Befehl überprüfen, ob alles funktioniert:

Source Code

  1. mysqladmin5 -u root -p ping
Die Ausgabe sollte dann folgendermaßen sein:

Source Code

  1. $ mysqladmin5 -u root -p ping
  2. Enter password:
  3. mysqld is alive
Man sollte sich zudem mit folgendem Befehl nun über die Konsole in MySQL einloggen können:

Source Code

  1. mysql5 -u root -p

Ich hoffe, dass dieses Tutorial hilfreich ist!
Falls Fragen aufkommen oder es Probleme gibt, einfach melden. Es ist relativ schwer, alle Änderungen durch den einfachen Log der Konsole (vor allem in den Dateien) später nochmals nachzuvollziehen.
About the Author
Ich bin Webentwickler in Stuttgart und administriere Server seit vielen Jahren. In diesem Blog erstelle ich hauptsächlich Tutorials für andere Webentwickler, Webdesigner und Serveradministratoren.
-------------------------------------------------------------------------------------------------------------------------------------
I’m a web developer in Stuttgart, Germany, and server administrator since many years. This blog mainly contains a tutorial set for other web developer, web designer and server administrators.

715 times read

Comments 0

There are not any items at the moment.

This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.