Развертывание на 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