Apache mit php5 installieren ============================ .. |date| date:: .. sidebar:: Info .. image:: ../images/logo-freebsd.png Alle Programme in diesem Artikel werden mit `ports-mgmt/portupgrade `__ installiert, welches nicht Bestandteil des FreeBSD-Basis-Systems ist. Weiter Information enthält der Artikel `portupgrade `__. Dieser Artikel beschreibt die Installation des populären Webservers `www/apache2 `__ mit `lang/php5 `__-Modulen. Installation von Apache ----------------------- Die Installation von Apache2 wird einfach mit :: # portinstall apache2 gestartet. Um zu sehen, ob Apache2 schon funktioniert, kann man Apache2 mit der normalen Default-Konfiguration starten und schauen, ob er auf Port 80 Antwort gibt: :: # apachectl start Jetzt kann in einem Web-Browser die IP-Adresse des Servers eingeben werden und die Apache Default-Seite sollte erscheinen. Installation von PHP5 --------------------- Bei der ersten Installation von php5 wird die unten abgebildete Maske angezeigt, bei der man angeben kann, welche Module zu php5 installiert werden sollen. Im Prinzip können die Default-Einstellungen übernommen werden. Wichtig ist die Einstellung **[X] APACHE Build Apache Module**. Dieser Eintrag muß aktiviert werden. |php5-config70.png| Die Einstellungen, welche Module zu php5 installiert werden, wird unter "options" im Verzeichnis **/var/db/ports/php5/** gespeichert. Später können die Einstellungen auch mittels :: # make config geändert werden. Nach jeder Änderung ist der Port allerdings auch neu zu kompilieren. Mit :: # make rmconfig kann die Default-Einstellung des Systems wieder hergestellt werden. Mir ist es schon passiert, dass dieses File plötzlich weg war und beim upgraden von php5 plötzlich Module fehlten. Deshalb tut man sich gut darin, dieses File zu backupen. Mein options File sieht folgendermassen aus: :: vi /var/db/ports/php5/options _OPTIONS_READ=php5-5.0.3_1 WITH_APACHE2=true WITHOUT_DEBUG=true WITH_IPV6=true WITH_BCMATH=true WITH_BZ2=true WITH_CALENDAR=true WITH_CURL=true WITH_FILEINFO=true WITH_FTP=true WITH_GD=true WITH_GETTEXT=true WITH_GMP=true WITH_IMAGICK=true WITH_IMAP=true WITH_LDAP=true WITH_MCRYPT=true WITH_MCVE=true WITH_MHASH=true WITH_MING=true WITH_MNOGOSEARCH=true WITH_MYSQL=true WITH_NCURSES=true WITH_OPENSSL=true WITH_PCRE=true WITH_PDF=true WITH_POSIX=true WITH_PSPELL=true WITH_SESSION=true WITH_SNMP=true WITH_SOCKETS=true WITH_SYSVMSG=true WITH_SYSVSEM=true WITH_SYSVSHM=true WITH_TIDY=true WITH_TOKENIZER=true WITH_WDDX=true WITH_XML=true WITH_ZIP=true WITH_ZLIB=true >wq Ist das options-File vorhanden, kann php5 ganz normal installiert werden: :: # cd /usr/ports/lang/php5 # portinstall $PWD Konfiguration von httpd.conf ---------------------------- Die Datei **/usr/local/etc/apache2/httpd.conf** enthält die Konfiguration von Apache2. Viele Leute behalten die default-Einstellungen drin, was nicht empfehlenswert ist. Apache2 gibt mit diesen Einstellungen sehr viele Informationen an potenzielle Hacker heraus. Deshalb ist es am vernünftigsten, seine Apache2-Konfiguration klein zu halten und alles überflüssige über Bord zu werfen. :: # ================================================= # Basic settings # ================================================= ServerRoot "/usr/local" PidFile /var/run/httpd.pid # ================================================= # Performance settings # ================================================= Timeout 300 KeepAlive On MaxKeepAliveRequests 100 KeepAliveTimeout 15 StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxClients 150 MaxRequestsPerChild 0 # ================================================= # General settings # ================================================= Listen 80 User www Group www ServerAdmin webmaster@whatever.com UseCanonicalName On ServerSignature Off HostnameLookups On ServerTokens Prod DocumentRoot "/data/www/lowfat.fat/www" DirectoryIndex index.html index.html.var index.htm index.php # ================================================= # Modules to be included # ================================================= # Notwendige Module, die wir benötigen LoadModule access_module libexec/apache2/mod_access.so LoadModule auth_module libexec/apache2/mod_auth.so LoadModule include_module libexec/apache2/mod_include.so LoadModule log_config_module libexec/apache2/mod_log_config.so LoadModule mime_magic_module libexec/apache2/mod_mime_magic.so LoadModule mime_module libexec/apache2/mod_mime.so LoadModule status_module libexec/apache2/mod_status.so LoadModule cgi_module libexec/apache2/mod_cgi.so LoadModule dir_module libexec/apache2/mod_dir.so LoadModule userdir_module libexec/apache2/mod_userdir.so LoadModule alias_module libexec/apache2/mod_alias.so LoadModule rewrite_module libexec/apache2/mod_rewrite.so LoadModule php5_module libexec/apache2/libphp5.so #LoadModule external_auth_module libexec/apache2/mod_auth_external.so # ================================================= # Access control # ================================================= # Files mit dem Namen .htaccess können in Ordner # reingetan werden, die unerlaubte Personen davon # abhalten, das innere dieses Ordners anzusehen. Options FollowSymlinks Includes AllowOverride Order deny,allow Deny from all AccessFileName .htaccess Order allow,deny Deny from all # ================================================= # MIME encoding # ================================================= TypesConfig etc/apache2/mime.types DefaultType text/plain AddEncoding x-compress Z AddEncoding x-gzip gz tgz AddType application/x-tar .tgz AddType application/x-httpd-php .php .htm .html AddType application/x-httpd-php-source .phps # ================================================= # Logs # ================================================= # Definiert, wie das Log Format aussieht. Hier # sollte man alles in Ruhe lassen und nichts # verändern. LogLevel warn LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%h %l %u %t \"%r\" %>s %b" common LogFormat "%{Referer}i -> %U" referer LogFormat "%{User-agent}i" agent ErrorLog /var/log/httpd-error.log # ================================================= # Virtual hosts # ================================================= # Definiert, auf welcher IP Adresse und auf # welchem Port Apache Verbindungen entgegen # nimmt. Hier musst du deine IP Adresse mit # einem weiteren sollten Eintrag angeben. NameVirtualHost 127.0.0.1:80 #NameVirtualHost >80 # Definiert, die Rechte für das Hauptverzeichnis # wo sich all eure Webverzeichnisse drin befinden. Options Indexes FollowSymLinks AllowOverride All Order allow,deny Allow from all # Die Konfiguration meiner Vhosts habe # ich in separaten Files gespeichert. # Include *.conf besagt, dass alle Files in # diesem Verzeichnis eingelesen werden, die # die mit der Endung .conf aufhören Include etc/apache2/Includes/*.conf Include etc/apache2/Vhosts/*.conf Konfiguration eines Virtuellen Hosts ------------------------------------ Im Verzeichnis **/usr/local/etc/apache2** muss jetzt noch das Verzeichnis Vhosts angelegt werden. Nach dem Anlegen dieses Verzeichnisses kann nun der ersten Vhost erstellt werden. Bei muß anstelle von 127.0.0.1 die IP-Adresse des Webservers angeben werden. :: # mkdir /usr/local/etc/apache2/Vhosts # cd /usr/local/etc/apache2/Vhosts # vi www.test.com.conf ServerAdmin webmaster@localhost DocumentRoot /data/www/test.com/www ServerName www.test.com ErrorLog /data/logs/www/www.test.com.err.log CustomLog /data/logs/www/www.test.com.acc.log common >wq Die Verzeichnisstruktur ----------------------- Für mich hat sich am besten bewährt, folgende Verzeichnisstruktur zu verwenden: :: /data -> Alle Daten /data/www -> Alle Webseiten /data/www/test.com -> Domain Name /data/www/test.com/www -> Verzeichnis wo die Webseiten drin sind /data/logs/www/.err.log -> Hier werden die Fehler reingeschrieben /data/logs/www/.acc.log -> Hier werden die Statistik Daten reingeschrieben Du kannst das natürlich nach deinen Vorstellungen ordnen. Apache neu starten ------------------ Da Apache sämtliche Konfigurationsdaten im Speicher hält, merkt er nicht selbstständig, wenn ein neuer Vhost Eintrag dazu gekommen ist. Das heisst, nach jeder Änderung der Konfiguration oder nach Erstellen oder Löschen eines Vhosts muss Apache neu gestartet werden. Meine Empfehlung ist, zuerst die Konfiguration zu testen und erst dann neu zu starten: :: # apachectl configtest Syntax OK # apachectl restart **apachectl configtest** prüft, ob es Fehler in der Konfiguration von Apache gibt. Wenn ja, werden die Fehler angezeigt. Ist die Konfiguration fehlerfrei (syntaktisch), kommt die Meldung "Syntax OK". Bei "Syntax OK" kann Apache ohne Probleme neu gestartet werden. Ist dies nicht der Fall, wird Apache beim neustart höchstwahrscheinlich Abstürzen. Note Bummibaer: FreeBSD Apache HTTP Accept Filter Error The resolution to the above problem is to a accf_http module, which function is to buffer incoming connections until a certain complete HTTP requests arrive, into FreeBSD kernel by using kernel linker. -> /boot/loader.conf: accf_http_load=”YES” -> manual load: kldload accf_http - Default Settings: :: accf_data_load=”NO” # Wait for data accept filter accf_http_load=”NO” # Wait for full HTTP request accept filter .. |php5-config70.png| image:: images/php5-config70.png * :ref:`genindex` Zuletzt geändert: |date|