XAMPP + Dropbox – An mehreren Rechnern (synchron) entwickeln
Dropbox* ist ein Programm, mit dem man Daten zwischen zwei oder mehreren Rechnern auf einfachste Weise synchronisieren kann. Dropbox ist für die meisten Betriebssysteme (Windows, Linux, MacOS) zu haben und in der Basisversion kostenlos. Hat man Dropbox heruntergeladen und installiert, erstellt das Programm einen Ordner namens Dropbox. Alles, was man in diesem Ordner speichert, wird zwischen allen Rechnern, die im gleichen Dropbox-Account eingeloggt sind, synchronisiert. Der Ordner funktioniert dabei wie ein ganz normaler Ordner im Explorer und bietet alle Funktionen, die jeder andere Ordner auch bietet.
Die Synchronisierung wird über das Internet durchgeführt. Dazu lädt Dropbox jede Änderung auf die Dropbox-Server und die anderen Clients laden die aktuelle Version dann von dort herunter. In der Basisversion stehen jedoch nur 2 Gigabytes an Speicherplatz zur Verfügung. Für Dokumente und andere kleine Dateien reicht das locker aus. Wer aber größere Dateien synchron halten will, muss sich die kostenpflichtigen Versionen mit 50GB (10 Dollar im Monat) oder 100GB (20 Dollar im Monat) kaufen. Die Basisversion kann jedoch auf bis zu 10GB erweitert werden, indem neue Nutzer über einen Ref-Link* geworben werden. Für jeden geworbenen Nutzer gibt es zusätzliche 250MB Speicherplatz.
Ich hoffe, ich konnte das Prinzip hinter Dropbox verständlich erklären. Jetzt zeige ich Euch in einem kleinen Tutorial, wie ihr mit Dropbox und XAMPP Eure Projekte von mehreren Rechnern aus entwickeln könnt, z.B. unterwegs mit dem Notebook und zuhause am Desktop-PC.
PHP und MySQL mit Dropbox synchron halten
Diese Anleitung setzt voraus, dass XAMPP bereits erfolgreich installiert ist und funktioniert. Außerdem ist die aktuellste Version von Dropbox* installiert und eingerichtet. Ich gehe davon aus, dass diese Schritte hier auch mit WAMPP und LAMP funktionieren, getestet habe ich es aber nur mit XAMPP. Ebenso gehe ich davon aus, dass die Schritte unter Linux, MacOS, Windows Vista oder Windows 7 nur leicht variieren. Getestet wurde nur mit XP!
PHP-Skripts (htdocs) in die Dropbox verlegen
Im ersten Schritt sorgen wir dafür, dass unsere PHP-Skripts nicht mehr unter C:\xampp\htdocs, sondern in unserem Dropbox-Ordner unter Entwicklung\htdocs liegen. Natürlich könnt ihr hier auch einfach einen anderen Namen vergeben! Der Apache-Server bzw. das PHP-Modul beziehen die Information, wo die Skripts liegen, aus der httpd.conf. Diese Datei ist in der Standardinstallation von XAMPP unter C:\xampp\apache\conf\httpd.conf zu finden. Die httpd.conf müssen wir an ein paar Stellen ändern:
Zeile 183 (kann variieren)
DocumentRoot „C:/xampp/htdocs“
wird zu
DocumentRoot „C:/Dokumente und Einstellungen/Simon/Desktop/Dropbox/Entwicklung/htdocs“
Zeile 210 (kann variieren)
<Directory „C:/xampp/htdocs“>
wird zu
<Directory „C:/Dokumente und Einstellungen/Simon/Desktop/Dropbox/Entwicklung/htdocs“>
Wichtig ist, dass (auch bei Windows) kein Backslash verwendet wird. Ansonsten funktioniert es nicht.
Wenn diese Änderungen vorgenommen wurden, speichern wir die Datei ab und starten Apache neu. Wenn nach dem Klick auf „Start“ im XAMPP Control Panel kein grünes „Running“-Label erscheint, stimmt etwas mit euren Pfaden nicht. Einfach nochmal nachprüfen! Und wichtig: Kein Backslash (\) 😉
Damit wären die PHP-Skripts bzw. der Document-Root verschoben. Jetzt kopiert ihr noch eure Dateien (Skripts) nach C:\Dokumente und Einstellungen\Simon\Desktop\Dropbox\Entwicklung\htdocs oder beginnt dort ein neues Projekt.
MySQL (Datenbanken) in die Dropbox verlegen
Wir wollen erreichen, dass die MySQL-Datenbanken künftig auch synchronisiert werden und legen sie deshalb unter Dropbox\data ab. Bei mir ist das C:\Dokumente und Einstellungen\Simon\Desktop\Dropbox\Entwicklung\data
MySQL legt die Informationen über den Speicherort der Datenbanken in der my.ini unter C:\xampp\mysql\bin\my.ini ab. Dort findet sich folgender Eintrag (bei mir in Zeile 31):
datadir=“C:/xampp/mysql/data“
Diesen Eintrag ändern wir folgendermaßen um:
datadir=“C:/Dokumente und Einstellungen/Simon/Desktop/Dropbox/Entwicklung/data“
Natürlich muss auch hier wieder der passende Pfad eingetragen werden, wenn ihr nicht gerade Simon heißt und eure Daten auf dem Desktop liegen sollen.
Wer MySQL auch mit innoDB-Datenbanken nutzen möchte, sollte sich die Zeilen 132 und 134 genauer anschauen:
132: innodb_data_home_dir = „C:/xampp/mysql/data
134: innodb_log_group_home_dir = „C:/xampp/mysql/data“
Auch hier tragen wir wieder unseren Pfad ein:
132: innodb_data_home_dir = „C:/Dokumente und Einstellungen/Simon/Desktop/Dropbox/Entwicklung/data“
134: innodb_log_group_home_dir = „C:/Dokumente und Einstellungen/Simon/Desktop/Dropbox/Entwicklung/data“
Dieser Schritt ist – wie gesagt – nur bei InnoDB-Datenbanken notwendig. Schaden kann’s aber trotzdem nicht!
Um MySQL jetzt die Änderungen mitzuteilen, wird der MySQL-Server neu gestartet.
Fertig! Diese Schritte führen wir jetzt für jeden Rechner aus, der Zugriff auf die Projekte haben soll.
XAMPP komplett in die Dropbox verlegen?
Möglicherweise stellst du dir diese (berechtigte) Frage. Doch wenn man sich die Daten anschaut, die XAMPP ständig offen hält und bearbeitet, dann weiß man, warum das keine gute Idee ist. Denn wenn XAMPP komplett in der Dropbox* liegt, dann werden ständig Temp-Dateien und andere Dateien, die für die Projektentwicklung eigentlich nicht wichtig sind, synchronisiert.
Deshalb ist es deutlich besser, wenn man lediglich die Datenbanken und die htdocs synchronisiert. Übrigens spart man sich dadurch auch wertvollen Speicherplatz! 2GB sind nicht viel 😉
Doch wem es egal ist, wieviel Traffic und Speicher verbraucht wird, der kann XAMPP einfach direkt im Dropbox-Ordner installieren.
Ich hoffe, Euch hat das kleine Tutorial gefallen!
(*) Alle Links zu Dropbox sind Ref-Links!
Super Artikel, vielen Dank. Hast Du einen Tip um die Dropbox zu verschlüsseln? Gut wäre so eine Beschreibung ausserdem für PostgreSQL 😀 Dann würde ich mir sogar überlegen Windows wieder produktiv einzusetzen 🙂
Bin froh Deinen RSS-Feed aboniert zu haben, bei so guten Artikeln 😉
Praktisches Tutorial, vielen Dank 🙂
Denn vor dieser „Herausforderung“ stand ich auch bereits, konnte es leider noch nicht lösen. Aber das htdocs einfach in die Dropbox zu schieben, ist natürlich auch eine Möglichkeit.
Danke für die Artikel, sehr nützlich 🙂
Freut mich, wenn Euch der Artikel gefällt! Ich werde in Zukunft mehr praxisorientierte Artikel schreiben, die kommen scheinbar besser an.
Die Dropbox kann man beispielsweise mit TrueCrypt verschlüsseln. Die DropBox beinhaltet dann nur noch eine Containerdatei (True Crypt) und diese wird dann nur an den Stellen geupdatet, an denen sich etwas verändert hat. Ich muss dazu sagen, dass ich das selber noch nie getestet habe, da der Bedarf noch nicht da war.
Auch weiß ich nicht, ob das dann noch problemlos funktioniert, während die Containerdatei offen ist. Habe ich z.b. zwei Rechner und bearbeite an jedem Rechner den Inhalt der Dropbox, der mit True Crypt verschlüsselt ist, denke ich, dass es Konflikte geben könnte.
Ich lasse mich aber gerne eines Besseren belehren!
Wegen PostgreSQL muss ich mal schauen 🙂
Huhu, klingt alles super und hab das mal getestet.. stehe jetzt vor dem Problem, dass bei Aufruf von localhost folgende Fehlermeldung kommt:
„Zugriff verweigert!
Der Zugriff auf das angeforderte Verzeichnis ist nicht möglich. Entweder ist kein Index-Dokument vorhanden oder das Verzeichnis ist zugriffsgeschützt.
Error 403“
Wie bekomme ich die Seite wieder angezeigt?
Ich hab auch mal testweise eine php Datei in die htdocs gepackt und aufgerufen, mit Inhalt
aber wenn ich den Dateipfad öffne, bleibt das Fenster weiß..
Vielleicht hat jemand eine Idee? 🙂
das mit localhost funktioniert mittlerweile, ich hatte xampp neugetartet, half aber nix (apache lässt sich nicht bei mir stoppen). PC neustart hat aber geholfen ^^
Läuft jetzt alles rund, so wie gewünscht?
Habe unter Linux (Ubuntu 12.04) erst mal nur die htdocs auf Dropbox verlegt. Bekam wie bei Any
„Error 403 Zugriff verweigert“
was auf ein Rechteproblem hinweist.
Es reicht nicht aus – wenn wie bei mir „htdocs“ unter „Entwicklung“ liegt – allen Benutzern und damit auch dem Apache Schreibrechte auf „Entwicklung“ und seinen Unterordnern und Dateien mit:
chmod -R 777 ~/Dropbox/Entwicklung
zu geben. Auch das Verzeichnis „Dropbox“ braucht für alle Benutzer zumindest Leserechte mit:
chmod 705 ~/Dropbox
Dann geht es.
LG Hani
Danke für die ergänzenden Hinweise!
Ab Windows Vista als Clientplattform ist auch das Verwenden von symbolischen Links zuverlässig möglich, ohne das man an den Konfigurationsdateien rumschrauben muss (Klappt NICHT mit XP!):
1) Apache und MySql beenden
2) „C:\xampp\htdocs“ und „C:\xampp\mysqldata” z.B. in den Dropbox-Ordner Entwicklung (den man ggf. anlegen muss) verschieben.
3) WICHTIG: Eingabeaufforderung mit Administratorrechten starten (cmd.exe im Startmenü eingeben und dann rechter Mausklick auf cmd.exe-Symbol und „Als Administrator ausführen“ und Benutzerkontensteuerungsdialog bestätigen
4) Symbolische Links erzeugen. Folgende Befehle nacheinander in die Eingabeaufforderung eingeben:
mklink /d „c:\xampp\htdocs“ „%USERPROFILE%\Dropbox\Entwicklung\htdocs
mklink /d „c:\xampp\mysqldata“ „%USERPROFILE%\Dropbox\Entwicklung\data“
5) Apache, MySql und ggf. FileZilla starten.
6) alle obigen Punkte, außer 2), auf beliebigen anderen Vista/7-Rechnern wiederholen (gleiche Xampp-Version ist sinnvoll)
LG Hani
PS: Noch eine Ergänzung zu meinem vorherigen Posting:
Das synchrone Bearbeiten mit unterschiedlichen Clientplattformen, z.B. Windows-Laptop und Linux-Desktop ist nicht immer möglich, da manche Webapplikationen je nach Plattform unterschiedliche Pfade erwarten. Auch das Einrichten der zentralen Datenbank auf Dropbox lief bei mir unter Linux nicht ohne Probleme. Inhomogene Web-Entwicklungsumgebungen brauchen einfach einen zentralen Server. Dann ist sogar paralleles Bearbeiten ohne Probs möglich.
Interessant, das wusste ich selbst noch nicht 🙂
Aber ich habe, wie du angemerkt hast, auch schon festgestellt, dass das mit der Dropbox und Datenbanken nicht das Wahre ist. Es gibt öfter Mal Probleme… Allerdings habe ich keine andere Möglichkeit, einfach zu Syncen.
Ja, auch ich habe selbst bei reinen Windowssystemen und gleichen Xampp-Versionen bei der Mysql-Datenbank Probleme, also nicht nur im gemischten Betrieb. Schade.
Vielleicht klappt es ja, wenn man den ganzen Xampp-Ordner in die Dropbox schiebt oder statt der Dropbox mit Synchronisationstools wie Synctoy oder Robocopy den gesamten Xamp-Ordner synchronisiert.
Gruß Hani
PS: Bei Webanwendungen ohne Datenbank scheint es aber sowohl mit deiner Konfigurationsdateimethode oder der Symbolischen-Linkmethode sehr gut zu klappen. Immerhin ein kleiner Trost.
———8<—————8<——————
Ergänzung meinem Kommentar vom: 11. Juni:
Man kann nicht, wie ich geschrieben habe, die Umgebungsvariable %USERPROFILE% verwenden, wenn das eigene Windows-Arbeitsprofil nur Standardbenutzerrechte hat. Es wird sonst der Profil-Pfad des Anwenders mit Administratorrechten verwendet, in dessen Kontext man „cmd.exe“ gestartet hat. Man muss also dann den "harten" Pfad angeben.
———8<—————8<————–
[…] […]
[…] Dropbox kennt eigentlich jeder, der halbwegs auf dem aktuellen Stand ist, was Computer und Internet angeht. Doch wie jeder weiß, hat man bei der Dropbox nur sehr begrenzten Speicherplatz. Anfangs sind es 2 GB und für jeden Benutzer, den man anwirbt, bekommt man weitere 250MB. Mühsam kann man sich so bis zu 10 GB “erarbeiten”. Ich bin derzeit bei gerade einmal 5GB Speicherplatz. […]
Danke für die ausführliche Anleitung. Hab ziemlich lange mit dem Pfad zum User-Directory unter Windows 7 herumprobiert. Dieses ist:
C:/Users/USERNAME/Dropbox/…
Also, auf obiges Beispiel bezogen, statt „C:/Dokumente und Einstellungen/Simon“ funktioniert bei mir nur „C:/Users/Simon“.
Mittlerweile auch bei mir im praktischen Einsatz 🙂
Wenn nur htdocs und data in der Dropbox sind, ist das wirklich nicht nur eine Speichereinsparung, sondern man kann unabhängig von der XAMPP-Version arbeiten … außerdem kann es gut sein, dass auch verschiedene Einstellungen auf den Systemen vorhanden sind (z.B. überall anderer Benutzername unter Windows)
Also so macht es immer noch am meisten Sinn, einfach nur die Daten outsourcen 😉
btw. habe übrigens beim Erstellen des obrigen Kommentars ein PHP-Warning erhalten:
„Missing argument 2 for wpdb::prepare(), called in /…/wp-content/plugins/wp-ajax-edit-comments/lib/class.core.php on line 470 and defined in /…/wp-includes/wp-db.php on line 990“
Hani und Christian: Danke für die Ergänzungen!
maTTes: Danke für den Hinweis mit dem PHP-Fehler. Leider kann ich ihn nicht reproduzieren. Ist die Meldung direkt nach dem Absenden des Kommentars erschienen?
Und funktioniert bei dir die Synchronisation von Datenbanken ohne Probleme? Bei mir leider nicht immer.
EDIT: Wenn ich als Gast kommentiere, habe ich den Fehler auch. Komisch… Ich geh mal auf Fehlersuche
Ok, ein Update des Plugins hat geholfen! Bei mir tritt der Fehler nicht mehr auf, weder eingeloggt, noch ausgeloggt.
Bei dir auch nicht?
gibts dafür noch ne aktuelle Anleitung ?
Apatche geht, aber mysql mit innodb geht nicht :/
LG
Also auf meinem Blog leider nicht, sorry. Eine andere wäre mir auch nicht bekannt.
Vielen Dank. Hat prima funktioniert! =)
Kurze Ergaenzung fuer alle Mac User die ein „Zugriff verweigert“ bekommen.
Da es ein Unix basiertes OS ist, bitte genau wie weiter oben fuer Linux beschrieben dem Dropbox Ordner einfach mal Leserechte fuer everyone geben, dann klappts auch mit dem N…Apache 🙂
Danke für den Hinweis, könnte sicherlich für den einen oder anderen User nützlich sein 🙂
Vielen Dank für den Artikel.
Ich möchte meine Daten nun allerdings nicht in der Dropbox, sondern auf einem Netzwerklaufwerk lagern und synchronisieren. Der Apache Server läuft dort problemlos, nur beim mySQL Server gibt es Probleme. Der wird nämlich gar nicht erst gestartet.
Beim Durchforsten des Internets habe ich vermehrt gelesen, dass es dabei unter Windows XP zu Problemen mit den Rechten eines Nutzers kommen kann. Hast du damit Erfahrung bzw. kannst mir da etwas unter die Arme greifen?
Das hier spuckt die Konsole aus:
Fehler: MySQL wurde unerwartet beendet Ursache könnte ein geblockter Port, fehlende Abhängigkeiten, fehlende Berechtigungen, ein Absturz oder ein Abbruch einer anderen Methode sein.
Drücke den Logs Button um error logs zu sehen und prüfe im Windows Event Viewer für weitere Hinweise. Wenn du weitere Hilfe benötigst, kopiere den kompletten Inhalt des Log Fensters und füge ihn als Ergänzung in einem neuen Forum Eintrag hinzu.
Und das steht im Error-Log:
130923 11:00:33 [Note] Plugin ‚FEDERATED‘ is disabled.
c:\xampp\mysql\bin\mysqld.exe: Table ‚mysql.plugin‘ doesn’t exist
130923 11:00:33 [ERROR] Can’t open the mysql.plugin table. Please run mysql_upgrade to create it.
130923 11:00:33 InnoDB: The InnoDB memory heap is disabled
130923 11:00:33 InnoDB: Mutexes and rw_locks use Windows interlocked functions
130923 11:00:33 InnoDB: Compressed tables use zlib 1.2.3
130923 11:00:33 InnoDB: Error: unable to create temporary file; errno: 2
130923 11:00:33 [ERROR] Plugin ‚InnoDB‘ init function returned error.
130923 11:00:33 [ERROR] Plugin ‚InnoDB‘ registration as a STORAGE ENGINE failed.
130923 11:00:33 [ERROR] Unknown/unsupported storage engine: InnoDB
130923 11:00:33 [ERROR] Aborting
130923 11:00:33 [Note] c:\xampp\mysql\bin\mysqld.exe: Shutdown complete
Hast du ein eingeschränktes Konto oder ein Admin-Konto bei Win XP?
Super hilfreich!