Ich werde Ihnen zeigen, wie Sie auf einfache Weise ein Tool zum Bereitstellen der auf git übertragenen Inhalte auf dem Produktionsserver erstellen. Dieses Mal gehe ich davon aus, Laravel bereitzustellen, aber ich denke, es gibt kein Problem mit anderen Sprachen. Ich möchte, dass Sie die Orte ignorieren, die sich mit Komponisten befassen. Die Site, die heutzutage diese Art der Bereitstellungsmethode verwendet, ist möglicherweise ein Legacy-Standort, aber ...
Nachdem Sie sich in Ihrer eigenen lokalen Umgebung entwickelt haben, setzen Sie git fest und drücken Sie, um remote hochzufahren. Der Code, den die Projektmitglieder aus der Ferne gepusht haben, sammelt sich immer mehr an. Lassen Sie es uns in einem guten Stadium dem Produktionsserver geben! Verwenden Sie zu diesem Zeitpunkt das Bereitstellungstool, um den neuesten Git-Status in der Produktionsumgebung wiederzugeben.
Der Punkt ist, dass es notwendig ist, die Umgebung festzulegen, in der sich das Bereitstellungstool befindet, damit die SSH-Verbindung immer in der Produktionsumgebung hergestellt werden kann. Vergessen Sie nicht, den öffentlichen und den privaten Schlüssel als Satz in der Umgebung vorzubereiten, in der Sie ihn bereitstellen, und den öffentlichen Schlüssel in der Produktionsumgebung beizubehalten. Stellen Sie sich diesen privaten Schlüssel als Schlüssel für eine Umgebung vor, die durch einen Satz öffentlicher Schlüssel gesperrt ist.
Bitte beziehen Sie sich hier
Zusammenfassung der Authentifizierungseinstellungen für den öffentlichen Schlüssel von ssh - Qiita
Sollte ich in einer Produktionsumgebung ziehen? ?? Sie mögen denken, aber ich frage mich, ob es sicherer sein wird, da es bis zu einem gewissen Grad verhindert werden kann, indem es auf das Bereitstellungstool beschränkt wird. Es ist auch ein guter Punkt, dass Sie flexibel mit anderen Dingen als dem Inhalt von Git umgehen können.
rsync ist ein Befehl, der verwendet wird, wenn Sie eine Datei in Ihrer Umgebung auf einen anderen Server kopieren möchten. Grundsätzlich
rsync [Option] Quellkopie kopieren Ziel
Ich werde mit dieser Methode kopieren. Da es jedoch Zeit für die Bereitstellung ist, werde ich einige Optionen hinzufügen.
rsync \
--recursive \
--exclude='/storage/' \
--exclude='.git*' \
-e "ssh" ./ deploy@[Produktions-IP-Adresse]:[Wo wird die Produktionsumgebung bereitgestellt? (E..g /var/Unter www)]
--- rezessiv bedeutet "rezessiv". Die Bedeutung ist, dass in der Struktur des Verzeichnisses das untere auch das Ziel ist. Dieses Mal werden nun alle Elemente unter ./ kopiert.
--exclude bedeutet "ausschließen". Daher wird kein Speicher in der Produktionsumgebung bereitgestellt. (Empfohlen für diejenigen, die Laravel bereitstellen möchten! Sie können verhindern, dass das Protokoll für die Testumgebung verschoben wird.)
Letzte
-e" ssh "./ deploy @ [Produktions-IP-Adresse]: [Produktionszielspeicherort (z. B. unter z. B. / var / www)]
Mit können Sie eine SSH-Verbindung zur Produktionsumgebung herstellen. Jetzt können Sie kopieren!
$BASE_DIR =Wo wird ein Git-Pull auf dem Bereitstellungsserver ausgeführt?
$PROD_ADDRESS =Produktions-IP-Adresse
$REMOTE_DIR =Wo wird die Produktionsumgebung bereitgestellt?
function prepare_deploy(){
cd $BASE_DIR
echo -e "Pulling..."
git pull origin master
echo -e "Composer install..."
composer install
composer dump-autoload
echo -e "Composer install finished"
}
function deploy(){
rsync \
--recursive \
--exclude='/storage/' \
--exclude='.git*' \
-e "ssh" ./ deploy@$PROD_ADDRESS:$REMOTE_DIR
echo -e "Deploy finished!"
}
prepare_deploy
deploy
In Vorbereitung auf die Bereitstellung bewegen wir uns an den Ort, an dem wir Git ziehen, ziehen und führen dann die Composer-Installation durch. Speichern Sie es als deploy.sh und führen Sie es aus, um es bereitzustellen! Wenn Sie eine Validierungsfunktion erstellen und validieren, können Sie diese außerdem sicherer bereitstellen! Sie können beispielsweise überprüfen, ob der DB-Schemastatus der Produktionsumgebung und der lokalen Umgebung identisch ist, oder den Befehl mysqldump verwenden. Der grundlegende Teil ist vorerst abgeschlossen.