LINUX.ORG.RU

Настройка сервера


0

1

Заголовок куцый, проблема масштабнее, реквестирую советов мудрых.
Суть такова: есть некий ресурс, написанный на Django. Он должен крутиться под Nginx через uWSGI.

  • Первый вопрос: мы не определились со структурой каталогов. Точнее, возник спор, где должны лежать скрипты проекта: в /var/www (сорт оф стандарт что-ли, апач там держит по дефолту, например, а у некоторых хостеров видел размещение в каталоге home) или /www/%projectname%. Не спрашивайте как до этого дошло, лол.
  • Второй вопрос: от какого пользователя запускать Nginx, от какого uWSGI-сервер, и, если от разных, то как настраивать права для каталогов ресурсов (аватары пользователей, например) чтобы Nginx мог их читать. Сейчас остановился на том чтобы добавлять пользователя Nginx в группу хозяина каталога ресурсов, прозреваю, что всё сделал неправильно.
  • Третий вопрос: используем supervisord, написанный на питоне. Штука удобная, гибкая, но падает, блжад. Воображение рисует совершенно упоротые системы слежения за супервизором с передёргиванием его при падении. Прозреваю, что проще всё же будет использовать что-то более стабильное. Что посоветуете?

Ответ на: комментарий от anonymous_sapiens

Будто это что-то плохое. Так как мне с сервером быть, гражданин?

jessey
() автор топика

Да, в общем-то, сам код проекта держать можешь где тебе удобно. Я, например, держу в /home/ каталог кода проекта.

Пользовательские же данные лежат в /var/www/media/ (правда, он примонтирован через NFS с другого сервера), тут www-data имеет полный доступ (разделение на разных пользователей пока не использую). Лучше детальней распиши кто от кого и как работает.

gruy ★★★★★
()

1. Зависит от. Если на сервере будет только этот проект - то делай как хочешь. В любом другом случае надо бы как-то разграничить проекты, вплоть до запуска каждого проекта из под отдельно юзера, а значит каждому юзеру свой хомяк.

2. Все правильно сделал.
Опять же, когда 1 сервер = 1 проект, то я часто замечал, что сервер и приложение от одного юзера, но твой вариант лучше.

3. Supervisord не должен падать, лучше отследить почему он падает - посмотри, что в логах.

beka
()
Ответ на: комментарий от gruy

Думаю, наверное проект запихать в /var/www вместе с медиа каталогом, и пускать всё из под одного пользователя. И с правами проблем не будет и вообще.
Остальные вопросы открыты :3

jessey
() автор топика

Точнее, возник спор, где должны лежать скрипты проекта: в /var/www (сорт оф стандарт что-ли, апач там держит по дефолту, например, а у некоторых хостеров видел размещение в каталоге home) или /www/%projectname%. Не спрашивайте как до этого дошло, лол.

Мы храним код проекта вместе с статикой, и всё в /home/. То есть /home/user/projectname - код джанги, а /home/user/www - document-root вебсервера, откуда симлинками прикручены media и static. С одной стороны и весь проект в одном месте, удобно при обновлении с систем контроля версий, а с другой стороны вебсервер не может залезть в скрипты.

Сейчас остановился на том чтобы добавлять пользователя Nginx в группу хозяина каталога ресурсов, прозреваю, что всё сделал неправильно.

Всё правильно, но не забудь про права загружаемых файлов. В джанге есть FILE_UPLOAD_PERMISSIONS (или как-то так). Чтобы группа могла читать.

Воображение рисует совершенно упоротые системы слежения за супервизором с передёргиванием его при падении. Прозреваю, что проще всё же будет использовать что-то более стабильное. Что посоветуете?

У нас простые startup-скрипты с start-stop-daemon в /etc/init.d. Сама джанга никогда не падает (за много лет не было такого), лишь бы при перезагрузке сервера поднималось. Но это решение не лучше supervisord, в общем-то.

anonymous
()

Своё имхо.
1. В /home каталоги реальных пользователей, т.е. /home не нужен.
2. Все сервисы от разных пользователей с umask=002 и добавлением в общие группы для отдельных директорий, на кт. установлен GID on execution (chmod g+s). Так, при взломе к-л сервиса потери будут минимальными. Если, конечно скрипты вручную не выставляют права доступа...
3. while [ 1 ]; do supervisord; done

backbone ★★★★★
()
Ответ на: комментарий от anonymous

Спасибо за ответ.
Почти всё выяснил, вот только насчёт супервайзера ещё немного посижу тут, может чего насоветуют.

jessey
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.