Ich arbeite mit einem Kunden zusammen, der einen dedizierten Plesk-Server auf Linux-Basis hat. Die Website (sagen wir example.com
) ist live und da normalerweise umfangreiche Änderungen erforderlich sind, ist es sehr schwierig, diese direkt live zum Laufen zu bringen. Der Server hatte kein SVN, nur FTP.
Ich habe eine Subdomain erstellt staging.example.com
und Dateien per FTP dort abgelegt, damit der Client die Änderungen sehen kann, bevor sie live geschaltet werden. Es ist natürlich ein furchtbarer Aufwand für mich, mir jede einzelne Datei zu merken, die mit jeder Aufgabe zusammenhängt, sie hochzuladen und auf der Staging-Plattform zu testen und mich dann wieder daran zu erinnern, welche Dateien es waren, und das Ganze für den Live-Server noch einmal zu tun. Ich bin dabei mehrmals „erfolgreich gescheitert“, dies fehlerfrei durchzuführen.
Ich möchte jetzt SVN verwenden. Ich habe es geschafft, SVN über SSH (ich habe vollen Zugriff darauf) und ein Repository (in /var/www/vhosts/example.com/svn/repos
) zu installieren, aber weitere Einstellungen scheinen mir nicht eindeutig zu sein. Ich möchte, dass das Setup so aussieht:
- SVN-Server (läuft auf
svn.example.com
– bereits erledigt) - ‚Master‘-Kopie bei
staging.example.com
, bei/var/www/vhosts/example.com/staging
(Ich bin nicht sicher, ob ‚Master‘ in SVN eine spezielle Bedeutung hat. Ich meine nur die Hauptkopie) - Ein Arbeitsverzeichnis unter
www.example.com
,/var/www/vhosts/example.com/httpdocs
damit ich per SVN-Update meine Änderungen live schalten kann - Ein weiteres Arbeitsverzeichnis auf meinem Computer, in dem ich die eigentliche Arbeit erledigen würde.
Mein Plan ist, dass ich die Arbeit an meinem Computer erledige, sie festlege, damit sie auf der Staging-Site getestet werden kann, und wenn alles in Ordnung ist, dann von der Live-Site aus aktualisiere, um meine Änderungen live zu schalten.
Bitte erklären Sie mir, wie ich das erreichen kann. Beachten Sie auch, dass ich Programmierer und kein Systemadministrator bin, sodass mein Plan möglicherweise einige Probleme aufweist. Wenn Sie das glauben, geben Sie bitte eine alternative Lösung an. Ich verwende SVN schon seit langem, aber das war nur Checkout-Commit-Update-Resolve, kein Setup. Deshalb brauche ich jetzt Hilfe.
Antwort1
Die einfachste Lösung ist wahrscheinlich, den Code (nur den Stamm, keine Zweige usw.) an den drei Stellen zu überprüfen. Dann müssen Sie nur sicherstellen, dass Sie „svn up“ zur richtigen Zeit in den richtigen Ordnern ausführen.
Versuchen Sie also Folgendes (die Kommentare beschreiben jeden Teil).
#SSH to the server as a user who can modify /var/www/vhosts/...
...
cd /var/www/vhosts/ # Since this is a live server, we need to make the
# changeover fast, so work in a new folder.
mkdir example.com_svn # Make the new folder
cd example.com_svn
svn co http://example.com/svn/repos/website staging # Check out the repository
# into a new folder called
# "staging".(Change "website"
# to your folder name)
svn co http://example.com/svn/repos httpdocs # Ditto, but "httpdocs"
# At this point you need to make the file permissions and ownership the same as
# the folders within the /var/www/vhosts/example.com.
# Once you've done that continue...
cd ..
mkdir example.com_old
mv example.com/staging example.com_old/. && mv example.com_svn/staging example.com/.
# This will make the svn version of the staging site live. Check that it works
# then do the same with the httpdocs folders.
Eine kompliziertere Lösung wäre, zwei Codezweige zu verwenden, einen für Staging und einen für Live. Aber das wäre für diesen Zweck wahrscheinlich übertrieben...
Antwort2
Erweiterte Version der ed-Antwort
Vorwort
Sie müssen sich einige Administrationskenntnisse für Subversion aneignen, um alles richtig zum Laufen zu bringen und die Prozesse hinter der Haube zu verstehen.
Gesicht
Sie müssen über Folgendes verfügen:
- Ein Repository
- Mindestens zwei Zweige im Repository (zB
STAGING
undLIVE
) - Post-Commit-Hook mit eingebetteter Geschäftslogik „Auf STAGE- oder LIVE-Ziel veröffentlichen“
Dreivier Arbeitskopien: DEV (Ihr lokaler Arbeitsplatz, angebunden an den STAGING-Zweig), MERGE (Ihr lokaler Arbeitsplatz, angebunden an den LIVE-Zweig), STAGING (auf dem STAGING-Server, angebunden an den STAGING-Zweig), LIVE (auf dem LIVE-Server, angebunden an den LIVE-Zweig)- SVN-Client auf STAGING und LIVE installiert
Arbeitsablauf:
- Code in DEV bearbeiten
- Commit – Post-Commit-Hook aktualisiert WC auf STAGING
- Testen Sie Änderungen im STAGING
- Änderungen vom STAGING-Zweig in MERGE WC (getestet) zusammenführen /effektiv vom STAGING-Zweig in den LIVE-Zweig zusammenführen/
- Änderungen am LIVE-Zweig committen - der Post-Commit-Hook aktualisiert WC auf LIVE mit zusammengeführten Änderungen (der Hook kann diese Art von Commit anhand eines Schlüsselworts in der Commit-Nachricht erkennen /
svnlook log | grep KEYWORD
/ oder anhand von Änderungen im LIVE-Zweig /svnlook dirs-changed
/)
Notiz:
Anstelle von WCs auf Servern ssh & svn up
können Sie FTP oder scp verwenden - weniger Subversion, mehr Kopfschmerzen beim Aktualisieren von Websites (gelöschte Dateien werdennichtper FTP gelöscht werden|scp und der gesamte Vorgang scheint /für mich/)