Maison  >  Article  >  développement back-end  >  Processus de contrôle et de publication de la version du projet PHP

Processus de contrôle et de publication de la version du projet PHP

不言
不言original
2018-04-26 14:39:074784parcourir

Cet article concerne le contrôle de version et le processus de publication du projet PHP. Les amis qui en ont besoin peuvent y jeter un œil




1. [Local==> L'entrepôt est terminé, GIT déclenche le script hook du serveur de test pour extraire automatiquement le code de mise à jour :

  1. Serveur de test

    1. Principe d'exécution

    2. Script PHP : /home/git/hook/www.xxx.com.php, Remarque : doit être présent Supprimez le système dans Disable_function dans php.ini (c'est-à-dire activez l'autorisation d'exécution du script)

    3. Lorsque git push est déclenché, le POST de l'entrepôt est déclenché pour appeler le script PHP . L'URL du script PHP : http://XXX.XXX.COM/hook/www.xxx.com.php

    4. Le PHP. Le script retarde l'exécution du script SHELL. Implémentez l'extraction du code depuis l'entrepôt

    5. Consultez l'URL et le protocole distants actuels : git remote -v

    6. Copiez le git du projet dans l'adresse SSH oschina : git@git.oschina.net:echobar/test.git

    7. Changement du protocole et de l'adresse ssh : git remote set -url origin git@git.oschina.net : echobar/test.git

    8. git pull

    9. Créer un répertoire personnel pour l'utilisateur www (la clé publique et le propriétaire GIT sont tous définis sur www, sinon cela pourrait entraîner des autorisations insuffisantes pour exécuter automatiquement le script SHELL)

    10. Générer une clé publique

    11. Afficher la clé publique : cat ~/.ssh/id_rsa pub

    12. Copiez-la dans les paramètres de clé publique de git.oschina.net

    13. mkdir /home/www && chown -R www: www /home/www

    14. sudo -u www ssh-keygen -t rsa -C "15516026@qq.com "

    15. miam - et installez git

    16. cd /home

    17. sudo -u www git clone git@git.oschina.net:echobar/test.git

    18. Installez git et clonez le projet avec l'utilisateur www

    19. Configurez le public clé

    20. Test extraire manuellement le code

    21. Écrire un script hook pour extraire le code GIT

$params = $_GET + $_POST + $_SERVER;

if (isset($params['HTTP_USER_AGENT']) && $params['HTTP_USER_AGENT'] == 'git-oschina-hook') {

sleep(10);

$cmd = "/home/git/hook/www.xxx .com.sh";

system($cmd, $rs);

}

  1. Script SHELL : /home/git/hook/

    www.xxx.com.sh, note : N'oubliez pas d'exécuter l'autorisation chmod a+x *.sh

# ! /bin/bash

cd /home/www.xxx.com && git pull

#log

echo "`date +%Y%m%d_%H% M%S`,Réussite du code d'extraction[Master]" >> "/home/git /hook/log/pull_www.xxx.com_`date +%Y%m`.log"

  1. Code d'hébergement de l'entrepôt GIT :

    https://git.oschina.net

    1. Créer un projet privé www.xxx.com

    2. Définissez l'adresse du webhook sur l'URL du script php du serveur de test ci-dessus :

      http://XXX.XXX.COM/hook/www.xxx.com.php

    3. Ajouter la clé publique au projet ou aux paramètres utilisateur personnels (recommandé pour les particuliers. Dans les paramètres utilisateur, tous les projets peuvent utiliser globalement la même clé publique)

  2. Local

    1. clone de git

      https://git.oschina.net/echobar/www.xxx.com.git

    2. Note .gitignore, configuré pour exclure les fichiers et répertoires qui n'ont pas besoin d'être synchronisés

    3. Ajouter/modifier des fichiers

    4. git add .

    5. git commit -m test

    6. git pull

    7. git rebase master

    8. git push

    9. sudo -Hu www git config --global user.name "echobar"

    10. sudo -Hu www git config --global user.email "15516026@qq.com" # Veuillez contacter oschina pour un e-mail. Conforme à la

    11. configuration de git

    12. git soumettre le code local à l'entrepôt

    13. Voir sur oschina Si le fichier du projet est mis à jour avec succès

    14. Vérifiez si le code du serveur de test est mis à jour S'il est mis à jour, cela signifie que la configuration est réussie et si elle réussit parfois ; échoue parfois, il peut s'agir d'un problème de retard dans l'appel du hook et doit être modifié. Le temps de retard du script PHP, ou exécutez manuellement le code suivant pour extraire : http://xxx.xxx.com/hook/www. xxx.com.php?HTTP_USER_AGENT=git-oschina-hook

2. [Serveur de test ==> Serveur officiel] Écrivez un. script de synchronisation à distance et exécutez-le manuellement lors de la publication. Méthode de synchronisation : RSYNC+SSH

  1. ssh

    1. . yum -y install ssh

    2. Serveur de test Générer une clé publique : ssh-keygen

    3. Copiez la clé publique du serveur de test vers le serveur officiel service : ssh-copy-id -i ~/.ssh/id_rsa.pub IP du serveur cible (besoin de saisir le mot de passe du serveur distant)

  2. rsync

    1. yum -y install rsync

  3. Créer un script de synchronisation : touch /home/rsync_www.xxx.com_from_test_to_prod.sh, Remarque : --exclude-from exclure la liste des fichiers, faites attention à exclure les fichiers qui n'ont pas besoin d'être synchronisés

#!/bin/sh

# sauvegarde

ssh root@10.10.10.10 "/bin/sh /root/scripts/ backup_html.sh"

# rsync

rsync - rlptDvz --exclude-from=exclude_www.xxx.com -e ssh /home/www.xxx.com/ root@10.10 .10.10:/home/wwwdata/www.xxx.com

  1. Effectuer la synchronisation du serveur de test vers le serveur officiel (rsync+ssh)

  1. /home/rsync_www.xxx.com_from_test_to_prod.sh


Remarque : Les parties jaunes ci-dessus sont les codes qui doivent être exploités lors de la publication localement sur le serveur de test et du serveur de test vers le serveur officiel.


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn