


Comment implémenter le déploiement automatisé git de scripts php
Comment implémenter le déploiement automatisé de scripts php : 1. Installez git ; 2. Clonez le code de l'entrepôt ; 3. Changez les autorisations Linux et modifiez la configuration ; 4. Ajoutez l'utilisateur www aux sudoers ; . Remplissez le nom de domaine du webhook, téléchargez le script php.
L'environnement d'exploitation de cet article : système Linux5.9.8, Git version 2.30.0, ordinateur DELL G3
Comment implémenter le déploiement automatisé git de scripts php ?
git+php déployer un webhook automatisé scripts pour réaliser la synchronisation du code
Cet article présentera git+php pour déployer des scripts automatisés de webhook pour réaliser la synchronisation du code
Git avec le déploiement automatisé de webhook n'est pas une technologie sophistiquée, mais j'ai fait de nombreux détours lors de mon premier déploiement, je suis principalement considéré comme un novice sous Linux. Cet article enregistre les problèmes et les pièges sujets aux erreurs
Préparation
Déployer des noms de domaine Web accessibles, des scripts php côté serveur et des processus automatisés de code d'entrepôt cloud. dans l'environnement lnmp, local push->gitee Warehouse webhook->linux server php script pull
Utilisez le protocole ssh pour communiquer avec l'entrepôt localement. Mon ordinateur local est Windows, je ne le ferai pas. présentez ici comment générer l'adresse publique ssh. Clé, qui sera introduite sous Linux ci-dessous
1. Installez git
yum install git
2 Clonez le code de l'entrepôt "Notez que vous devez utiliser le protocole ssh, le reste est basé sur ssh. "
git initgit clone git@gitee.com:zhuyanbin/HiAdmin.git
3. Changez les autorisations Linux et modifiez la configuration
Parce que nous Le webhook informe le serveur qu'il s'agit d'un accès externe, donc l'utilisateur administrateur ici est l'utilisateur www par défaut, donc www doit recevoir des autorisations suffisantesvim /etc/passwd 添加下面的一行 www:x:1001:1001::/home/www:/bin/bash
1001 est l'identifiant du groupe d'utilisateurs, utilisez la commande suivante pour afficher l'identifiant de l'utilisateur www
cat /etc/group
Ajoutez l'utilisateur www aux sudoers et exécutez le shell sans mot de passe
#(1) Ajoutez l'autorisation d'écrire des sudoers dans le utilisateur actuel
chmod u+w /etc/sudoers
#(2) Modifier sudoers
vim /etc/sudoers
#(3) Recherchez Autoriser root à exécuter n'importe quelle commande n'importe où, écrivez le contenu suivant sous la ligne correspondante de l'utilisateur root :
www ALL=(ALL) NOPASSWD:/usr/bin/git
#(4) Reprendre l'autorisation d'écriture à sudoers
chmod u-w /etc/sudoers
Modifier la configuration de php-fpm.conf pour définir le visiteur, mon voici www, également C'est la configuration par défaut de php
4. Enfin générer la clé (cette étape doit soyez l'utilisateur www pour générer la clé, ps : je suis bloqué à cet endroit depuis deux jours et j'utilise le compte administrateur root pour la générer. Baidu a passé plusieurs jours, a essayé diverses méthodes, puis est passé au www. utilisateur pour générer la clé et tout était ok)
Générer la clé publique
mkdir -p /home/www/.ssh
chown -R www.www /home/www/.ssh
ssh-keygen -t rsa
Afficher la clé publique
cat /home/www/.ssh/id_rsa.pub
Copiez la clé publique générée dans la clé publique de l'entrepôt du cloud de code gitee Remplissez l'endroit
https://gitee. com/profile/sshkeys
Supplément : Il y a deux endroits où gitee peut remplir la clé publique. L'un est la clé publique de l'entrepôt. Si vous remplissez la clé publique de l'entrepôt, l'autorisation git côté serveur le sera. seulement l'autorisation pull, et l'autre est la clé publique du compte. Si vous remplissez la clé publique de votre compte personnel, vous aurez les autorisations pull, push et autres. J'utilise la clé publique du compte personnel directement ici 5. . Enfin, remplissez le nom de domaine du webhook et téléchargez le script php
Remplissez le nom de domaine de l'adresse de notification du webhook (le paramètre de mot de passe est vide, il n'y aura pas de vérification du mot de passe en php plus tard, si vous pensez à la sécurité, veuillez définir le mot de passe plus tard)
Accédez au gestionnaire de script php hook.php (exécutez la commande Linux)
chdir("/home/wwwroot/default/HiAdmin"); exec("git pull origin master 2>&1", $out); foreach($out as $v) { echo iconv( 'GB2312','UTF-8', $v)."<br>"; }
Ça y est, après avoir configuré le code du serveur ci-dessus, il peut être automatiquement synchronisé pour terminer le déploiement automatiséUn problème est survenu
1. Le script php n'est pas exécuté
La raison en est que de nombreuses fonctions PHP dans php.ini ne sont pas ouvertes par défaut, y compris l'exécution de la fonction de script Linux exec() shell_exec(), etc. Recherchez php.ini, recherchez les fonctions désactivées. et supprimez la fonction correspondante, ou commentez la ligne entière
2. Impossible d'exécuter la commande git pull
Problème 1
La vérification de la clé de l'hôte a échoué.
fatal : impossible de lire à partir du référentiel distant. Veuillez vous assurer vous disposez des droits d'accès corrects
et le référentiel existe.
归根结底还是因为linux权限的问题,我遇到的是出现一下问题
到这里的原因是因为root生成git公钥密钥,而切换到www后生成公钥密钥后就成功了(上述第四小步生成公钥,一定使用www生成公钥密钥)
问题二
error: insufficient permission for adding an object to repository database .git/objects
fatal: failed to write object
fatal: unpack-objects failed
这个还是没有权限执行git命令,只需要执行以下
第一步:cd .git/objects 定位到git下的objects文件下 第二步: ls -al 查看git库的所有者(git用户 git组) 第三步: chown -R yourname:yourgrounp * 或者sudo chmod 777 -R .git/objects 提交
最后解决完以上问题,大功告成,上一张成功的截图
自己的后端语言是php,这里可以用多种方式去实现执行linux脚本,nodejs,python等等
推荐学习:《PHP视频教程》
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Pour supprimer un référentiel GIT, suivez ces étapes: Confirmez le référentiel que vous souhaitez supprimer. Suppression locale du référentiel: utilisez la commande RM -RF pour supprimer son dossier. Supprimer à distance un entrepôt: accédez à l'entrepôt, trouvez l'option "Supprimer l'entrepôt" et confirmez l'opération.

La connexion d'un serveur GIT au réseau public comprend cinq étapes: 1. Configurer l'adresse IP publique; 2. Ouvrez le port de pare-feu (22, 9418, 80/443); 3. Configurer l'accès SSH (générer des paires de clés, créer des utilisateurs); 4. Configurer l'accès HTTP / HTTPS (installer les serveurs, configurer les autorisations); 5. Testez la connexion (en utilisant les commandes SSH Client ou GIT).

Le conflit de code fait référence à un conflit qui se produit lorsque plusieurs développeurs modifient le même morceau de code et provoquent la fusion de Git sans sélectionner automatiquement les modifications. Les étapes de résolution incluent: ouvrez le fichier contradictoire et découvrez le code contradictoire. Furiez le code manuellement et copiez les modifications que vous souhaitez maintenir dans le marqueur de conflit. Supprimer la marque de conflit. Enregistrer et soumettre des modifications.

Pour soumettre un dossier vide dans GIT, suivez simplement les étapes suivantes: 1. Créez un dossier vide; 2. Ajouter le dossier à la zone de stadification; 3. Soumettre les modifications et saisir un message de validation; 4. (Facultatif) Poussez les modifications au référentiel distant. Remarque: le nom d'un dossier vide ne peut pas commencer. Si le dossier existe déjà, vous devez utiliser Git Add --Force pour ajouter.

Afin de se connecter en toute sécurité à un serveur GIT distant, une clé SSH contenant des clés publiques et privées doit être générée. Les étapes pour générer une touche SSH sont les suivantes: Ouvrez le terminal et entrez la commande ssh-keygen -t rsa -b 4096. Sélectionnez l'emplacement d'enregistrement de la clé. Entrez une phrase de mot de passe pour protéger la clé privée. Copiez la clé publique sur le serveur distant. Enregistrez correctement la clé privée car ce sont les informations d'identification pour accéder au compte.

Comment ajouter une clé publique à un compte GIT? Étape: générer une paire de clés SSH. Copiez la clé publique. Ajoutez une clé publique dans Gitlab ou GitHub. Testez la connexion SSH.

Git Rebase est utilisé pour réappliquer une nouvelle ligne de base pour nettoyer l'historique ou déplacer les branches. Comment utiliser: Créer une branche cible Sélectionnez le commit à réappliquer et exécuter la commande GIT Rebase, spécifier la branche cible et la portée de la validation pour résoudre les conflits, continuer à réappliquer les modifications de vérification des engagements restants.

Un référentiel GIT est l'emplacement de stockage pour l'historique des versions du code et du fichier qui est utilisé pour suivre les modifications, collaborer et gérer les versions du projet. Pour utiliser un référentiel GIT, effectuez les étapes suivantes: Créez un référentiel: Exécutez Git init. Ajouter un fichier: utilisez GIT ADD pour ajouter le fichier dans la zone de stadification. Commissez les modifications: utilisez GIT Engagez pour stocker les modifications de stadification du référentiel. Modifications de poussée: utilisez Git Push pour pousser les modifications dans un référentiel distant. Modifications de traction: utilisez Git Pull pour obtenir des modifications du référentiel distant. Branche: Créez une branche à l'aide de la branche GIT. Merge: Utilisez GIT Merge pour fusionner les modifications de différentes branches. Tag: utilisez la balise git
