In meinem Beitrag „[post id=“1562″]SVN SSH post-commit checkout hook[/post]“ habe ich gezeigt, wie man ein Projekt mit SVN automatisch in einem Webverzeichnis auschecken kann. Das dient dazu, um den aktuellen Entwicklungsstand über einen Web-Server verfügbar zu machen.
Damit das auch geht, muss ein virtueller Host definiert werden. Wenn es sich um ein Web-Projekt handelt, dass mit dem Zend Framework erstellt wurde, dann muss man auch noch das Zend Framework auf dem Server installieren.
Wie das geht, zeige ich am Beispiel eines Debian Servers mit einem Apache-Webserver.
Virtuellen-Host anlegen
Struktur:
Das Zend-Webprojekt liegt in: /srv/www/st38
Das Projekt soll erreichbar sein über: www.st38.domain.de
Konfigurationsdatei für virtuellen Host:
/etc/apache2/sites-available/st38.domain.de
1 2 3 4 5 6 7 8 9 10 11 | <VirtualHost *:80> ServerName st38.domain.de ServerAdmin webmaster@domain.de DocumentRoot "/srv/www/st38/public" <Directory "/srv/www/st38/public"> Options Indexes FollowSymLinks Includes ExecCGI AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost> |
Einrichtung:
1 2 3 | sudo touch /etc/apache2/sites-available/st38.domain.de sudo a2ensite st38.domain.de sudo /etc/init.d/apache2 reload |
- Datei für Virtuellen Host anlegen (Quelltext, siehe oben)
- Virtuellen Host aktivieren
- Web-Server-Konfiguration neu laden (damit die Änderungen aktiv werden)
Zend Framework installieren
Ohne die Installation des Zend Frameworks wird es beim Aufruf der Webseite zu folgender Fehlerausgabe kommen:
Warning: require_once(Zend/Application.php) [function.require-once]: failed to open stream: No such file or directory in /srv/www/st38/public/index.php on line 18
Fatal error: require_once() [function.require]: Failed opening required ‚Zend/Application.php‘ (include_path=’/srv/www/st38/library:.:/usr/share/php:/usr/share/pear‘) in /srv/www/st38/public/index.php on line 18
Das Problem liegt daran, das Zend nicht erfolgreich geladen werden konnte bzw. nicht dem PHP-„Include Path“ bekannt ist.
Installation:
1 2 3 4 5 6 7 8 | cd /opt sudo mkdir ZendFramework cd ./ZendFramework sudo svn co http://framework.zend.com/svn/framework/standard/tags/release-1.10.7/ sudo ln -s /opt/ZendFramework/release-1.10.7/library /opt/ZendFramework/ vim /etc/php5/apache2/php.ini sudo /etc/init.d/apache2 reload sudo chown -R www-data:www-data /opt/ZendFramework |
- In den Ordner „/opt“ wechseln
- Ordner „ZendFramework“ erstellen
- Neuste Framework-Version über SVN abrufen.
- Symbolischen Link für die „Library“ der installierten ZF-Version anlegen
- php.ini bearbeiten und folgende Zeile hinzufügen:
include_path = ".:/opt/ZendFramework/library"
- Web-Server-Konfiguration neu laden
- Apache-Benutzer als neuen Besitzer eintragen
Hinweis: „release-1.10.7“ kann durch neuere (older ältere) Versionen ersetzt werden
Der symbolische Link ist dafür da, dass bei Installation einer neuen Version nicht die „php.ini“ bearbeitet werden muss. Stattdessen muss nur der symbolische Link neu erstellt werden. Man kann auf den symbolischen Link und die Änderung der „php.ini“ auch komplett verzichten. Allerdings müssen dann folgende Zeilen in der „index.php“ des ZF-Projektes hinzugefügt werden:
/srv/www/st38/public/index.php
1 2 3 4 5 | // Pfad zur ZF-Library: $s_include_path = "/opt/ZendFramework/library"; // PHP-Include-Pfad erweitern: set_include_path($s_include_path . PATH_SEPARATOR . get_include_path()); |
Statt:
include_path = „.:/opt/ZendFramework/library“
würde ich
include_path = „/opt/ZendFramework/library“
in die php.ini einfügen – die muss übrigens nicht unter /etc/php5/apache liegen, sondern kann je nach Einstellungen auch eine andere (bei mir /etc/php5/cgi/) sein.