Настройка гита на хостинге

Я деплою сайт на хостинг через гит, потому что это удобно. Таскать каждый раз кучу файлов по ФТП — прошлый век. В моем случае это Бегет, но у других хостеров ситуация схожая.

Шаг 1

Создаем FTP-юзера с доступом к корневой директории сайта (на уровень ниже от public_html) и включаем для него SSH. Сразу же запишем куда-нибудь доступы. Мы храним их в таком формате:

Логин FTP-юзера: username
Пароль: ************
Репозиторий: username@server-ip:project.git

Шаг 2

В корневой сайте создаем папку. ssh, а в ней файл authorized_keys. Туда запишем ssh-ключи людей, которые будут работать с этим проектом. Можно это сделать через ФТП, но мне привычней через SSH.

ssh username@server-ip
mkdir .ssh
cd .ssh
touch authorized_keys
nano authorized_keys

О том как сгенерировать SSH-ключ есть отличная инструкция на Гитхабе.

Шаг 3

В папке public_html инициализируем новый репозиторий и добавим файлы под контроль версий.

cd ~/public_html
git init
git add -A
git commit -m 'Init'

Шаг 4

Создаем новый репозиторий, который будет служить шлюзом для основного.

cd ../
git clone --bare public_html project.git
cd public_html
git remote add hub ../project.git
git remote show hub

Последняя команда не обязательна. Она нужна, чтобы удостоверится, что все ок.

Шаг 5

В /public_html/.git/hooks/ создаем файл post-commit и ставим ему права 700.

cd ~/public_html/.git/hooks
touch post-commit
chmod 700 post-commit
nano post-commit

Внутрь помещаем следующее:

#!/bin/sh
echo
echo «Пушим изменения...»
echo
git push hub

Шаг 6

В /project.git/hooks/ создаем файл post-update и ставим ему права 700.

cd ~/project.git/hooks
touch post-update
chmod 700 post-update
nano post-update

Внутрь помещаем следующее:

#!/bin/sh
echo
echo «Вытягиваем изменения...»
echo
cd ~/public_html/ || exit
unset GIT_DIR
git pull hub master
exec git update-server-info

Безопасность

Стоит закрыть доступ к основновном Git-репозеторию через .htaccess

cd ~/public_html/
nano .htaccess

Вставляем следующее:

# deny access to the top-level git repository:
RewriteEngine On
RewriteRule \.git - [F,L]

Успех!

Это все, после этого можно клонировать репозиторий и работать:

git clone username@server-ip:project.git

или так

git remote add origin username@server-ip:project.git
git push -u origin master
Поделиться
Отправить
7 сентября 2016   разработка
2 комментария
Константин

Написано так доступно, а я (валенок) не смог разобраться :—)

Алексей Берёзка

Проверил — всё работает. Спасибо.

Комментарии отключены
Пишите на эл. почту me@shugich.net и подписывайтесь на канал в Телеграме
Популярное