Frage

Ich habe in einem Web-Entwicklungsunternehmen gearbeitet, wo wir unsere lokalen Maschinen hatten, einen Staging-Server und eine Reihe von Produktionsservern. Wir arbeiteten an macs in Perl und verwendet SVN auf die Bühne zu begehen, und Perl-Skripte auf Produktionsserver zu laden. Jetzt arbeite ich auf meinem eigenen Projekt und mochte gute Praktiken für die Web-Entwicklung finden, wenn Shared Web mit Hosting und nicht von einer Unix-basierten Umgebung arbeiten (mit all dem Zauber ich mit Perl / Bash Scripting / Cron-Jobs usw. tun könnte)

Also meine Frage meine Voraussetzungen gegeben, die da sind:

  • Ich bin mit einem einzigen Standard-Shared Web von einem externen Hosting-Provider (mit ssh-Zugang)
  • Ich arbeite mindestens eine andere Person mit und soll SVN verwenden für die Quellcodeverwaltung
  • Ich entwickle PHP / MySQL unter Windows (aber mit Linux ist eine Möglichkeit)

Welche Setup schlagen Sie für die Prüfung, Bereitstellung, Migration von Code / Daten? Ich habe einen Xampp Server auf meinem lokalen Rechner installiert, aber war sich nicht sicher, welche Methoden Daten zu migrieren verwenden usw. unter Windows.

War es hilfreich?

Lösung

Ich habe einige PHP personnal-Projekte auf Shared-Hosting; hier sind ein paar Gedanken, von dem, was ich auf einer von denen tun (derjenige, der am aktivsten ist, und einige zumindest halbautomatische Synchronisation Art und Weise benötigt) :

Ein paar Worte über meine Einstellung:

  • Vor einiger Zeit hatte ich alles auf SVN; jetzt, ich bin mit Basar ; aber die Idee ist genau die gleiche (ausgenommen, mit Basar, ich habe die lokale Geschichte und all das)
  • Ich habe einen SSH-Zugriff auf den Produktionsserver, wie Sie tun
  • Ich arbeite unter Linux exclusiv (ja, was ich nicht so einfach, mit Fenstern auch sein mag)

Nun, wie ich arbeite:

  • Alles, was auf dem Produktionsserver te sein muss (Quelle-Code, Bilder, ...) ist verpflichtet zu SVN / bazarr / was auch immer
  • Ich arbeite lokal, mit Apache / PHP / MySQL (Ich benutze einen Dump der Produktion DB, die ich in einer Zeit lang lokal einmal importieren)
  • Ich bin der einzige an diesem Projekt arbeiten; es wäre wahrscheinlich für ein kleines Team von 2/3 developpers, aber nicht mehr.
  • OK

Was ich tat vor:

  • Ich hatte einige PHP-Skript, das den SVN-Server für die Änderung zwischen geprüft „letzte Revision geschoben Produktion“ und HEAD
    • Ich vermute, diese selbst gemachten PHP-Skript sieht aus wie die Perl-Skript Sie sind zur Zeit usng ^^
  • Das Skript baute eine Liste der Verzeichnisse / Dateien zur Produktion
  • hochladen
  • Und hochgeladen diejenigen, die über den FTP-Zugriff
  • Das war nicht sehr befriedigend (es Fehler in meinem Skript war, nehme ich an, ich habe nie Zeit diejenigen zu korrigieren) ; und zwangen mich, die Revisionsnummer der Zeit zu erinnern, ich das letzte Mal die Produktion geschoben (na ja, es automatisch in einer Datei durch das Skript gespeichert wurde, so nicht so schwer ^^)

Was ich jetzt tun:

  • Wenn auf Basar Umschalten Ich wollte nicht das Skript umschreiben, was nicht sehr gut sowieso nicht funktioniert
  • Ich habe das Drehbuch fiel total
  • Wie ich den SSH-Zugriff auf den Produktionsserver haben, verwende ich rsync von meiner Entwicklung Maschine synchronisieren auf dem Produktionsserver, wenn das, was ich vor Ort stable / produktionsbereit ist, betrachtet haben.

Ein paar Notizen über diese Art und Weise, Dinge zu tun:

  • Ich habe nicht einen Staging-Server: meine lokale Setup genug, um die Produktion der ein in der Nähe ist
  • Nicht einen Staging-Server mit OK ist für ein einfaches Projekt mit einem oder zwei developpers
  • Wenn ich einen Staging-Server hätte, würde ich wahrscheinlich gehen mit:
    • Sie ein „svn update“ auf es, wenn Sie
    • inszenieren wollen
    • , wenn es in Ordnung ist, starten Sie den rsync Befehl aus dem Staging-Server
    • (die spätestens „stabil“ Revision ba werden, so OK, um die Produktion geschoben werden)
  • Mit einem größeren Projekt, mit mehr developpers, würde ich wahrscheinlich nicht mit dieser Art von Setup gehen; aber ich finde es ganz in Ordnung für ein (nicht zu groß) personnal Projekt.


Das einzige, was „Besonderes“ hier, die rsync verwendet könnte „Linux-orientierte“; eine schnelle Suche scheint es, um anzuzeigen, ist eine rsync ausführbare Datei, die auf Windows installiert werden kann: http: // www .itefix.no / i2 / node / 10650

Ich habe es nie versucht, aber.


Als Nebenbei bemerkt, ist hier, was mein rsync Befehl wie folgt aussieht:

rsync --checksum \
    --ignore-times \
    --human-readable \
    --progress \
    --itemize-changes \
    --archive \
    --recursive \
    --update \
    --verbose \
    --executability \
    --delay-updates \
    --compress --skip-compress=gz/zip/z/rpm/deb/iso/bz2/t[gb]z/7z/mp[34]/mov/avi/ogg/jpg/jpeg/png/gif \
    --exclude-from=/SOME_LOCAL_PATH/ignore-rsync.txt \
    /LOCAL_PATH/ \
    USER@HOST:/REMOTE_PATH/

Ich bin mit privaten / öffentlichen Schlüsseln mecanism, so rsync fragt nicht nach einem Passwort, btw.

Und natürlich, ich verwende in der Regel den gleichen Befehl in „Trockenlauf“ Modus zuerst, um zu sehen, was zu synchorised wird, mit der Option „--dry-run

Und der ignore-rsync.txt enthält eine Liste der Dateien, die ich will nicht auf der Produktion geschoben werden:

.svn
cache/cbfeed/*
cache/cbtpl/*
cache/dcstaticcache/*
cache/delicious.cache.html
cache/versions/*

Hier, ich verhindern, dass nur Cache-Verzeichnisse auf die Produktion geschoben werden - scheint logisch, zu denen nicht senden, wie Produktionsdaten nicht die samich als Entwicklungsdaten.

(ich nur bemerken, bin es immer noch die „.svn“ in dieser Datei ... Ich kann es entfernen konnte, wie ich SVN nicht für dieses Projekt verwenden mehr ^^)


Hoffe, das hilft ein wenig ...

Andere Tipps

In Bezug auf SVN, würde ich Sie mit einem eigenen SVN-Host wie Bohnenstengel vorschlagen gehen oder die gleiche Server-Maschine verwenden, um einen SVN-Server, so dass beiden Entwickler laufen können es abarbeiten.

Im letzteren Fall der Bereitstellung Skript einfach würde die Bits zu einem Staging-Web-Ordner (über beta.mysite.com) bewegen und dann könnte ein weiterer Bereitstellungsskript, das zu dem Live-Web-Verzeichnis. direkt an die Live-Site Deployment ist offensichtlich keine gute Idee.

Wenn Sie mit einem dedizierten Host gehen zu entscheiden oder wollen von Ihrem Computer an den Server implementieren, verwendet rsync. Dies ist auch meine aktuelle Setup. RSync hat Differential Synchronisierungen (über SSH), so ist es schnell und es wurde nur für diese Art von Sachen gebaut.

Wie Sie wachsen können Sie mit Build-Tool mit Unit-Tests und so weiter beginnen. Dies läßt nur das Datensynchronisierungsproblem.

ich nur Sync-Daten von Remote -> lokale und verwenden Sie eine DOS-Batch-Datei, die diese über SSH funktioniert mit mysqldump . Cygwin ist nützlich für die Maschinen unter Windows, aber Sie können es überspringen. Das SQL-Importskript läuft auch eine einzeilige Abfrage einiger Zellen wie Hostnamen und Web-Root für lokale Bereitstellung zu aktualisieren.

Wenn Sie diese Einstellung haben, können Sie nur auf das Schreiben von Code konzentrieren und Remote-Bereitstellung oder lokale Synchronisation und deployement wird ein einem Klick Prozess.

Eine Möglichkeit ist, einen eigenen Rahmen für die Aufgabe zu verwenden. Capistrano passt sehr gut mit Skriptsprachen wie PHP. Es basiert auf Ruby, aber wenn Sie eine Suche, sollten Sie in der Lage sein, Anweisungen zu finden, wie man es verwendet für PHP-Anwendungen bereitstellen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top