Configuration de Git sur EC2 à tirer de dépôt GitHub
Je suis un peu nouveau pour les deux EC2 et Git, et je viens de mettre en place ma première instance EC2, à l'aide d'un chiffon propre AMI Amazon Linux. J'ai aussi installé MySQL, Apache et PHP, et permis l'ouverture de certains ports pour le faire fonctionner comme un serveur web, de répondre à un élastique IP.
Maintenant, mon code est sur un domaine privé de pensions sur GitHub, et je voudrais effectuer de simples déploiements en faisant git pull
ou quelque chose comme ça. Git est également installé sur le serveur déjà. Je sais que je pourrais créer mon repo git sur le serveur à l'aide de mon personnel clé ssh, mais il me semble bizarre. Je suppose que l'autre solution serait de créer une nouvelle GitHub de l'utilisateur et de l'utiliser sur le serveur, mais il ne semble pas bon.
Comment puis-je parvenir à un élégant, de façon sécuritaire?
Vous devez vous connecter pour publier un commentaire.
Pour éviter d'avoir à garder une clé privée SSH sur votre instance EC2, les gens utilisent souvent un flux de travail qui consiste à pousser pour que le serveur distant afin de déployer. Essentiellement, vous avez défini un nu-référentiel git-il avec un
pre-receive
crochet qui se déploie dans un autre répertoire. Il est un exemple simple de faire cela dans ce tutoriel. Ensuite, vous avez seulement besoin d'avoir votre SSH public clé dans~/.ssh/authorized_keys
sur le serveur. Cependant, avec ce flux de travail, vous ne pouviez pas déployer directement à partir de votre dépôt GitHub - vous besoin de tirer localement, puis de pousser à l'EC2 machine.Une alternative est l'utilisation de GitHub déployer des touches de mécanisme. Ce serait la création d'une nouvelle clé SSH-paire sur votre instance EC2, et l'ajout de la clé publique en tant que déployer clé dans votre repository sur GitHub. Ensuite, vous pouvez tirer directement à partir de votre dépôt GitHub pour votre instance EC2.
Je viens de résoudre cette situation en suivant les tutoriel que Marque Longair pointu avant. Le seul problème que j'ai eu dans la création de la nue-dépôt git. Alors permettez-moi de reprendre comment je l'ai résolu.
/home/ubuntu/.ssh/authorized_keys
fichier.mkdir sitesrepo.git websites
.cd sitesrepo.git && git init --bare
J'ai créé le crochet de fichier via vim avec le contenu suivant dans un fichier nommé
post-receive
et puis je l'ai rendu exécutable viachmod +x post-receive
(tout comme le tutoriel indiqué). Ce fichier doit être placé au/home/ubuntu/sitesrepo.git/hooks
Voici où mes pas différer le tutoriel mentionné avant: Un nu-dépôt git a un conflit où il ne peut pas tenir le worktree être un dépôt nu (Il n'a pas de sens puisque c'est un dépôt nu. Non nu référentiels sont destinés à avoir un espace de travail, c'est à dire un worktree). Heureusement, vous pouvez configurer manuellement le référentiel
config
fichier. En éditant le fichier/home/ubuntu/sitesrepo.git/config
vous devez vous assurer d'avoir quelque chose comme ceci:Maintenant, à votre propre machine, à votre git repository local dossier de travail, l'idée est d'ajouter un nouveau dépôt distant. Actuellement, vous avez configuré par défaut
origin
qui indique à votre référentiel de pousser votre contenu sur le github du référentiel. Le tutoriel appels tels dépôt distantweb
. Donc, vous devez exécuter une seule fois:git remote add web ssh://mysite.com/home/ubuntu/sitesrepo.git && git push web +master:refs/heads/master
. Le subséquente pousse peut se faire via un simplegit push web
En fonction du nombre de sites que vous envisagez d'attente, vous devez configurer votre serveur apache
sites-enabled
hosts. Aussi, depuis que vous utilisez apache, n'oubliez pas de changer le dossier web à point à/home/ubuntu/websites
, car par défaut il des points à/var/www
Mais vous êtes prêt à aller, il suffit de ne pas oublier de redémarrer le service apache après la définition du nouveau dossier web.Espère que cette aide avec votre question.