Рабочий процесс развертывания сайта на основе Git - PullRequest
7 голосов
/ 26 марта 2011

На моем сервере у меня есть два пользователя: www-data (который используется nginx) и git.Пользователь git владеет репозиторием, содержащим код моего веб-сайта, а пользователь www-data владеет клоном этого репозитория (который служит webroot для nginx).Я хочу настроить рабочий процесс таким образом, чтобы при загрузке в репозиторий git обновлялся репозиторий www-data, тем самым обновляя мой веб-сайт.репозитории (которые также учитывают привилегии и разрешения этих двух пользователей)?

Ответы [ 2 ]

5 голосов
/ 26 марта 2011

Удалите репозиторий, принадлежащий www-data, и следуйте решению на этой веб-странице для настройки перехвата после получения в репозитории, принадлежащем git.

2 голосов
/ 26 марта 2011

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

Предполагая, что хранилище называется mysite:

  1. Создайте отдельное рабочее дерево, которое будет действовать как webroot(как пользователь git)

    mkdir /var/www/mysite
    cd /path/to/repository/mysite.git
    git config core.worktree /var/www/mysite
    git config core.bare false
    git config receive.denycurrentbranch ignore
    
  2. Добавьте хук пост-получения, который обновит веб-сайт и установит для него правильные разрешения

    touch hooks/post-receive
    chmod +x hooks/post-receive
    vim hooks/post-receive
    

    сценарий пост-получения:

    #!/bin/sh
    git checkout -f
    chmod -R o+rX /var/www/mysite
    

Ссылка:
http://www.deanoj.co.uk/programming/git/using-git-and-a-post-receive-hook-script-for-auto-deployment/


Обновление: Вот лучшее решение .

Примечание: более ранние версии этого руководства зависели от установки переменных конфигурации git core.worktree в целевой каталог, для core.bare - в false и приема.denycurrentbranch для игнорирования.Но эти изменения не нужны, если вы используете GIT_WORK_TREE (который не работал, когда я впервые написал инструкцию), а удаленный репозиторий может оставаться пустым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...