На локальном компьютере, редактировать файл ~/.ssh/конфигурации и добавить:
Host example
Hostname example.com
User myuser
IdentityFile ~/.ssh/YOURPRIVATEKEY
Вы должны быть в состоянии войти в экземпляр с «SSH, например». Помните, что ваш закрытый ключ должен быть chmod 400. Как только вы сможете использовать ssh без использования «ssh -i mykey.pem username @ host», выполните следующие действия.
На вашем экземпляре EC2 инициализируйте открытый репозиторий, который используется для принудительного вывода. Соглашение состоит в том, чтобы добавить расширение «.git» к имени папки. Это может выглядеть иначе, чем ваше местное репо, которое обычно имеет папку .git внутри вашей «проектной» папки. У простых репозиториев (по определению) нет рабочего дерева, прикрепленного к ним, поэтому вы не можете легко добавлять к ним файлы, как в обычном небезовом репозитории. Это именно так, как это делается. На вашем 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
Теперь на локальном компьютере, сделать «мастер EC2 мерзавец толчок», и он должен нажать код на голой репо, а затем после получать крюк скрипт проверки ваши файлы в соответствующую папку, которую ваш веб-сервер настроен для чтения.
' ssh-add/private/key/path' работал! – zengr
Когда вы говорите, что это сработало, можете ли вы добавить инструкции относительно того, что вы на самом деле делали шаг за шагом? – designermonkey
@Designermonkey Обновлено. – zengr