На вашем локальном компьютере отредактируйте ~ / .ssh / config и добавьте:
Host example
Hostname example.com
User myuser
IdentityFile ~/.ssh/YOURPRIVATEKEY
Вы должны иметь возможность войти в свой экземпляр с помощью "ssh example". Помните, что ваш закрытый ключ должен быть chmod 400. Как только вы сможете войти в ssh без использования «ssh -i mykey.pem username @ host», сделайте следующее.
В вашем экземпляре EC2 инициализируйте пустой репозиторий, который используется исключительно для отправки. Соглашение заключается в добавлении расширения ".git" к имени папки. Это может отличаться от вашего локального репо, которое обычно имеет папку .git внутри вашей папки «project». У обнаженных репозиториев (по определению) нет прикрепленного к ним рабочего дерева, поэтому вы не можете легко добавлять к ним файлы, как это было бы в обычном непокрытом хранилище. Это просто так, как это делается. На вашем экземпляре ec2:
mkdir project_folder.git
cd project_folder.git
git init --bare
Теперь, вернувшись на локальный компьютер, используйте псевдоним хоста ssh при настройке пульта.
git remote add ec2 EXAMPLEHOSTFROMSSHCONFIG:/path/to/project_folder.git
Теперь вы должны быть в состоянии сделать:
git push ec2 master
Теперь ваш код отправляется на сервер без проблем. Но проблема в том, что ваша папка www в экземпляре ec2 не содержит реальных «рабочих файлов», которые должен выполнять ваш веб-сервер. Итак, вам нужно установить скрипт "hook", который будет выполняться при нажатии на ec2. Этот скрипт заполнит соответствующую папку вашего экземпляра ec2 вашими фактическими файлами проекта.
Итак, в вашем экземпляре ec2 перейдите в каталог project_folder.git / hooks. Затем создайте файл с именем «post-receive» и выполните chmod 775 (он должен быть исполняемым). Затем вставьте этот скрипт:
#!/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
Теперь, на вашем локальном компьютере, выполните «мастер git push ec2», и он должен отправить код в ваше пустое хранилище, а затем сценарий ловушки после получения извлечет ваши файлы в соответствующую папку, настроенную вашим веб-сервером. читать.