2

У меня дома есть сервер под управлением Ubuntu 13.10, настроенный как веб-сервер и git-репозиторий. Если я отправляю свой проект из моей системы на сервер, выполняется перехват после получения, который перемещает файлы (проект Symfony2) в правильный корневой каталог виртуального сервера.

Одна из причин, по которой я это делаю (хостинг на своем собственном сервере), заключается в том, что я хочу больше узнать о лучших практиках в хостинге серверов.

Я захожу на свой git-сервер через SSH как пользователь git, у которого есть разрешение на git-репозитории в /opt /git (некоторые руководства рекомендуют делать это таким образом). Оболочка для пользователя git установлена в /usr /bin /git-shell.

Мой веб-сервер - nginx, работающий от имени пользователя «www-data». Я считаю, что это настройка по умолчанию, поскольку я ее не настраивал.

У меня сейчас проблема в том, что после развертывания пользователя www-data и моего собственного пользователя (tim) нет разрешения на запись в каталог кэша, что приводит к сбою Symfony.

Причина, по которой мой пользователь (tim) вовлечен, заключается в том, что у проекта есть cronjob, который я настроил в своей учетной записи, что может быть не самой лучшей идеей.

Также по какой-то причине разрешения по умолчанию для кэша / каталога после коммита

drwxr-xr-x 4 git git  4096 Jul 29 09:33 cache

Итак, насколько мне известно, это означает, что только пользователь git может создавать файлы / каталоги внутри папки кэша.

Теперь я могу придумать 101 способ решения этой проблемы, но меня больше интересует правильный / намеченный способ решения моей проблемы.

  • Должен ли я каким-то образом создать файлы для пользователя www-data и запустить cronjobs от имени того же пользователя?

    • Это кажется сложным, потому что я не думаю, что пользователю git разрешено «передавать файлы кому-то другому»
  • Должен ли я найти способ запуска ловушки после получения от имени другого пользователя www-data или tim?

  • Какому пользователю следует запускать мой cronjob? Это может быть просто Тим? или это должен быть пользователь www-data? (или не дай бог root)

Это содержание моего пост-получения скрипта (я нашел его на каком-то сайте, не могу вспомнить, какой именно)

#!/bin/sh
# 
## store the arguments given to the script
read oldrev newrev refname

## Where to store the log information about the updates
LOGFILE=./post-receive.log

# The deployed directory (the running site)
DEPLOYDIR=/var/www/project.timfennis.com

##  Record the fact that the push has been received
echo -e "Received Push Request at $( date +%F )" >> $LOGFILE
echo " - Old SHA: $oldrev New SHA: $newrev Branch Name: $refname" >> $LOGFILE

## Update the deployed copy
echo "Starting Deploy" >> $LOGFILE

echo " - Starting code update"
GIT_WORK_TREE="$DEPLOYDIR" git checkout -f
echo " - Finished code update"

echo " - Starting composer update"
cd "$DEPLOYDIR"; composer update; cd -
echo " - Finished composer update"

echo "Finished Deploy" >> $LOGFILE

Я уверен, что именно Composer сбрасывает мои права доступа к файлу на 755, потому что каталог кэша удаляется каждый раз.

0