live from China::Hong Kong S.A.R. (中国::香港特別行政區)

FreeBSD, PHP und PostgreSQL

Ich mal ein Wochenende so nebenbei mit dem Thema beschaeftigt: Wie installiere ich einen FreeBSD server, PHP, Apache und PostgreSQL von Grundauf, bis es einsatzfaehig ist. Ich benutzte also:

OS: FreeBSD 6.0 bootonly(enthaelt nicht base/crypt packages – miniinst gibt es nicht mehr)

Bei der Installation des Betriebssystems sollte die Ports-Collection mit installiert werden (kann aber auch nachtraeglich ueber sysinstall in System geholt werden).

Nachdem das OS (a.k.a. Betriebssystem) installiert wurde, koennen die entsprechenden Ports (a.k.a. Programme) installiert werden. Hierbei werden folgende benoetigt:

  1. PostgreSQL Server 7.4.x
  2. PHP5-pgsql-5.0.x (Abhaengige Ports: Apache 2.0.x (bei der Installation wird gefragt ob Apache2 support benutzt werden soll. Wer das will, kann das aktivieren, wer nicht, der bekommt 1.3 installiert.), PostgreSQL Client 7.4.x, PHP 5.0.x (Ist eigentlich keine richtige Abhaengigkeit, da PHP 5.0.x in diesem Fall nur mit dem PostgreSQL flag kompiliert wird.))
  3. phppgadmin (optional, zum komfortablen Verwalten der PostgreSQL Datenbank ueber ein Webinterface)

Hier dann mal die kurze Befehls-HowTo:

/*user login*/

> su
Password:
# cd /usr/ports/databases/postgresql74-server/
# make install clean

/* den Installationshinweisen folgen und/oder warten */
/* -- Installation beendet -- */

# cd /usr/ports/databases/php5-pgsql/
# make install clean

/* den Installationshinweisen folgen und/oder warten */
/* ACHTUNG: Wer Apache2 will wird hier gefragt und sollte ein Kreuz an der richtigen Stelle machen */
/* -- Installation beendet -- */

# cd /usr/ports/databases/phppgadmin/
# make install clean

/* den Installationshinweisen folgen und/oder warten */
/* -- Installation beendet -- */

So, damit waere alles auf dem Server, was gebraucht wird. Nun muss das nur noch zum Laufen gebracht werden:

Apache2:

# ee /usr/local/etc/apache2/httpd.conf

/* ueberpruefen ob "ServerName 127.0.0.1" schon eingetragen ist */


# ee /etc/hosts

127.0.0.1 localhost localhost.my.domain [DEIN_SERVER_NAME]

Starten des Apache2 durch:

# /usr/local/sbin/httpd -k start

Dies sollte natuerlich mit einem Browser von einem anderen Rechner aus getestet werden (http://[server_ip]). Beispiel:

Damit der Apache2 auch automatisch beim Start des Servers hochfaehrt, sollte folgendes gemacht werden:

# echo apache2_enable=\"YES\" >> /etc/rc.conf

ausfuehren.

PHP5:
In

# ee /usr/local/etc/apache2/Includes/php.conf

folgendes eintragen:

<ifmodule mod_php3.c\>
AddType application/x-httpd-php3 .php3
AddType application/x-httpd-php3-source .php3s
</ifmodule>
<ifmodule mod_php5.c\>
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
</ifmodule>

Die soeben erstellte Datei php.conf wird automatisch an die httpd.conf des Apache angehangen. Das sollte schon alles gewesen sein. Um die PHP-Funktionalitaet zu testen, folgendes tun:

# ee /usr/local/www/data/phpinfo.php

Darin eintragen:

<?php
phpinfo();
?\>

Und nun noch:

# chmod 644 /usr/local/www/data/phpinfo.php

um die richtigen Rechte sicherzustellen.

Ein Blick auf den Server (http://[server_ip]/phpinfo.php) sollte die PHP info Seite zeigen. Beispiel:

PostgreSQL:
Initialisieren des Servers mit:

# su -l pgsql -c initdb

Starten des Servers mit:

# /usr/local/etc/rc.d/010.pgsql.sh start

Einen Benutzer (kozen bitte aendern) auf dem Server anlegen mit:

# su pgsql
$ /usr/local/bin/createuser kozen

Das war eigentlich schon alles. Damit der PostgreSQL Server auch beim Reboot wieder hochfaehrt, noch folgendes eingeben:

# echo postgresql_enable=\"YES\" >> /etc/rc.conf

phppgadmin (optional):
Hier muss eigentlich nur noch gecheckt werden, ob bei dem Befehl

# cat /usr/local/etc/php/extensions.ini

die Zeile

extension=session.so

mit ausgegeben wird. Wenn ja, gut. Wenn nein, bitte eintragen:

# echo "extension=session.so" >> /usr/local/etc/php/extensions.ini

Nun kann auch der phppgadmin im Browser (http://[server_ip]/phpPgAdmin/index.php) getestet werden. Es sollte ein login kommen, bei dem man sich als Benutzer (PostgreSQL user, der vorher angelegt wurde) anmelden kann. Da noch kein Passwort fuer diesen gesetzt ist, sollte das die erste Aktion sein. Beispiel:

Viel Spass beim SQLen. Alle Angaben ohne Gewaehr.