У меня есть сервер CentOS 6, настроенный с использованием git, gitosis, nginx и php-fpm.
При нашей установке nginx выполняет сценарии php через php-fpm, который настраивается для каждого сайтаоснова для работы в качестве конкретного пользователя в целях безопасности (то есть не все в nginx: nginx), поскольку мы не хотим ситуации, когда если один сайт скомпрометирован, все сайты скомпрометированы.
Наша среда прекрасно работает,но когда задействован git, php-fpm создает фундаментальную проблему.
После успешного выполнения следующей команды локально:
$ git push origin
Мой хук после получения запуска:
#!/bin/sh
GIT_WORK_TREE=/var/www/vhosts/example.com/httpdocs git checkout -f
Обычно это копирует содержимое репозитория.однако в папку httpdocs, поскольку установлен php-fpm и каталог + файлы принадлежат конкретному пользователю, gitosis (или любой другой пользователь без полномочий root) не может записывать в каталог.Это становится очевидным благодаря следующей ошибке:
remote: error: git checkout-index: unable to create file index.php (Permission denied)
Это имеет смысл, и это то, что я ожидал.Тем не менее, мне интересно, есть ли способ обойти эту проблему в данном конкретном случае?Есть ли способ, которым я могу изменить хук post-receive, чтобы он запускался от имени пользователя root (в настоящее время он запускается пользователем gitosis
) или каким-либо другим способом, чтобы он был успешным?
Просто чтобы было ясно: никаких других проблем с настройкой нет, git работает нормально, nginx / php-fpm работает нормально, но это проблема с разрешениями, которую я не совсем знаю, как обойти.