Linux in a shell – a Symfony Story

Gestern installierte ich mal wieder Linux. Soweit ist das nichts besonderes. Diesmal habe ich Linux in einer virtuellen Umgebung auf meinem Windows 7 Rechner installiert. Für mich ist das n sofern besonders, da ich eigentlich genug Hardware hier stehen habe auf der ich testen kann. Sogar ein fertiger <a href="http://blog.guin.de/2010/05/16/mini-pc/" target="_blank">kleiner Linuxserver</a> ist werkelt hier im Netz.<br />
<br />
Dank <a href="http://www.virtualbox.org/" target="_blank">Virtualbox</a> ist das Einrichten einer virtuellen Installation auch kein Problem. Der Einrichtungsassistent führt einen Schritt für Schritt zum Ziel. Eigentlich musste ich nur noch die Linuxinstallations-CD einlegen und schon wurde Linux in der zuvor erstellten virtuellen Umgebung installiert. Installiert habe ich ein Debian 5.0 in der Net-Install-Variante.  Diese Minimalversion hat den Vorteil, dass wirklich nur das nötigste installiert wird. Das System ist also nicht von vorn herein mit nie benutzten Modulen, Bibliotheken und Programmen belastet. Auf den Desktop kann ich auch gut verzichten. Die Konsole reicht für meinen Anwendungsfall. Der Nachteil ist, man muss alles selber installieren. Mit den modernen Paketverwaltungen der heutigen Linux Distributionen kann das auch jeder. Bei Debian ist dies "aptitude".<br />
<br />
Warum wollte ich Linux installieren?<br />
Ich möchte mich mit dem <a href="http://www.symfony-project.org/" target="_blank">PHP-Framework Symfony</a> beschäftigen. Da ich mir auch noch in den Kopf gesetzt habe, mit der <a href="http://symfony-reloaded.org/" target="_blank">2.0 Betaversion von Symfony</a> anzufangen, brauchte ich ein sehr aktuelles PHP. Mindestens PHP 5.3.2. Bei <a href="http://www.apachefriends.org/de/index.html" target="_blank">Apachefriends.org</a> gab es für Windows aber nur PHP 5.3.1. Das wäre sonst der einfachste Weg gewesen, einen Webserver für Windows aufzusetzen. Dann hätte ich gleich loslegen können. An <a href="http://windows.php.net/download/" target="_blank">php.net mit den neuen Windows Binaries</a> hatte ich zu dem Zeitpunkt noch nicht gedacht.  Die virtuelle Technik hat mich auch gereizt und ich wollte das schon länger mal ausprobieren. Nun war die Gelegenheit.<br />
<br />
Schön und gut, aber wie greife ich vom Hostsystem auf das Gastsystem zu? Eigentlich sollte über die ipv4 Adresse <a href="http://192.168.56.101/">http://192.168.56.101</a> im Browser auf die Webserverinhalte zugegriffen werden können. Ein "it works!" soll im Browser erscheinen. Auch wenn ich mit <a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/" target="_blank">Putty</a> oder <a href="http://winscp.net/eng/docs/lang:de" target="_blank">WinSCP</a> auf das Gastsystem zugreifen wollte, konnte keine Verbindung aufgebaut werden. Der Netzwerkadapter von Virtualbox ist in der Standardeinstellung auf <a href="http://de.wikipedia.org/wiki/Network_Address_Translation" target="_blank">NAT</a> gestellt. Es müssen nun noch ein paar Einstellungen vorgenommen werden, damit eine Kommunikation stattfinden kann. Auf Virtualbox gibt es dafür eine Anleitung.<br />
<a href="http://www.virtualbox.org/manual/ch06.html#network_nat">http://www.virtualbox.org/manual/ch06.html#network_nat</a><br />
<pre>VBoxManage modifyvm "Linux" –natpf1 "ssh,tcp,,22,,22"<br />
VBoxManage modifyvm "Linux" –natpf1 "http,tcp,,80,,80"</pre><br />
Beide Zeilen habe ich in der Winsows-Shell (cmd) ausgeführt. "Linux" habe ich die virtuelle Installation in Virtualbox genannt. Die obere Zeile sorgt dafür, dass ich mit Putty und WinSCP auf normale Weise zugreifen kann (nachdem ssh installiert wurde "aptitude install ssh"). Die zweite Zeile bringt nun die gewünschten Browserergebnisse. Ein <a href="http://192.168.56.101/">http://192.168.56.101</a> im Browser bringt mir nun ein "it works!".<br />
<br />
PHP 5.3.3 musste ich für Linux kompilieren. Von php.net habe ich mir den Sourcecode auf den virtuellen Linuxserver geladen. "wget http://www.php.net/get/php-5.3.3.tar.gz/from/de.php.net/mirror" in meinem Fall. Wie man diese gepackte Datei entpackt, musste ich erst einmal nachschauen. <a href="http://www.linux-fuer-alle.de/doc_show.php?docid=76">http://www.linux-fuer-alle.de/doc_show.php?docid=76</a> da wurde ich fündig. Nach dem Entpacken ging es darum, das Kompilieren vorzubereiten.<br />
<br />
So sieht meine configure-Anweisung aus:<br />
<pre>./configure' '–with-mysql' '–with-apxs2=/usr/bin/apxs2' '–enable-mbstring' '–with-xsl' '–disable-short-tags</pre><br />
Brach gleich mit einem Fehler ab. Der Kompiler fehlt. "aptitude install gcc". Noch einmal. Es fehlen nun mysql-server, mysql-client, libmysqlclient-dev und xsl.<br />
"aptitude mysql-server"<br />
"aptitude mysql-client"<br />
"aptitude mysql-libmysqlclient-dev"<br />
"aptitude install apache2-dev"<br />
"aptitude install php5-xsl"<br />
"aptitude install libxslt-dev"<br />
<br />
configure lief dann erst einmal ohne Fehler durch. Nun noch das make. Wieder Fehler. Es war kein make installiert.<br />
"aptitude install make"<br />
"aptitude install libtool" (für "libtool — finish /PFAD/libs")<br />
<br />
Nachdem der Apache Webserver die Konfigurationsdateien neu eingelesen hat, stand PHP 5.3.3 zur Verfügung. "/etc/init.d/apach2 restart"<br />
<br />
Symfony auf den Server laden und entpacken.<br />
<a href="http://symfony-reloaded.org/code">http://symfony-reloaded.org/code</a><br />
Die Sandbox hat zum Testen alles dabei. Auch ein Skript mit dem man die Funktionsfähigkeit von Symfony überprüfen kann. Die Datei heisst check.php<br />
Symfony habe ich in den Unterordner sym vom Webrootordner gepackt. Meine Adresse zu check.php lautet also http://192.168.56.101/sym/web/check.php<br />
Dies kann bei jedem anders sein.<br />
<br />
Die Symfony Check-Seite sieht bei mir nun so aus:<br />
<a href="http://blog.guin.de/wp-content/uploads/2010/07/symfony.png"><img class="alignnone size-medium wp-image-2348" title="symfony" src="http://blog.guin.de/wp-content/uploads/2010/07/symfony-257×300.png" alt="" width="257" height="300" /></a><br />
<br />
<a href="http://eaccelerator.net/wiki/InstallFromSource" target="_blank">eAccelerator</a> habe ich auch noch installiert. Das ändert bei mir jedoch nichts an der Anzeige.<br />
<br />
Jetzt kann es losgehen.<br />
<br />
PS:<br />
Wenn noch nicht alles von Anfang an grün ist, muss man noch ein bisschen Hand anlegen. Wichtig ist, dass bei den "Mandatory Requirements" alles grün ist. Wenn die Zugriffsrechte für cache/ und logs/, beides Verzeichnisse innerhalb eures Symfony Ordners, nicht stimmen, können diese mit Hilfe von WinSCP eingestellt werden. Oder über die Konsole mit "chmod".<br />
In der php.ini musste ich noch nach "date.timezone" suchen. Der Eintrag war Auskommentiert. Das Semikolon davor muss entfernt werden. Dann noch um die Zeitzone erweitern. Insgesamt sieht das dann so aus: date.timezone =  "Europe/Berlin" Wer in einer anderen Zeitzone lebt, sollte dies entsprechend anpassen. Siehe dazu in die php.net Doku: <a href="http://www.php.net/manual/en/timezones.php">http://www.php.net/manual/en/timezones.php</a><br />
<br />
In der php.ini kann man auch noch das ein oder andere Feld unter den optionalen Checks grün bekommen. magic_quotes_gpc ist meistens On. Das ändert man in "magic_quotes_gpc Off". Nach einer Änderung in der php.ini nicht vergessen, den Apache neu zu starten. "/etc/init.d/apach2 restart"