PHP Entwicklunsserver unter Windows ausetzen

Um effektiv größere Projekte zu verwalten, kann es hilfreich sein einen eigenen Entwicklungsserver aufzusetzten. Dieser sollte folgendes enthalten:

  • Versionskontrolle (SVN)
  • Issue Tracker (Redmine)
  • Testserver (WAMP)
  • Continuous Integration (phpUnderControl)

Da es bei der Installation zu zahlreichen Problemen kommen kann, und ich an dieser Stelle nicht auf alle eingehen kann, werde ich hier nur kurz das Aufsetzten eines Entwicklungsservers unter Windows skizzieren, und auf detailiertere Quellen im Web verweisen, welche mir bei der Installation geholfen haben. Die Eingabeaufforderung sollte man hierbei generell als Admin ausführen, da es sonst zu Problemen mit den Rechten kommen kann, und es schwierig wird einen eventuell auftauchenden Fehler einzugrenzen.

  1. WAMP-Server aufsetzen:
    Um einen Webserver, MySQL Datenbankserver und PHP zur Verfügung zu haben ist es am einfachsten ein entsprechendes Kompletpaket zu verwenden. WAMPServer oder XAMPP sind zwei solche Pakete. Herunterladen und den Installer ausführen. Fertig.
    Anschlíeßend sollte man noch überprofen, dass der Pfad zur php.exe in der Path-Variablen von Windows angegeben ist (zu finden unter “Start“-> Rechtsklick auf “Computer“-> “Eigenschaften“-> “Erweiterte Systemeinstellungen“-> “Umgebungsvariablen…“-> “Systemvariablen“).

  2. PEAR installieren:
    In der Eingabeaufforderung nach C:\wamp\bin\php\php5.3.x\ wechseln und dort go-pear.bat ausführen.
    Sollte dabei ein Fehler der Art “phar “C:\wamp\bin\php\php5.3.x\PEAR\go-pear.phar” does not have a signaturePHP” auftreten, kann man go-pear.phar auch direkt ausführen und dabei die überprüfung des Hashs unterdrücken, was in meinem Fall zum Erfolg führte: “php -d phar.require_hash=0 PEAR\go-pear.phar

  3. SVN Installieren:
    Wie man SVN unter Windows installiert habe ich bereits in einem anderen Tutorial beschrieben:

  4. Redmine installieren:
    Wie man Redmine unter Windows installiert ist bei Redmine selbst recht umfangreich beschrieben. Darüber hinaus hat mir noch eine Kurzanleitung geholfen:
    Achtung: Redmine scheint sehr anfällig für Versionsunterschiede verschiedener Module zu sein. Daher kann es hilfreich sein, exakt die Version zu verwenden, welche in den HowTos erwähnt werden, falls ein bestimmtes Modul sich nicht installieren läßt.

  5. Ggf. SCRUM Backlogs für Redmine installieren:
    Wenn man Projekte agil entwickeln will, kann sich ein Blick auf das Plugin Redmine Backlogs lohnen. Dieses erweitert Redmine um Backlogs, Sprints, ein Taskboard und stellt beispielsweise ein Burndown Chart zur Verfügung:

  6. Redmine mit SVN verbinden
    Um in der Aktivitätsübersicht in Redmine auch SVN Commits zu sehen, muss das in Schritt 2 eingerichtete lokale Repository an ein angelegtes Projekt gebunden werden. Als URL gibt man dann einfach den direkten Pfad an (mittels “file:///C:/Pfad/zum/Repository” – man achte auf die 3 (!) Slashes nach “file:“), Login und Password sind dann die Zugangsdaten eines registrierten Repository Benutzers.

  7. PHPUnit, CodeSniffer und phpDepend installieren
    Zur Vorbereitung für den Continus Integration Server müssen nun die drei genannten Tools installiert werden:

  8. phpUnderContol installieren
    Da wir gerade dabei sind mit PEAR zu installieren, können wir nun auch schon einmal phpUnderControl installieren:

    pear config-set preferred_state beta
    pear channel-discover pear.phpunit.de
    pear install –alldeps phpunit/phpUnderControl



  9. Cruise Control installieren
    Neuste CruiseControl Binary herunterladen und installieren. Fertig.
    Nach der Installation sollte man kurz testen, ob der Cruise Control Server erreichbar ist (normalerweise unter localhost), noch bevor man phpUnderControl integriert.
  10. phpUnderControl in CruiseControl integrieren
    Den folgenden Befehl in der Kommandozeile ausführen:

    phpuc install C:\CruiseControl

    Anschließend im Webserver aufrufen: localhost/cruisecontrol/

    Nach der Installation des Beispielprojektes (mittels phpuc example C:\CruiseControl) konnte in meinem Fall der CruiseControl Dienst nicht mehr gestartet werden. Das Beispielprojekt ist aber auch nicht zwingend notwendig, da in dem unter Punkt 8 verlinktem Guide sehr gut beschrieben ist, wie man ein komplett neues Projekt erstellt.

  11. Ein Projekt in phpUnderControl anlegen:
    Hier verweise ich wieder auf den Guide aus Punkt 8:
    Die SVN Anbindung erreicht man am einfachsten, indem man in den Projektfolder wechselt, dort das Unterverzeichnis “/source” erstellt, und mittels “svn checkout file:///C:/Pfad/zum/repository source” das Projekt erstmalig auscheckt. Spätere Aktualisierungen werden dann in phpUnderControl mittels “svn update” durchgeführt.

  12. Ports freigeben
    Sollen die verschiedenen Webservices auch von aussen erreichbar sein (beispielsweise mittels NAT im Router), müssen abschließend noch die entsprechenden Ports unter Windows freigegeben werden (bei Windows 7 unter “Systemsteuerung”-> “Windows-Firewall”-> “Erweiterte Einstellungen”-> “Eingehende Regeln”-> “Neue Regel…” und dann “Port” auswählen).