Ich habe ja einige Domains mit Inhalten zu versorgen. Da ist es praktisch Pflicht nicht Kür eine Entwicklungsumgebung zu haben. Nun könnte man ja ein VMware pro Domain aufsetzen - ist aber mit Kanonen auf Spatzen…
Besser richte man sich ein paar virtuelle Apache Server auf dem Laptop ein. Um produktionsnah zu sein gilt es dabei einige Parameter aus der Liveumgebung zu kopieren. Praktisch alle meine Webprojekte sind LAMP’s, d.h. Linux, Apache, MySQL, PHP, damit ist schon mal klar, welche Tools installiert sein müssen. Weil ich alles Wichtige bei 1&1 hoste, habe ich auch keine Probleme mit verschiedenen Versionsständen.
Also zur Praxis.
Ich will eine Entwicklungsumgebung für die Geekland.de Programmierung. Ich bestelle ein 1&1 Homepage-Perfect Paket weil da ist PHP und MySQL dabei, als CMS nehme ich Wordpress 2. Von 1&1 kommen folgende Parameter.
domain: geekland.de
db-host: db1234.1und1.de
db-user: dbo12345678
db-pwd: qwertz123
database: db12345678
CMS: wordpress 2.1
Tools: PHP5, MySQL 5, Apache 2
Als TLD auf meinem Laptop nutze ich immer “.test”. D.h. ich brauche einen virtuellen Apache Server der auf “www.geekland.test” hört.
Virtuellen Host für www.geekland.test einrichten
Dazu setze ich auf dem localhost interface einen vhost auf, schreibe also nach /etc/apache2/httpd.conf:
NameVirtualHost 127.0.0.2
<VirtualHost 127.0.0.2>
ServerName www.geekland.test
DocumentRoot /srv/www/vhosts/geekland
</VirtualHost>
Weil in SuSE alle Dateien in /etc/apache2/vhosts.d automatisch ins httpd.conf includiert werden, ist eine bessere Alternative den Code von oben in die Datei /etc/apache2/vhosts.d/geekland.conf zu schreiben.
Außerdem muss der virtuelle Host noch dem Nameservice bekannt gemacht werden. Für Angelegenheiten am localhost ist die beste Stelle dafür die Datei /etc/hosts (Zeile einfügen).
127.0.0.2 geekland.test www.geekland.test
Nicht unbedingt nötig, aber auch nicht schädlich ist noch
root@novotop # ifconfig lo:1 127.0.0.2
damit haben wir dem ganzen noch ein virtuelles Netzinterface gegeben. Jetzt den Apache neu starten:
root@novotop # rcapache2 restart
Nun müsste die Seite http://www.geekland.test ansteuerbar sein. Die Inhalte müssen nach /srv/www/vhosts/geekland/ gestellt werden (index.html etc.).
Datenbank für geekland.test einrichten
Die Datenbank soll produktionsnahe Parameter erhalten, bestenfalls also identische! Der Datenbankserver sollte bereits laufen. Falls nicht, wird er sich beim ersten Login automatisch installieren. Geh also mittels mysql -uroot -p auf den MySQL Server und lege die Datenbank an:
CREATE DATABASE `db12345678` ;
Einen lokalen Benutzer für die Datenbank anlegen
Weiter muss ein User mit login Rechten angelegt werden:
CREATE USER 'dbo12345678'@'localhost'
IDENTIFIED BY 'qwertz123';
GRANT USAGE
ON * . * TO 'dbo12345678'@'localhost'
IDENTIFIED BY 'qwertz123'
WITH MAX_QUERIES_PER_HOUR 0
MAX_CONNECTIONS_PER_HOUR 0
MAX_UPDATES_PER_HOUR 0
MAX_USER_CONNECTIONS 0 ;
Und dieser Benutzer soll nun alle Rechte für die Wordpress DB von geekland bekommen:
GRANT ALL PRIVILEGES
ON `db12345678` . *
TO 'dbo12345678'@'localhost'
WITH GRANT OPTION ;
1&1 Datenbankserver auf lokalen Hosts aliasen
Damit im wp-config.php keine Anpassungen zwischen Entwicklung und Produktion gemacht werden müssen ist es noch sinnvoll, den 1&1 Datenbankserver per alias auf der Entwicklungsmaschine zum localhost umzubiegen:
Suche die Zeile “127.0.0.1 localhost” in /etc/hosts und ändere sie in
127.0.0.1 localhost db1234.1und1.de
Das gibt keine Probleme, weil 1&1 den Zugriff auf db1234 sowieso nur aus dem eigenen Netz zulässt. Damit kann nun eine identische wp-config.php auf Produktion und Testsystem verwendet werden.
Das nächste Projekt
Das gute an dieser Methode ist, dass die nächste Entwicklungsdomain parallel zu geekland.test in exakt derselben Weise aufgesetzt werden kann. Es ist nur das Interface auf 127.0.0.3 zu ändern. Damit habe ich nun die Möglichkeit, alle meine Domains auf einem Linux Laptop zu entwickeln.