Il y a des milliers de fichiers sur le site Web. Il est impossible de télécharger à nouveau l'intégralité du site Web via FTP à chaque fois que des dizaines de fichiers sont modifiés. Cependant, ce n'est pas une tâche facile de se rappeler quels fichiers ont été modifiés à chaque fois. Et ces fichiers modifiés sont dispersés dans de nombreux dossiers différents, ce qui rend plus difficile leur recherche un par un et leur téléchargement.
Alors, comment télécharger avec précision et commodité uniquement les fichiers modifiés à chaque fois ?
PS. Mon approche actuelle consiste à installer git sur l'environnement de développement local, à installer git sur le serveur distant, puis à pousser ici et à tirer là. Mais vous devez toujours utiliser Telnet ou SSH vers l'extrémité distante pour extraire. Existe-t-il une méthode plus automatique après le push ici, le serveur se mettra automatiquement à jour ? Vous voulez entendre les suggestions de chacun.
La méthode la plus simple consiste à télécharger à l'aide de git, qui est fourni avec des hooks, qui peuvent réaliser un déploiement automatique.
J'ai déjà fait la même chose que la personne en question, mais il est facile que plusieurs personnes gâchent le projet.
Merci à @Cocbin pour le rappel, sur la base duquel j'ai soigneusement étudié le principe du hook de Git, puis j'ai fait ce qui suit en fonction de mon projet :
Tout d'abord, parce que j'ai déployé le projet sur le site Web de github, je n'ai pas besoin de configurer moi-même des hooks compliqués, mais j'utilise simplement le webhook fourni avec github. Webhook déclenchera une URL de rappel que vous avez définie lorsque vous effectuez une transmission vers GitHub, et vous pourrez ensuite effectuer l'opération d'extraction dans cette URL.
De plus, sur votre serveur, n'utilisez pas la propre clé ssh du développeur pour extraire. Au lieu de cela, générez une clé de déploiement et placez-la dans github. Cette clé ne nécessite pas de saisie manuelle de mot de passe et est spécifiquement utilisée pour extraire du contenu de github. . Down, ceci termine le déploiement automatique.
J'ai également regardé Hudson et Jenkins, qui sont tous deux de très bons outils. Si vous réalisez un projet Java, vous devriez utiliser Jenkins, car après l'acquisition d'Hudson par Oracle, il n'est progressivement plus ouvert. Mais comme mon projet est en PHP, je ne peux pas me permettre d'installer un autre ensemble de Java 8 pour cela, donc je n'y ai pas pensé. En fait, il existe également un Jenkins spécial pour PHP, mais il semble toujours trop lourd. moi. Peut-être que j'attendrai que le projet soit plus grand à l'avenir. Il est temps d'envisager de l'utiliser.
Ceci ci-dessus sont quelques expériences, j'espère que cela sera utile aux étudiants qui ont le même problème.
----------C'est la magnifique ligne de démarcation --------------------------
Supplément :
Le processus de fonctionnement réel est bien plus compliqué qu'on ne l'imaginait. Voici le code :
À ce moment-là, lorsqu'il y a un téléchargement push, github rappellera, mais le problème est que le nom d'utilisateur Apache est utilisé lors du rappel, pas le nom d'utilisateur que vous avez utilisé lors du sshing, vous constaterez donc que le Le nom d'utilisateur Apache est différent pour cela. Le répertoire n'a pas d'autorisations d'exploitation :
error: cannot open .git/FETCH_HEAD: Permission denied
Vous devez donc d'abord ajouter ssh_user au groupe Apache :
Modifiez ensuite les autorisations :
La raison pour laquelle il est placé dans ce répertoire est que le répertoire par défaut de l'utilisateur Apache est /var/www. Bien sûr, vous pouvez le remplacer par un autre répertoire, qui peut être plus sûr.
Puis :
Il générera un fichier
known_hosts
dans le dossier .ssh d'Apache. Ensuite, si vous utilisez ssh, vous devez également ajouter les deux fichiersid_rsa
etid_rsa.pub
dans la clé de déploiement générée ci-dessus. le dossier .ssh. Exécutez ensuite la commande suivante plusieurs fois pour vous assurer qu'aucune erreur n'est à nouveau signalée. Ensuite, vous pouvez essayer de pousser une nouvelle version depuis le client pour voir si le déploiement automatique peut réussir.================ Version nationale =====================
Étant donné que le serveur de Github n'est pas en Chine, il entraîne souvent des problèmes d'impossibilité de pousser/tirer, alors envisagez de migrer vers git.oschina.net en Chine. Le processus de migration ne sera pas décrit en détail. Il y a juste quelques points auxquels vous devez prêter attention :
Code sur les webhooks :
Une étape cruciale doit être exécutée. J'étais coincé ici et je n'ai pas trouvé la raison pendant longtemps :
Tout le monde sait que git est un contrôle de version
Permettez-moi de parler des méthodes que j'ai utilisées :
1. Tout d'abord, vous devez disposer d'un service de contrôle de version et d'un service rsync
2. Migrez le code de version stable qui doit être déployé depuis le serveur de version vers. un dossier temporaire
3. Spécifiez le répertoire du serveur de rsync dans le dossier temporaire
4 Utilisez la commande rsync pour synchroniser le répertoire du serveur avec votre répertoire de déploiement
5. dossier temporaire (ajouter un montant), effectuer quelques opérations de mise à jour sur les fichiers du dossier temporaire (si nécessaire), rsync synchronise les fichiers du dossier temporaire avec le répertoire de déploiement (incrémental)
Après avoir terminé le processus ci-dessus, il vous suffit d'exécuter le shell au point 5 ci-dessus à chaque fois que vous soumettez le code.
Bien que ce soit un peu gênant, c'est plus efficace. Si vous ne l'aimez pas, ne le vaporisez pas.