Je vais vous montrer comment créer facilement un outil pour déployer le contenu poussé vers git sur le serveur de production. Je suppose que je déploierai Laravel cette fois, mais je pense qu'il n'y a pas de problème particulier avec les autres langues. J'aimerais que vous ignoriez les endroits qui traitent du compositeur. Le site qui utilise ce type de méthode de déploiement ces jours-ci peut être hérité, mais ...
Après avoir développé dans votre propre environnement local, git commit et poussez pour monter à distance. Le code que les membres du projet ont poussé à distance s'accumule de plus en plus. Donnons-le au serveur de production à un bon stade! Donc, à ce moment-là, utilisez l'outil de déploiement pour refléter le dernier statut git dans l'environnement de production.
Le fait est qu'il est nécessaire de définir l'environnement dans lequel l'outil de déploiement est placé afin que la connexion ssh puisse toujours être établie dans l'environnement de production. Assurez-vous que vous avez vos clés publiques et privées dans un ensemble dans votre environnement de déploiement et conservez vos clés publiques en production. Considérez cette clé privée comme une clé pour un environnement verrouillé par un ensemble de clés publiques.
Veuillez vous référer ici
Résumé des paramètres d'authentification par clé publique ssh --Qiita
Dois-je git pull dans un environnement de production? ?? Vous pensez peut-être, mais je me demande si ce sera plus sûr car il peut être évité dans une certaine mesure en le limitant sur l'outil de déploiement. En outre, c'est un bon point que vous pouvez gérer de manière flexible des choses autres que le contenu de git.
rsync est une commande utilisée lorsque vous souhaitez copier un fichier de votre environnement sur un autre serveur. Fondamentalement
rsync [option] copier la destination de la copie source
Je vais copier en utilisant cette méthode. Cependant, puisqu'il est temps de déployer, j'ajouterai quelques options.
rsync \
--recursive \
--exclude='/storage/' \
--exclude='.git*' \
-e "ssh" ./ deploy@[Adresse IP de production]:[Où déployer l'environnement de production (e.g /var/Sous www)]
--- récursif signifie «récursif». Le sens est que dans la structure du répertoire, celui du bas est également la cible. Cette fois, tous les éléments sous ./ sont maintenant sujets à copie.
--exclude signifie "exclure". Par conséquent, le stockage ne sera pas déployé dans l'environnement de production. (Recommandé pour ceux qui envisagent de déployer Laravel! Vous pouvez empêcher le déplacement du journal de l'environnement de test)
Dernier
-e" ssh "./ deploy @ [Adresse IP de production]: [Emplacement de destination de production (comme sous par exemple / var / www)]
Vous pourrez établir une connexion SSH avec l'environnement de production avec. Vous êtes maintenant prêt à copier!
$BASE_DIR =Où faire un git pull sur le serveur de déploiement
$PROD_ADDRESS =Adresse IP de production
$REMOTE_DIR =Où déployer l'environnement de production
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
En préparation du déploiement, nous nous déplaçons à l'endroit où nous faisons git pull, puis tirons et exécutons l'installation de composer. Enregistrez-le sous deploy.sh et exécutez-le pour le déployer! De plus, si vous créez une fonction de validation et la validez, vous pourrez la déployer plus en toute sécurité! Par exemple, vous pouvez vérifier si l'état du schéma de base de données de l'environnement de production et de l'environnement local sont identiques, ou vous pouvez utiliser pleinement la commande mysqldump. Pour le moment, la partie de base est terminée.
Recommended Posts