На локальній машині відредагуйте файл ~ / .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 не містить фактичних "робочих файлів", які ваш веб-сервер повинен виконати. Отже, вам потрібно встановити скрипт "гачок", який буде виконуватися при натисканні на ec2. Цей скрипт заповнить відповідну папку на вашому екземплярі ec2 вашими фактичними файлами проекту.
Отже, на вашому екземплярі ec2 перейдіть до каталогу project_folder.git / hooks. Потім створіть файл із назвою "після отримання" та chmod 775 (він повинен бути виконуваним). Потім вставте цей скрипт 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
Тепер на вашій локальній машині виконайте "git push ec2 master", і він повинен пересунути код до вашого оголеного репо, а потім скрипт підключення після отримання перевірить ваші файли у відповідну папку, яку ваш веб-сервер налаштований для читання.
ssh-add /private/key/path
працював!