У каждого виртуального хоста plesk только один пользовательский доступ к каталогу httpdocs. Я хочу управлять множеством отдельных виртуальных хостов с помощью Git.
Означает ли это установку отдельного репозитория Git с отдельной комбинацией открытых ключей user / ssh для каждого виртуального хоста, или есть способ централизовать его вообще?
Гитоз звучит так, как будто это может помочь, но я не уверен, что это произойдет с распространением файлов на каждый виртуальный хост.
Обычно есть 2 способа решить эту проблему;
У вас есть чистый репозиторий, централизующий ваше приложение где-то на сервере, и один клон этого репозитория (с рабочим деревом) в каждом httpdocs
папка
затем вы устанавливаете post-receive hook
на голом репо, чтобы обновить все httpdocs
клоны этого репозитория, обычно достаточно сценария оболочки (и он может устанавливать разрешения и делать глобальные chmod
на основе ваших пользователей)
И у вас есть еще одна копия репозитория на локальном компьютере, которая отправляется на этот bare
репозиторий на сервере, который запускает перехватчики после получения и обновляет все "дочерние" репозитории в вашем httpdocs
каталоги
Вы получаете .git
часть из httpdocs
(что я бы рекомендовал) и настроить репозитории в /private/home/git/myrepo
(создать) папку с working tree
в httpdocs
$ git --git-dir=/var/www/vhosts/newdomain.tld/private/home/git/newdomain.tld \
--work-tree=/var/www/vhosts/newdomain.tld/httpdocs init && \
echo "gitdir: /var/www/vhosts/newdomain.tld/private/home/git/newdomain.tld" \
> /var/www/vhosts/newdomain.tld/httpdocs/.git
таким образом, твой httpdocs
остается относительно чистым от информации о версиях (за исключением .git
ФАЙЛ (не dir) создан в /var/www/vhosts/newdomain.tld/httpdocs/
, который является просто способом GIT символической ссылки на working tree
с расположением GITDIR
)
остальная часть процедуры такая же: пустой репозиторий, перехватчики после получения
Я лично отказался от Gitosis, gitolite и palls, потому что это слишком много накладных расходов для нескольких репозиториев. Все, что нужно - это правильно настроить удаленные ветки и сценарий оболочки (запускается обработчиком post-receive).
Еще hook
на githooks (5) справочная страница