Apache, PHP5, SSL, eAccelerator und Zend

Einen Webserver braucht man für die verschiedensten Dinge. Ich brauche ihn für meine Webseiten (unteranderem diese hier *g*), Webmail etc. Zudem werden wir SSL mit einbinden, sodass wir sichere Verbindungen aufbauen können. Außerdem werden wir PHP5 in der aktuellsten Version, sowie den eAccelerator und Zend Optimizer installieren. Zusätzlich werden wir noch den Apache ein bisschen absichern, Stichwort mod_security und ähnliches. Gehen wir es also an:

Ich setze für diesen Schritt voraus, dass du eine frische Jail hast, in der wir unseren Webserver aufsetzen. Zudem sollte das Verzeichnis '/usr/ports' aus dem Hostsystem in die Jail gemountet sein. Alternativ kannst du auch ein eigenes Ports-Verzeichnis erstellen und den Portstree dort extrahieren.

  1. Zunächst mounten wir den Portstree. Anschließend wechseln wir in das Verzeichnis '/usr/ports/www/apache13-modssl' und installieren den Apacheserver:

    # make install clean

    Nicht vergessen die nötigen Einträge in der "/etc/rc.conf" zu machen:

    apache_enable="YES"
    apache_flags="-DSSL"

  2. Dann installieren wir das Modul 'mod_security' nach. Das findet ihr in '/usr/ports/www/mod_security':

    # make install clean
  3. Noch vor dem Konfigurieren installieren wir PHP5. Das findest du im Verzeichnis '/usr/ports/lang/php5':

    # make config

    In dem erscheinenden Menü
    • aktivieren wir "Build Apache Module",
    • aktivieren "zend Multibyte Support" und
    • deaktivieren IPv6-Unterstützung.

    Mit dem Befehl

    # make install clean

    installieren wir nun PHP5. Bei der gettext-Konfiguration aktivieren wir nichts.
  4. Wir nehmen noch ein paar Einstellungen in der '/usr/local/etc/php.ini' vor. Erklärungen findest du im Netz oder auf der Webseite von PHP. Folgende Einstellungen bieten sehr hohe Sicherheit, können aber bei manchen Skripten zu Problemen führen:
    • safe_mode = On
    • safe_mode_gid = Off
    • open_basedir = /www/vhosts/www.domain1.de, /www/vhosts/www.domain2.de
    • safe_mode_exec_dir = /www/vhosts/www.domain1.de, /www/vhosts/www.domain2.de
    • expose_php = Off
    • register_globals = Off
    • display_errors = Off
    • log_errors = On
    • error_log = /var/log/php_errors
    • allow_url_fopen = Off
  5. Jetzt müssen wir noch ein Zertifikat für unseren Server erstellen. Dafür öffnen wir die SSL-Shell durch folgenden Befehl:

    # openssl

    Anschließend geben wir nacheinander folgende Befehle ein:

    openssl> genrsa -des3 -out server.key 1024
    openssl> req -new -key server.key -out server.csr
    openssl> x509 -req -days 365 -in ~/server.csr -signkey ~/server.key -out ~/server.crt

  6. Mit dem Befehl 'exit' können wir die SSL-Shell wieder beenden. Jetzt müssen wir die neu erstellten Zertifikate bereitstellen, dass der Apache-Server diese auch findet:

    # cp ~/server.key /usr/local/etc/apache/ssl.key/

    # cp ~/server.crt /usr/local/etc/apache/ssl.crt/
  7. Optional: Falls du während dem Erstellungsprozess ein Passwort für die Verschlüsselung angegeben hast, kannst du den Apache nicht automatisch beim Systemstart starten lassen. Klar, er braucht ein Passwort. Du kannst dieses aber im Nachhinein auch entfernen:

    # cd /usr/local/etc/apache/ssl.key

    # cp server.key server.key.orig

    # openssl rsa -in server.key.orig -out server.key
  8. Optional: Da du das Zertifikat selber erstellt hast, wird jeder Besucher deiner Website gefragt, ob er diesem vertrauen möchte. Du kannst, allerdings ist das nicht empfohlen wenn du wichtige Daten über diese Webseite geschickt bekommst, das Zertifikat auch selber signieren:

    # openssl x509 -in server.csr -out server.cert -req -signkey server.key -days 365

Apache konfigurieren »
Einen Kommentar hinzufügen

Einen Kommentar hinzufügen

This is a captcha-picture. It is used to prevent mass-access by robots. (see: www.captcha.net)
Code im diesem Bild:
Ihr Name(*):
Kommentar(*):
 
  • June 29, 2009, 5:10 pm - Benedikt

    Hallo Peter,
    Dieser Befehl wird nicht funktionieren. make wird mit dem Hinweis "Software already installed - use make deinstall and make reinstall instead" oder so ähnlich.

    PHP updatest du wie jede andere Software auch: http://serverzeit.de/FreeBSD/Software-updaten/

    Tipp: Wenn du eAccelerator installiert hast, sollest du dieses ebenfalls re-kompilieren. Ich hatte manchmal Probleme nach einem PHP-Update.

    Grüsse,
    Benedikt

  • June 29, 2009, 5:01 pm - Peter

    Wie kann ich eigentlich PHP updaten?

    Einfach ins Verzeichnis /usr/ports/lang/php5 gehen und make install clean aufrufen?

  • February 10, 2008, 11:06 am - Benedikt

    @Martin: Ich arbeite gerade an einem lighttpd-Tutorial, dann ist das vielleicht eine gute Alternative zum Apache2. Aber vielleicht kommt noch was zum Apache2, dann könnte ich das mit dem Tomact-Tutorial für Peter kombinieren ;-) Tomcat und lighttpd funktioniert wohl nicht, hab aber nicht tiefgehender recherchiert...

    @Peter: Ich arbeite dran...

  • December 1, 2007, 2:02 pm - Peter

    Wäre auch nett zu erklären, wie Tomcat hinter Apache installiert wird. Ich suche noch immer eine Anleitung ;)

  • October 8, 2007, 3:39 pm - Martin

    Vorzugsweise solltest du auch eine Apache2 howto erstellen. Afiak ist apache1 dying.