СправошнаяПоиск

Простой авто деплой с Git

Это минимум того, как настроить удаленный репозиторий git на сервере, нажать на него, а затем запустить что-то. Если вы когда-нибудь обнаружите, что делаете раздражающую ерунду, например, отправляете множество файлов по FTP каждый раз, когда хотите что-то обновить на своем сервере, попробуйте это. Git будет отправлять только изменения (дельты), поэтому вы будете отправлять гораздо меньше данных.

Вы можете заменить настройку репозитория git на стороне сервера, просто используя Github, но тогда у вас не будет частных репозиториев без оплаты. Если у вас уже есть собственный VPS или сервер, вы должны использовать его для размещения на нем контента. Я использую этот метод для развертывания блога jekyll, а также других побочных проектов.

Давай начнем...

предпосылки

Убедитесь, что git установлен как на вашем компьютере, так и на вашем сервере. Установите, загрузив последнюю версию, а затем установив ее по инструкции.

серверная часть

После входа на сервер с помощью ssh создайте папку для вашего репозитория:

 

mkdir -p /srv/git/project

 

Обратите внимание, что при запуске mkdir -p будут созданы любые промежуточные каталоги, такие как /srv/git/, если они еще не существуют. Теперь инициализируйте голый репозиторий git в этой папке:

 

cd /srv/git/project
git init --bare

 

Мы также хотим добавить хук в этот репозиторий git. Думайте о хуке как об слушателе, который будет выполнять действие при каком-то событии, связанном с git. В нашем случае мы хотим создать клон (удаленного) репозитория на удаленном сервере после того, как репозиторий получит изменения, чтобы файлы были доступны для веб-сервера, то есть мы должны создать post-update файл в hooks каталоге репозитория:

 

vim /srv/git/project/hooks/post-update

 

В этом файле добавьте простую логику для клонирования и копирования вашего репозитория в ваш веб-каталог:

 

#!/bin/sh
GIT_REPO=/srv/git/project
TMP_GIT_CLONE=/tmp/project
PUBLIC_WWW=/srv/www/project
git clone $GIT_REPO $TMP_GIT_CLONE
cp -rp $TMP_GIT_CLONE/* $PUBLIC_WWW
rm -rf $TMP_GIT_CLONE

 

Все, что вы поместите в этот файл, будет запускаться как обычный сценарий оболочки каждый раз, когда вы делаете коммит в этот репозиторий. Вы можете представить, как перезагружаете сервер при нажатии, отправляете кому-то электронное письмо и т. д. Изменяя shebang в верхней части файла, вы можете запускать python или другие сценарии.

Не забудьте также сделать этот скрипт исполняемым, так как мы хотим, чтобы git мог запустить его после внесения изменений:

 

chmod +x /srv/git/project/hooks/post-update

 

сторона клиента

Итак, мы настроили сервер. Вернитесь к своей машине, на которой вы работали над своим проектом.

Если вы еще этого не сделали, инициализируйте собственный локальный репозиторий вашего проекта:

 

cd /path/to/your/project
git init

 

Добавьте свой сервер в качестве удаленного репозитория, заполнив данные о своем сервере:

 

git remote add origin ssh://username@yourserver.com/srv/git/project

 

Вы можете проверить, сработала ли ваша конфигурация, посмотрев, что вам говорит git show origin. Теперь вы можете зафиксировать свои изменения, отправить их на сервер, и все должно работать.

 

git add .
git commit -m "first commit"
git push origin master

 

Если вы устали вводить пароль, вам следует настроить ssh без пароля . Помимо этого, теперь у вас есть рабочий процесс на основе git, который развертывает ваши вкусности на вашем сервере с помощью очень небольшого количества нажатий клавиш.