Sur votre ordinateur, modifiez votre ~/.ssh/config et ajouter:
Host example
Hostname example.com
User myuser
IdentityFile ~/.ssh/YOURPRIVATEKEY
Vous devriez être en mesure de vous connecter à votre instance avec "ssh exemple". Souvenez-vous de votre clé privée doit être chmod 400. Une fois que vous pouvez ssh sans l'aide de "ssh -i maclé.pem username@host", procédez de la manière suivante.
Sur votre instance EC2, initialiser un dépôt nu, qui est utilisé pour le pousser à exclusivement. La convention est d'ajouter l'extension ".git" du nom du dossier. Cela peut être différent de votre local repo qui, normalement, a comme .git dossier à l'intérieur de votre "projet" du dossier. Nu référentiels (par définition) ne disposent pas d'un arbre de travail attaché à eux, de sorte que vous ne pouvez pas facilement ajouter des fichiers à eux comme vous le feriez normalement non-dépôt nu. C'est juste qu'ils manière dont c'est fait. Sur votre instance ec2:
mkdir project_folder.git
cd project_folder.git
git init --bare
Maintenant, de retour sur votre machine locale, utilisez l'alias d'hôte ssh lors de la configuration de votre télécommande.
git remote add ec2 EXAMPLEHOSTFROMSSHCONFIG:/path/to/project_folder.git
Maintenant, vous devriez être en mesure de le faire:
git push ec2 master
Maintenant, votre code est poussé vers le serveur sans aucun problème. Mais le problème à ce point, c'est que votre dépôt nu sur l'instance ec2 ne contient pas les "fichiers de travail" de votre serveur web a besoin pour s'exécuter. Donc, vous devez configurer un "crochet" script qui s'exécute lorsque vous poussez à l'ec2. Ce script va remplir le dossier approprié sur votre instance ec2 avec votre réelle des fichiers de projet.
Donc, sur votre instance ec2, allez dans votre project_folder.git/hooks répertoire. Ensuite, créez un fichier appelé "post-recevoir" et chmod 775 (il doit être exécutable). Ensuite, insérez ce script bash:
#!/bin/bash
while read oldrev newrev ref
do
branch=`echo $ref | cut -d/ -f3`
if [ "ec2" == "$branch" -o "master" == "$branch" ]; then
git --work-tree=/var/www/example.com/public_html/ checkout -f $branch
echo 'Changes pushed to Amazon EC2 PROD.'
fi
done
Maintenant, sur votre machine locale, faire un "git push ec2 maître" et il devrait pousser le code de votre nu repo, et puis l'après-recevoir crochet script checkout vos fichiers dans le dossier approprié que votre serveur web est configuré pour lire.