Ich habe ein Projekt, das mit Git versionskontrolliert ist.
Ich möchte in meinem (ssh-fähigen) GoDaddy-Shared-Hosting-Paket ein Repo einrichten, damit ich es per Push bereitstellen kann, anstatt per Drag-and-Drop in FTP.
Irgendwelche Tipps wäre dankbar. Am besten wäre ein Account von jemandem, der es bereits getan hat, aber ich konnte keinen online finden.
Antworten:
Ich hatte das gleiche Problem mit einer Site, die ich in einem HostNine Shared Hosting-Paket gehostet hatte. Sie gewähren Ihnen ebenfalls
ssh
Zugriff, haben aber leider nichtgit
installiert und gewähren Ihnen nicht einmal Zugriff auf die Ausführunggcc
, was das Herunterladen und Installieren von git für Ihren Benutzer ziemlich schwierig macht.Die einzige Möglichkeit, diese Einschränkungen zu umgehen, bestand darin, die Git-Binärdateien von einem anderen Computer zu kopieren, auf dem sie installiert waren. Möglicherweise funktioniert die gleiche Lösung für Sie und Ihren gemeinsam genutzten GoDaddy-Host. Folgendes habe ich getan:
Stellen Sie zunächst fest, über welche Architektur Ihr Server verfügt. In meinem Fall war es 32-Bit (i386). Hier sind ein paar Möglichkeiten, das herauszufinden:
Als nächstes müssen Sie einen anderen Computer finden, auf dem Linux mit derselben Architektur und installiertem Git ausgeführt wird. Sie müssen nicht einmal dieselbe Distribution oder Version von Linux ausführen, solange sie dieselbe Architektur haben und Sie die benötigten Binärdateien und Bibliotheksdateien finden.
So finden Sie den Speicherort der Haupt-Git-Binärdatei:
Einige andere wichtige Binärdateien (wie
git-receive-pack
) befinden sich ebenfalls im selben Verzeichnis. Ich empfehle daher, nur alle/usr/local/bin/git*
zu kopieren , um sicherzustellen, dass Sie alles bekommen, was Sie brauchen.Andere wichtige Dateien, von denen git abhängt, befinden sich in einem 'libexec'-Verzeichnis irgendwo auf dem Quellsystem. Wenn Sie diese nicht überschreiben, wird möglicherweise eine überraschende Fehlermeldung angezeigt, wenn Sie versuchen
git push
, wie folgt vorzugehen:So finden Sie das Verzeichnis mit den wichtigsten Git-Bibliotheken auf target_host:
Ich würde empfehlen, diese Dateien zuerst zu kopieren und dann zu versuchen, git auszuführen, um festzustellen, ob es sich über fehlende gemeinsam genutzte Bibliotheken beschwert. Wenn dies nicht der Fall ist, können Sie (vermutlich) loslegen. Wenn ja, lesen Sie weiter. (Kopieren über gemeinsam genutzte Bibliotheken ist nicht sinnvoll, wenn diese bereits auf dem Zielhost vorhanden sind und die richtige Version aufweisen.)
Sie können die Dateien mit kopieren
scp
,rsync
,ftp
, oder was auch immer Sie sind komfortabel mit. Ich habe soscp
etwas verwendet:Dann ssh zu target_host. Sie müssen einige Zeilen wie diese zu Ihrem hinzufügen
~/.bashrc
:Wenn Sie diesen Schritt vergessen, werden Sie möglicherweise überrascht sein, diesen Fehler zu sehen, wenn Sie Folgendes ausführen
git push
:Dies ist in den Git-FAQ auf git.or.cz dokumentiert:
GIT_EXEC_PATH
ist dokumentiert amman git
:Beschaffe dein neues
~/.bashrc
. Versuchen Sie jetzt zu laufengit
.Das gab es mir zum ersten Mal:
Ich konnte den Speicherort der freigegebenen Bibliotheken zum Kopieren herausfinden, indem ich Folgendes auf dem Quellcomputer ausführte:
In meinem Fall hatte ich nur zu kopieren ,
/lib/libcrypto.so.4
um über~/lib
meinetarget_host
und alles war in Ordnung.Jetzt sollten Sie
git
auf Ihrem gemeinsam genutzten Hosting-Server arbeiten und in der Lage sein, darauf zu pushen!Jetzt müssen Sie entweder ein neues Git-Repository und einen neuen Arbeitsbaum auf Ihrem Server erstellen oder Ihren vorhandenen Repository- / Arbeitsbaum kopieren.
Übrigens, ich glaube nicht, dass Sie in diesem Fall ein nacktes Repository auf dem Server haben möchten, da Sie gesagt haben, dass Sie die eigentlichen Inhaltsdateien (im Gegensatz zu den Dateien, die in einem nackten Repository enthalten wären) immer bereitstellen
config HEAD objects/ refs/
möchten du machst eingit push
.toolmantim.com erklärt den Unterschied zwischen einem normalen Git-Repository und einem leeren Repository:
Ich gehe für den Moment davon aus, dass Sie bereits ein Verzeichnis erstellt haben, in
target_host
dem Sie Ihre Website bereitstellen möchten (oder was auch immer Sie bereitstellen). Nennen wir das Verzeichnis~/www/my_site
. Möglicherweise haben Sie sogar über alle Ihre Dateien zu ftp'd~/www/my_site already
. (Ob Sie es getan haben oder nicht, ist nicht wichtig.) Ich gehe auch für den Moment davon aus, dass Sie das .git-Unterverzeichnis noch nicht in dieses kopiert haben~/www/my_site
(es sollte aber gut funktionieren, wenn Sie es getan haben).Da auf target_host noch kein Git-Repository initialisiert ist, müssen Sie zunächst eines erstellen:
Unabhängig davon, auf welchem Host sich das Repository mit den neuesten Änderungen befindet, die Sie bereitstellen möchten (Ihre Entwicklungsbox, würde ich vermuten), müssen Sie zum Bereitstellen nur Folgendes tun:
Möglicherweise wird eine Warnung wie die folgende angezeigt, wenn Ihr Repository auf
target_host
noch nicht aktuell ist:(
git
Ich glaube, im normalen Gebrauch wird diese Meldung nie angezeigt, weil Sie normalerweise auf leere Repositorys drängen . Da unser Remote-Repository in diesem Fall jedoch ein normales Repository mit einem Arbeitsbaum und einem Index ist,git
besteht verständlicherweise die Befürchtung, dass dies der Fall sein könnte etwas durcheinander bringen.)Ich denke, es ist sicher für uns, es auf Ihrem Server auf "Ignorieren" zu setzen, da Sie dort wahrscheinlich keine Commits direkt an das Repository vornehmen. (Alle Commits sollten wahrscheinlich aus Ihrem Entwicklungs-Repository stammen und dann auf den Server übertragen werden.)
Stellen Sie dies so ein, dass die Warnung nicht bei jedem Drücken angezeigt wird:
Der
push
selbst aktualisiert nur den Index, NICHT jedoch die Dateien im Arbeitsbaum. Das Aktualisieren dieser Dateien ist jedoch nur ein Teil der Aufgabe, die wir zu erledigen versuchen. Unsere Aufgabe wird also erst dann erledigt, wenn wirgit
den Inhalt des Index in den Arbeitsbaum selbst schreiben:(Hinweis: Alle Änderungen, die Sie möglicherweise an Ihrem Arbeitsbaum auf dem Server vorgenommen haben, werden durch die Angaben im Repository überschrieben.)
Ich bin auch dem Vorschlag von mattikus gefolgt und habe eine Fernbedienung für meinen Server erstellt:
Jetzt muss ich nur noch Folgendes tun, um das Deployment durchzuführen:
Ich bin sogar so weit gegangen, diese Befehle in ein Skript zu integrieren, das ich benannt habe,
script/deploy
sodass ich bei jeder Bereitstellung nur einen einzigen Befehl ausführen muss.Bitte lassen Sie mich wissen, wenn Sie Fehler in dieser Anleitung finden oder eine bessere Lösung kennen.
quelle
Ich bin sowohl ein SF als auch ein Godaddy n00b, also nimm es mit, aber trotzdem bin ich sehr froh, das hier besprochen zu sehen.
Gerade mal 0,02 US-Dollar, habe ich versucht, Git (dynamisch) auf meiner Linux-Box zu erstellen und auf mein Godaddy-Konto zu übertragen, und selbst wenn ich nur versucht habe, es auf die ansonsten passive Godaddy-Maschine zu übertragen, scheitert es an fehlendem OpenSL. Vielleicht, wenn ich versuche, git mit openssl statisch zu bauen, aber es fühlt sich auch nach einer schlechten Idee an.
Off Topic, aber ist dies der Mangel an Unterstützung, den ich von Godaddy erwarten sollte? Sollte ich es bereuen, nicht stattdessen Traumhosts gewählt zu haben?
Viele Grüße CJ
PS. Keine Antwort, aber ein Vorschlag, dass ein Repository mit einem getrennten Arbeitsbaum eine großartige Möglichkeit darstellt, um es für das Web bereitzustellen, wenn git-receive auf godaddy läuft (oder?): Http://toroid.org/ams/git- Website-Howto
quelle
Der einfachste Weg, dies zu tun, besteht darin, auf Ihrem Remote-Server Folgendes auszuführen:
Dann auf Ihrer Entwicklungskasse:
Es ist weder ein Server noch etwas anderes erforderlich, und Sie sollten in der Lage sein, Daten von diesem Computer abzurufen / abzurufen, solange Sie über SSH-Zugriff verfügen.
Wenn Sie auch Ihre .ssh / config-Datei eingerichtet haben, sollten Sie diese nutzen und alle privaten Schlüssel verwenden, die Sie möglicherweise eingerichtet haben.
Wenn Sie vorhaben, Updates häufig zu veröffentlichen, können Sie Ihrer Entwicklungskasse ein Remote-Repo hinzufügen:
Von da an können Sie:
Weitere Informationen finden Sie in den Online-Dokumenten unter
git push
odergit push --help
rufen Sie die Manpage auf Ihrem lokalen Computer auf .quelle