Git-публикация сайта

Доброй ночи, Читатель!

Решил сделать свой персональный сайт — Андрей Мотрич.

Недолго думая, принялся внедрить технику публикации и поддержки сайта, с которой познакомился используя Heroku (http://www.heroku.com/).

Суть заключалась в том, что мы создаем Git репозиторий для сайта и вешаем скрипт обработки события (git hook) post-receive для публикации содержимого сайта.

Процесс установки, настройки и работы с Git в данной статье рассматривать не буду, т.к. если вы заинтересовались данной темой Вы должны иметь представление об этом.

Дано:
Сервер — ОС Debian, установлен Git, установлен OpenSSH и nginx.
Клиент — ОС Windows 7, установлен Git, установлен Notepad++.

Настройка удаленного Git-репозитория

Создаем директорию в удобном для нас месте и проводим инициализацию  bare-репозитория:

$ mkdir mywebsite.git
$ cd mywebsite.git
$ git init --bare

Мы создали «пустой»-репозиторий, который будет содержать только информацию о коммитах без исходных файлов, т.е. будут находиться только служебные файлы предназначенные для работы репозитория.

Заходим в каталог «hook» 

$cd ./hook

создаем файл post-receive

$vim  post-receive

со следующим содержимым:

#!/bin/sh
GIT_WORK_TREE=/path/to/your-site/web git checkout -f

Где указываете путь к каталогу, где должны лежать фалы вашего web-проекта, вместо «/path/to/your-site/web»

Меняем права доступа к post-receive:

$ chmod +x hooks/post-receive

Важно также не забыть, что Вы должны настроить Ваш web-сервер и создать каталог, который был указан в post-receive файле.

Настройка серверной части на этом закончена.

Публикация сайта

Настроим локальную копию репозитория на клиентской машине:

git clone ssh://sshusername@server.address.com/local/server/path/to/mywebsite.git destfolder

,где sshusername — пользователь, который имеет доступ к серверу с адресом server.address.com (может быть и IP-адрес сервера)
«/local/server/path/to/mywebsite.git» — локальный путь на сервере к каталогу bare-репозитория, который мы создали ранее
«destfolder» — имя целевого каталога на клиентской машине, где будет проходить разработка сайта.

Идем в каталог «destfolder» и создаем/копируем все неоходимые для сайта фалы.
После всех необходимых модификаций, проведем публикацию новой версии сайта:

cd destfolder
git add .
git commit -a -m "Инициализация сайта" 
git push

Вводим пароль для sshusername  и, если все было сделано правильно, на сервере в каталоге «/path/to/your-site/web» будут все модификации проведенные вами на клиентской машине.

Вот и все. По дополнительным вопросам пишите в комментариях.

Всех с 8 марта)!

Git-публикация сайта: 3 комментария

  1. Спасибо! Все понятно, то что искал нашел! Много мусора в интернете по данному вопросу.

  2. Сделал как в статье, удаленный репозиторий на сервере и еще один локально(на компе), вношу изменения локально, изменения происходят, делаю git push, измения есть и website.git, но на сервере ничего не изменилось. В чем может быть проблема?

    • Проверьте следующее на сервере:
      — выставлены соответствующие права на hook-файл (chmod +x hooks/post-receive)
      — каталог «/path/to/your-site/web» существует и есть права на запись
      — попробуйте вручную запустить ./post-receive

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *