En su máquina local, edite su ~ / .ssh / config y agregue:
Host example
Hostname example.com
User myuser
IdentityFile ~/.ssh/YOURPRIVATEKEY
Debería poder iniciar sesión en su instancia con "ssh example". Recuerde que su clave privada debe ser chmod 400. Una vez que pueda ingresar sin usar "ssh -i mykey.pem username @ host", haga lo siguiente.
En su instancia EC2, inicialice un repositorio simple, que se usa para enviar exclusivamente. La convención es agregar la extensión ".git" al nombre de la carpeta. Esto puede parecer diferente a su repositorio local que normalmente tiene una carpeta .git dentro de su carpeta "proyecto". Los repositorios desnudos (por definición) no tienen un árbol de trabajo adjunto, por lo que no puede agregarles archivos fácilmente como lo haría en un repositorio normal no desnudo. Así es como se hace. En su instancia ec2:
mkdir project_folder.git
cd project_folder.git
git init --bare
Ahora, de vuelta en su máquina local, use el alias de host ssh cuando configure su control remoto.
git remote add ec2 EXAMPLEHOSTFROMSSHCONFIG:/path/to/project_folder.git
Ahora, debería poder hacer:
git push ec2 master
Ahora su código se envía al servidor sin problemas. Pero el problema en este punto es que su carpeta www en la instancia ec2 no contiene los "archivos de trabajo" reales que su servidor web necesita ejecutar. Por lo tanto, necesita configurar un script de "gancho" que se ejecutará cuando presione a ec2. Esta secuencia de comandos llenará la carpeta apropiada en su instancia ec2 con sus archivos de proyecto reales.
Entonces, en su instancia ec2, vaya a su directorio project_folder.git / hooks. Luego cree un archivo llamado "post-receive" y chmod 775 (debe ser ejecutable). Luego inserte este 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
Ahora, en su máquina local, haga un "git push ec2 master" y debería enviar el código a su repositorio básico, y luego el script de enlace posterior a la recepción revisará sus archivos en la carpeta apropiada que su servidor web está configurado para leer.
ssh-add /private/key/path
¡trabajó!