Развертывание на VPS веб-сайта с помощью Git

Речь пойдет о том, как используя Git, перенести файлы готового сайта с локального компьютера на удаленный веб-сервер и обновлять онлайн-версию сайта при внесении изменений в него на своем локальном компьютере.

Предполагается, что сам git (как системная утилита) уже установлен на обоих компьютерах и выполнена его настройка (заданы имя и почта пользователя).

Первое, что надо сделать, это на удаленном веб-сервере создать так называем "голый" (bare) git-репозиторий. Каталог такого репо не содержит файлы вашего проекта. Но он сохраняет сведения о версиях каждый раз, когда вы выполняете пуш. Для голого репозитория команда git status не работает, git log работает.

Зайдите на свой VPS:

$ ssh root@flask.website

(Вместо flask.website, то есть домена, привязанного к IP, может находиться сам IP-адрес. Также пользователь может быть другим.)

Допустим, программный веб-сервер (в нашем случае Apache) настроен так, чтобы направлять запросы к сайту https://flask.website в каталог /var/www/flask.website/ (предполагается, что каталог уже был создан ранее).

Создадим другой каталог. В нем будут храниться файлы git, обслуживающие сайт, и перейдем в него:

# mkdir -p /var/repo/flask.website.git
# cd /var/repo/flask.website.git

(место размещения произвольное)

Создаем репозиторий:

# git init --bare

Переходим в его подкаталог hooks:

# cd hooks

Здесь создаем хук post-receive. Открываем файл в редакторе, например, vim:

# vim post-receive

В файле укажем (i), что данный репозиторий связан с каталогом нашего сайта:

#!/bin/sh
git --work-tree=/var/www/flask.website --git-dir=/var/repo/flask.website.git checkout -f

Сохраняем и выходим (Esc → :wq → Enter).

Файл надо сделать исполняемым:

# chmod +x post-receive

На этом подготовка удаленного веб-сервера (VPS) к переносу файлов сайта завершена.

На локальном компьютере перейдем в каталог проекта. Если git-репозитория здесь еще нет, его надо создать (не "голый", а обычный):

$ git init

Свяжем его с удаленным:

$ git remote add live ssh://root@flask.website/var/repo/flask.website.git

Назвать удаленный репо можно произвольно, не обязательно live.

Если коммитов нет, создаем:

$ git add .
$ git commit -m "Первый коммит"

Пушим его на удаленный сервер:

$ git push live master

Если будет только один удаленный репозиторий, то можно выполнить команду

$ git push -u live master

Тогда все последующие коммиты отправляются командой

$ git push

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

# chown -R www-data:www-data /var/www/flask.website

Настройка веб-сервера

На этой странице