Maison développement back-end Problème PHP Comment implémenter le déploiement automatisé git de scripts php

Comment implémenter le déploiement automatisé git de scripts php

Jan 11, 2022 am 09:40 AM
git 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.

Comment implémenter le déploiement automatisé git de scripts 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

Créez d'abord un entrepôt sur gitee code cloud

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
Copier après la connexion

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
Copier après la connexion

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 suffisantes

vim /etc/passwd
添加下面的一行
www:x:1001:1001::/home/www:/bin/bash
Copier après la connexion

1001 est l'identifiant du groupe d'utilisateurs, utilisez la commande suivante pour afficher l'identifiant de l'utilisateur www
cat /etc/group
Copier après la connexion

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
Copier après la connexion

#(2) Modifier sudoers

vim /etc/sudoers
Copier après la connexion

#(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
Copier après la connexion

#(4) Reprendre l'autorisation d'écriture à sudoers

chmod u-w /etc/sudoers
Copier après la connexion

Modifier la configuration de php-fpm.conf pour définir le visiteur, mon voici www, également C'est la configuration par défaut de phpComment implémenter le déploiement automatisé git de scripts 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)Comment implémenter le déploiement automatisé git de scripts php
Générer la clé publique

mkdir -p /home/www/.ssh
Copier après la connexion
chown -R www.www /home/www/.ssh
Copier après la connexion
ssh-keygen -t rsa
Copier après la connexion

Afficher la clé publique

cat /home/www/.ssh/id_rsa.pub
Copier après la connexion

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 iciComment implémenter le déploiement automatisé git de scripts php 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) Comment implémenter le déploiement automatisé git de scripts php

    chdir("/home/wwwroot/default/HiAdmin");
    exec("git pull origin master 2>&1", $out);
    foreach($out as $v)
    {
        echo iconv( 'GB2312','UTF-8', $v)."<br>";
    }
Copier après la connexion

Ç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 pullComment implémenter le déploiement automatisé git de scripts php
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权限的问题,我遇到的是出现一下问题
Comment implémenter le déploiement automatisé git de scripts php
到这里的原因是因为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 提交
Copier après la connexion

最后解决完以上问题,大功告成,上一张成功的截图
Comment implémenter le déploiement automatisé git de scripts php
自己的后端语言是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!

Déclaration de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Vous avez un jeu croisé?
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Comment supprimer un référentiel par git Comment supprimer un référentiel par git Apr 17, 2025 pm 04:03 PM

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.

Comment se connecter au réseau public du serveur GIT Comment se connecter au réseau public du serveur GIT Apr 17, 2025 pm 02:27 PM

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).

Comment gérer le conflit du code GIT Comment gérer le conflit du code GIT Apr 17, 2025 pm 02:51 PM

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.

Comment soumettre des dossiers vides dans git Comment soumettre des dossiers vides dans git Apr 17, 2025 pm 04:09 PM

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.

Comment générer des clés SSH dans Git Comment générer des clés SSH dans Git Apr 17, 2025 pm 01:36 PM

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 des clés publiques au compte GIT Comment ajouter des clés publiques au compte GIT Apr 17, 2025 pm 02:42 PM

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.

Comment utiliser Git Rebase Comment utiliser Git Rebase Apr 17, 2025 pm 04:00 PM

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.

Comment utiliser le référentiel GIT Comment utiliser le référentiel GIT Apr 17, 2025 pm 04:06 PM

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

See all articles