Apache2 mit SSL, suExec und PHP

Installation von Apache2 mit SSL, suExec und PHP im Schnelldurchlauf.


HP: http://www.apache.org/ und http://www.php.net/

Vorarbeit; den User anlegen:
In /etc/passwd: www:x:80:80:Apache Webserver:/usr/local/apache2:/bin/false
In /etc/shadow: www:*:12433:0:99999:7:::
In /etc/groups: www:x:80:

Zuerst wird der Apache2 installiert:
/usr/local/src # wget
/usr/local/src # tar xzf httpd-2.2.2.tar.gz
/usr/local/src # cd httpd-2.2.2
/usr/local/src/httpd-2.2.2 # ./configure –enable-mime-magic –enable-vhost-alias –enable-headers –enable-ssl –enable-rewrite –enable-so –enable-suexec –with-suexec-uidmin=1000 –with-suexec-gidmin=1000 –enable-authn-dbd –with-mpm=worker
/usr/local/src/httpd-2.2.2 # make && make install && make distclean

Ggf. sind die Compileoptionen
–enable-dav (z.B. als Ersatz für FTP oder als „Weblaufwerk“ Braucht folgende
Module: mod_dav,mod_dav_fs,mod_setenvif,mod_alias,mod_auth_digest,mod_authn_file)
–enable-unique-id (per-request unique ids)
–enable-usertrack (user-session tracking)
–enable-deflate („mod_gzip“; ausliefern von komprimierten webseiten; spart Traffic geht aber zulasten der CPU)
für den einen oder anderen noch interessant.

Anschließend muss ein SSL-Zertifikat für den Apachen her.
Siehe HowTo bau SSL Zertifikate

Anschließend PHP:
Für PHP wird zustzlich bison, m4, flex, autoconf, automake und mysql gebraucht.
(Für MySQL installations HowTo gehe man zu: MySQL vom scratch)
/usr/local/src # wget http://de3.php.net/get/php-4.4.2.tar.gz/from/this/mirror
/usr/local/src # tar xzf php-4.4.2.tar.gz
/usr/local/src # cd php-4.4.2
/usr/local/src/php-4.4.2 # ./configure –with-apxs2=/usr/local/apache2/bin/apxs –with-mysql –with-openssl –enable-safe-mode
/usr/local/src/php-4.4.2 # make && make install
/usr/local/src/php-4.4.2 # cp php.ini-recommended /usr/local/lib/php.ini
/usr/local/src/php-4.4.2 # ln -s /usr/local/lib/php.ini /etc/php.ini

In der httpd.conf sollte danach folgendes zu finden sein:
/usr/local/src/php-4.4.2 # grep php /usr/local/apache2/conf/httpd.conf

LoadModule php4_module modules/libphp4.so
DirectoryIndex index.html index.shtml index.php index.php3
<Files ~ „\.(cgi|shtml|phtml|php3?)$“>
AddType application/x-httpd-php .php .phtml
AddType application/x-httpd-php-source .phps

Wenn was fehlt, nachtragen.

Sollte das deflate-modul benutzt werden muss in die httpd.conf händisch noch folgende Zeile eingetragen werden.

AddOutputFilterByType DEFLATE text/html

Im großen und ganzen wars das auch schon.
Es fehlt nur noch das Konfigurieren von PHP und Apache2. Da dies aber den Rahmen
hier mehr als nur sprengen würde und jeder da so seine eigenen Wünsche hat lasse
ich dies hier weg.

Nach dem Start sollte man mit

$ telnet localhost 80
Trying 127.0.0.1…
Connected to localhost.
Escape character is ‚^]‘.
HEAD / HTTP/1.0

HTTP/1.1 403 Forbidden
Date: Tue, 09 May 2006 13:13:41 GMT
Server: Apache/2.2.2 (Unix) mod_ssl/2.2.2 OpenSSL/0.9.7d PHP/4.4.2
Connection: close
Content-Type: text/html; charset=iso-8859-1

Connection closed by foreign host.

belohnt werden.

 

PS: Beim Apache 2.2.4 wollte er komischerweise noch „–with-included-apr“ haben…
Mein Configure (mit WebDAV) sah also so aus:
./configure –enable-authn-dbd –enable-deflate –enable-mime-magic –enable-vhost-alias –enable-headers –enable-usertrack –enable-unique-id –enable-ssl –enable-dav –enable-dav-fs –enable-dav-lock –enable-auth-digest –enable-rewrite –enable-so –enable-cgi –enable-suexec –with-suexec-uidmin=1000 –with-suexec-gidmin=1000 –with-included-apr
Rest ging dann aber wie oben beschrieben.