Howto: Einrichtung eines PHP-Projektes mit Subversion und FTP-Synchronisation in Netbeans

Ein PHP-Projekt in Netbeans einzurichten ist nicht sonderlich schwer; man braucht lediglich ein Projektverzeichnis anzugeben und kann loslegen. Ein wenig komplizierter wird es, wenn das Netbeans-Projekt sich in bestimmte Workflows einbinden muss, etwa dann, wenn im Team entwickelt wird (Stichwort Versionsverwaltung) oder der Code mit einem entfernten Server abgeglichen werden soll. Glücklicherweise bietet Netbeans einige Hilfsmittel, die dem Entwickler das Leben leichter machen.

Dieser Artikel zeigt die exemplarische Einrichtung eines PHP-Projektes in Netbeans, das folgende Voraussetzungen erfüllt:

  • Das Projekt wird lokal abgelegt und ist von hier aus auch lauffähig, weil eine lokale Web-Server-Umgebung vorhanden ist
  • Der Quellcode befindet sich unter Subversion-Verwaltung, was in diesem Szenario das gemeinsame Arbeiten mit mehreren Entwicklern (mit jeweils eigener lokaler Arbeitskopie) ermöglicht
  • Der lauffähige Code wird per FTP mit der produktiven Web-Server-Umgebung abgeglichen; der Abgleich erfolgt manuell (auf Wunsch können Änderungen auch automatisch übertragen werden)

Die lokale Umgebung wird also für die Entwicklung und das Testen genutzt. Änderungen werden in die Quellcode-Verwaltung übertragen. Zum Abschluss einer Teil-Entwicklung wird der aktuelle Projektstand mit dem produktiven Web-Server abgeglichen. Dieses Setup eignet sich sowohl für kleinere Teams (größere würden sicherlich den Upload auf das Produktivsystem reglementieren) als auch den einzelnen Entwickler, der an einer Website arbeitet.

Wir gehen davon aus, dass zunächst ein leeres Subversion-Repository vorhanden ist, also auch noch die üblichen Verzeichnisse tags, branches und trunk angelegt werden müssen. In Netbeans muss gegebenenfalls noch das Subversion-Plugin über den integrierten Plugin-Manager installiert werden, sofern das noch nicht geschehen ist.

Zunächst legen wir in Netbeans über den Menüpunkt Datei / Neues Projekt ein neues Projekt an und wählen als Vorlage PHP Application. Im nächsten Schritt vergeben wir einen passenden Projektnamen, wählen das lokale Webserver-Wurzelverzeichnis aus, wählen die gewünschte PHP-Version und Zeichenkodierung.

Grundlegende PHP-Projekteinstellungen
Grundlegende PHP-Projekteinstellungen

Der folgende Dialog ist ein wenig komplizierter. Unter Run As wählen wir den Punkt Remote Website (FTP, SFTP) aus, da wir mit einem entfernten Server abgleichen möchten, obwohl ja bereits das lokale Projekt (in der eigenen Server-Umgebung) lauffähig ist. Als Project URL geben wir nun aber nicht die Einstiegsadresse auf dem Produktivsystem an, sondern die Adresse des lokalen Web-Servers, also etwa »http://localhost/« – wer sich mit seiner Hosts-Datei auskennt, kann natürlich auch (wie im Beispiel dargestellt) einen klangvolleren Namen hierfür vergeben.

Laufzeiteinstellungen
Laufzeiteinstellungen

Nun müssen wir eine Remote Connection einrichten: Hierfür klicken wir auf Manage und dann Add. Wir vergeben einen Namen für die einzurichtende Verbindung und wählen den Verbindungstyp; je nach Server FTP oder das abgesicherte SFTP. Nach Klick auf OK bearbeiten wir die Verbindungseinstellungen: Dazu gehören der Host-Name des FTP-Servers sowie Benutzername und Kennwort und das Initial Directory, das für die Datei-Übertragungen das Startverzeichnis darstellt. Die Datei- und Verzeichnisstruktur des PHP-Projektes wird 1:1 in dieses Verzeichnis auf dem FTP-Server übertragen, es ist also wichtig, dass hier der passende Pfad eingetragen wird. Die Einstellungen für Timeout und Keep-Alive können in aller Regel auf den Standardwerten bleiben. Mit Test Connection kann überprüft werden, ob die FTP-Einstellungen funktionieren.

FTP-Verbindung konfigurieren
FTP-Verbindung konfigurieren

Ist diese Remote Connection eingerichtet, landen wir wieder im Projekt-Assistenten. Dort haben wir noch die Möglichkeit, einen Upload-Pfad einzugeben. Dieser ergibt zusammen mit dem Basis-Pfad aus den FTP-Einstellungen das tatsächliche Projekt-Wurzelverzeichnis auf dem FTP-Server. Zur Kontrolle wird der zusammengesetzte Pfad in diesem Dialogfenster noch einmal ausgegeben.

Unter dem Punkt Upload Files wählen wir Manually aus, denn wir wollen erst am Ende eines Entwicklungsschrittes das gesamte Ergebnis auf das Produktivsystem übertragen und nicht bereits während der Entwicklung einen (möglicherweise aktuell nicht lauffähigen) Zwischenstand. Wenn es besser in den Arbeitsfluss passt, kann auch aus den Einstellungen On Save (beim Speichern einer bzw. bei Änderung einer Datei) oder On Run (beim »Ausführen« des Projektes über den entsprechenden Menüpunkt in der Entwicklungsumgebung) gewählt werden.

Im letzten Schritt des Assistenten können noch PHP-Frameworks ausgewählt werden, die allerdings noch separat installiert und konfiguriert werden müssen. Ob die Frameworks benötigt werden, hängt vom jeweiligen Projekt ab; in unserem Beispiel verwenden wir keines der angebotenen Frameworks und beenden den Assistenten.

Nun haben wir schon einmal ein Projekt eingerichtet, dass sowohl lokal lauffähig ist als auch mit einer Produktivumgebung synchronisiert werden kann. Wir testen das ganze, indem wir eine simple Datei »index.php« anlegen und auf Run klicken – im nächsten Augenblick sollte sich, wenn alles korrekt konfiguriert worden ist, ein Web-Browser öffnen und über den lokalen Web-Server die gerade angelegte Seite darstellen. Sollte das nicht funktionieren, müssen noch einmal die angegebenen Pfade in den Projekteinstellungen überprüft werden.

Nun fehlt noch die Subversion-Einrichtung. Dafür wählen wir im Menü Team / Subversion / Ins Repositorium importieren aus und konfigurieren im folgenden Dialog das Server-Profil. Wir geben hier die Repository-URL sowie unsere Authentifizierungsdaten ein. Je nach Subversion-Server gibt es hier recht unterschiedliche Möglichkeiten – daher kann an dieser Stelle keine allgemeine Anleitung erfolgen. Im nächsten Schritt wird das zu verwendende Unterverzeichnis des Repositoriums ausgewählt. Da wir von einem bisher leeren Repository ausgehen, legen wir ein neues Verzeichnis »trunk« an und wählen dieses als Ziel aus. Anschließend wird der aktuelle Projekt-Stand committed, also in das Repositorium übertragen.

Angabe des zu verwendenden Subversion-Repositoriums
Angabe des zu verwendenden Subversion-Repositoriums

Hiermit ist die Projekteinrichtung abgeschlossen. Änderungen können von nun an sehr bequem über die integrierten Subversion-Funktionen überprüft und auf dem Quellcode-Server übertragen werden. Möchte man etwa sehen, welche Dateien sich geändert haben, reicht es aus, im Projekte-Panel auf einen beliebigen Ordner (es kann auch das gesamte Projekt gewählt werden) zu klicken und Subversion / Änderungen zeigen auszuwählen. Es öffnet sich ein neues Panel, aus dem heraus die wichtigsten Subversion-Aufgaben ausgeführt werden können. Per Doppelklick auf einen Dateieintrag erhält man eine grafische Übersicht der erfolgten Änderungen und eine Historienansicht.

Sollen nun Änderungen per FTP auf das Produktivsystem übertragen werden, kann nun auf einem ähnlichen Weg eine Synchronisation mit dem FTP-Server erfolgen: Wieder wird das Projekt- oder ein bestimmtes Unterverzeichnis ausgewählt und im Kontextmenü Synchronize angeklickt. Bevor Netbeans nun irgendwelche Dateien überschreibt, zeigt es noch eine Zusammenfassung der Schritte an, die es auszuführen gedenkt, so dass es immer noch die Möglichkeit gibt, den Vorgang zu modifizieren oder abzubrechen. Wer mag, kann diese Zusammenfassung auch komplett ausschalten, aber zumindest eine grobe Kontrolle ist in der Regel ratsam. Wer direkt »auf dem FTP-Server« entwickeln möchte, kann in der Run Configuration des Netbeans-Projektes auch auf einen automatischen Upload On Save umschalten. Hierbei wird jede Dateiänderung (die auch etwa durch Subversion-Aktionen bedingt sein kann) direkt übertragen. Ob das für ein Produktivsystem empfehlenswert ist, hängt letzten Endes auch vom Entwicklungsstand und der Größe des Projektes bzw. der Anzahl der Entwickler ab.