Как автоматически обновлять сайт через github

Admin Bash, GIT

Как установить GIT на свой сайт и подтягивать изменения из репозитория на GitHub.

Можно заливать на сервер данные из GitHub с помощью сторонних ресурсов, типа DeployHQ. Но здесь мы не будем рассматривать готовые инструменты, а пойдем путем создания своего деплоя через команды в bash файле.

Читайте в другой статье, если потребуется обновлять репозиторий со стороны сервера.

1. Создаём ssh ключ

Статья по созданию и настройки ssh ключа.

Иначе будут ошибки при соединении с GitHub сервером:

Host key verification failed.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

2. Устанавливаем git на сервер

Сначала инсталлируем git на свой сервер:

yum install git

Подробнее о том как проинсталлировать GIT на сервер.

3. Создаем новый репозиторий

Создаём на сайте гитхаб новый репозиторий:
github.com

4. Создаем файл исключений на нашем сервере

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

.gitignore

5. Клонируем на свой сервер репу

На сервере в директории сайта запускаем команды по очереди:

git init
git add -A
git commit -m "first commit"
git remote add origin https://github.com/ploshadka/repository.git
git push -u origin master

Вводим свой логин и пароль от github.

6. Клонируем себе

Через программу GitHub Desktop, PhpStorm или консоль, склоннировать репозиторий на локальный компьютер.

Ошибки

Если в логах будут ошибки:

fatal: could not read Username for ‘https://github.com’: No such device or address

Надо зайти в

".git/config"

И поменять

[remote "origin"]
url = https://github.com/ploshadka/some-name.git

на

[remote "origin"]
url = git@github.com:ploshadka/some-name.git

7. Клонируем себе

Создаём на сервере файл bash в котором будет содержимое:

#!/bin/bash
# Запуск через cron каждую минуту

# Время
date=$(date '+%d/%m/%Y %H:%M:%S');

# Переходим в категорию GIT
cd '/home/ваш-путь к сайту'

git pull
echo "$date"
echo "Была выполнена команда подтягивающая изменения из гит."

Ошибки

Если данные переносятся на сервер (например, восстанавливается backup), то в первый раз обязательно надо подтянуть изменения из GIT вручную. Иначе скрипт не отработает. Будет сообщать об ошибке доступа.

Запускаем:

git pull

И соглашаемся на добавление ssh ключа GitHub в разрешенные для связи с ним.

8. Настроить Cron

Настроить cron на запуск этого скрипта, например, каждую минуту.

Для нашего скрипта это будет выглядеть так:

*/1 * * * * root sh /какая-то директория/scripts/git-pull >/какая-то директория/scripts/git-pull.log 2>&1

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

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

Git хранит в служебной директории .git полную копию всего репозитория. Обязательно закройте директорию .git в настройках HTTP сервера, чтобы никто не смог получить доступ к исходным кодам вашего сайта в публичном доступе без авторизации.

Для этого создайте в папке .git файл .htaccess и добавьте туда директиву:

Deny from all

У сайта нет цели самоокупаться, поэтому на сайте нет рекламы. Но если вам пригодилась информация, можете лайкнуть страницу, оставить комментарий или отправить мне подарок на чашечку кофе.

Добавить комментарий

Напишите свой комментарий, если вам есть что добавить/поправить/спросить по теме текущей статьи:
"Как автоматически обновлять сайт через github"