Einen xtcModified Entwicklungsserver aus Subversion aufsetzen

Dieser Blogeintrag beschreibt den Prozess den ich verwende um auf Basis eines existierenden Subversion Repositories einen neuen Debian Server als Entwicklungsumgebung für xtcModified aufzusetzen. Dieses Dokument dient mehr meiner persönlichen Dokumentation könnte aber auch als Anregung dienen. Es werden auch keine Erläuterungen zu der generellen Arbeit mit xtcModified oder Subversion gegeben. Das Wissen hierzu ist Vorraussetzung.

Da es sich um einen reinen Entwicklungsserver handelt, der lokal ohne Internetanbindung läuft, spielen hier Aspekte wie Sicherheit oder Zugriffskontrolle keine Rolle. Also nicht so einfach übernehmen wenn man den Server "draussen" stehen hat.

Vorraussetzungen sind
- Subversion Repository
- Backup der Verzeichnisse media / images
- Backup der Shop Mysql Datenbank. 
- ein nackter Debian Server mit minimal Setup

Zuerstmal Postfix installieren (sonst installiert mir die Datenbank MySQL später exim4). Dann den ganzen Kram für Apache, MySQL und PHP (kann sein das ein Packet zu viel ist)

apt-get install postfix
apt-get install apache2 apache2.2-common apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-php5 php5 php5-common php5-gd php5-mysql mysql-server

Jetzt geht es an die Konfiguration der Webserver Verzeichnisses. Zuerst legen wir die notwendigen Verzeichnisse im www Directory an, disablen den default host und richten die Konfiguration unseres neuen Servers ein. Der Benutzer "yourid" wird der Gruppe www-data hinzugefügt damit er später auch das Verzeichniss beschreiben kann.

cd /var/www
mkdir -p /var/www/dev-server/{html,logs,cgi-bin,backup}
chown www-data:www-data dev-server/ -R
usermod -a -G www-data yourid
chmod 770 html -R
a2dissite default
cd /etc/apache2/sites-available
cp default dev-server

vi dev-server
    DocumentRoot /var/www/dev-server/html
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/dev-server/html>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>
a2ensite dev-server
a2enmod rewrite

Jetzt brauchen wir unsere Daten. Wenn man die aktuellen Daten aus dem Live Shop braucht sind das die Verzeichnisse "media" und "images" und natürlich die Datenbank. Zuerst eine leere Datenbank auf dem neuen Server erstellen

mysql -u root -p
create database shop;
CREATE USER 'admin'@'localhost' IDENTIFIED BY 'geheim';
GRANT ALL ON shop.* TO 'admin'@'localhost';

und dann den Datenbankinhalte einspielen. Ich sichere immer in eine gepackte Sql-Datei die ich natürlich aus der Sicherung von meinem Live Shop nehme

gunzip shop-datenbanken.sql.gz
mysql --user=admin --password='geheim' shop < shop-datenbanken.sql

Dann die Bilder und anderen Medien. Auf dem Live Server kann man einfach die beiden Verzeichnisse in ein Tar File packen

tar cvf dev-server.tar media/* images/*

und dann auf dem dev-server auspacken.

cd /var/www/dev-server/html
tar xvf /path-to-your-tarfile/dev-server.tar

Die Installation von Subversion wird hier nicht beschrieben. Da ich mein Projekt alleine entwickele und ich auch sonst nur noch einen anderen Benutzer auf meinem System habe arbeite ich einfach mit svn+ssh. Die Verzeichniss und Repository Angaben sind natürlich nur als Beispiel zu verstehen. Sie geben meine Konfiguration wieder.

Zum Testen erstmal probieren ob man "was sieht". Dann in das html Verzeichniss wechseln und den ganzen xtcmodified Baum auschecken.

svn list svn+ssh://your-svn-server/var/svn/repository/directory/trunk
cd /var/www/dev-server/html/
svn co svn+ssh://your-svn-server/var/svn/repository/directory/trunk .

Jetzt brauche ich noch die Konfigurationsdateien. Die verwalte ich getrennt, da der Inhalt ja Servernamen und Datenbank Informationen enthält die auf meinem QA / Development / Live Servern ja  verschieden sind. Jeweils für den Shop und das Admin Backend.

cd includes
svn export svn+ssh://your-svn-server/var/svn/repository/config-directory/dev/includes/configure.php
vi configure.php
cd ../admin/includes/
svn export svn+ssh://your-svn-server/var/svn/repository/config-directroy/dev/admin/includes/configure.php
vi configure.php

So. Das wars - wenn alles richtig ist solltet Ihr jetzt eine exakte Kopie des Servers haben. Und los kanns gehen mit "Basteln mit Fallschirm"