Я установил CentOS для запуска веб-сайта нашей компании с использованием Apache. Apache работает как пользователь apache . Теперь, чтобы обновить код нашего сайта с помощью git, я установил пользователя say sumit и создал скрипт оболочки, который выполняет git pull (я думаю, что мы можем использовать rsync , но я не уверен, как его использовать).

Теперь я установил этот сценарий оболочки для своевременного запуска, и он работает нормально. однако, когда он загружает изменения, он меняет владельца формы файла apache:apache на sumit:sumit поскольку это пользователь, с которым он загружает файлы. Я пытаюсь вставить chown в мой скрипт, но он не меняет пользователя, так как требует sudo пользователя.

Как я могу убедиться, что с помощью git 1. Я могу управлять разрешениями (чтобы все доступные для записи папки не менялись и не зависели от моих потребностей) 2. Новые загруженные файлы остаются для apache.

О, я пытался запустить cron, используя пользователя apache , но это не сработало, так как apache забанен из оболочки.

1 ответ1

0

Ваша проблема здесь в том, что вы используете git в качестве инструмента развертывания, а это не так. Git для контроля версий, и все тут. Когда вы хотите развернуть свой код где-то, вы должны использовать либо сценарий, либо готовый продукт, чтобы проверить правильную ветвь, скопировать соответствующие файлы, скомпилировать все, что может потребоваться для компиляции, и, в вашем случае, установить разрешения.

Есть несколько способов сделать это. Существуют коммерческие серверы сборки, такие как TeamCity или Jenkins/Hudson (и многие другие), которые имеют все виды встроенных функций для развертывания.

В качестве альтернативы, вы можете использовать git hook на вашем git-сервере для вызова скрипта, который выполняет для вас настройку копирования и разрешений. Этот хук должен запускаться от имени пользователя, который, очевидно, имеет правильные права доступа к chown/chmod, но вы можете достичь этого безопасно с помощью ключей ssh.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .