2016-01-05 4 views
0

Я готов развернуть свой полностью обновленный сайт Django, и я пытаюсь найти лучшую структуру папок для использования. Когда я использовал его в последний раз, я сделал все неправильно, хотя он был функциональным, поэтому на этот раз я пытаюсь сделать это «правильным» способом. К сожалению, иногда кажется, что слишком много «правильных» способов для любого способа иметь смысл, поэтому я пытаюсь получить некоторую ясность в этом. Я использую Linode VPS с Ubuntu 14.04 LTS и nginx. Я просматривал пошаговые руководства, темы форума и отвечал на вопросы о стеке, и, как ни удивительно, ничто не могло ответить на мои вопросы. Так вот.Структура проекта Django в производстве

Я планирую иметь корень Django (корневая папка проекта верхнего уровня, сгенерированная с startproject), проживает в /srv/www/<site name>/djcode. Какие разрешения я должен назначить этой папке, какой пользователь должен ее использовать и как должны быть настроены группы? Теоретически, кто-то еще будет помогать мне поддерживать этот проект в ближайшем будущем, поэтому мне кажется, что я бы chown его личному пользователю, хотя это было предложено в нескольких сообщениях, которые я видел. Могу ли я позволить www-data создать папку и все файлы, а затем добавить себя и моего будущего соавтора в группу www-data? (Я также очень слабо разбираюсь в том, как работают группы в Linux, поэтому любые указатели на разъяснения этой системы также приветствуются.)

Резервное копирование немного, имеет ли смысл, чтобы это было где мой код Django живет? Я видел только один ответ в течение хорошего часа или около того, у которого было предложение о том, где код мог бы жить (остальные примеры имели самый бесполезный путь /path/to/django/root вместо фактического пути), поэтому я не совсем уверен что нужно делать.

Кроме того, я заметил, что люди иногда используют /var/www/ для статических HTML-файлов, что не имеет смысла. Разве не /var, что размер файла может быть изменен? Это, однако, вызывает вопрос, почему у нас есть отдельный каталог для файлов с переменным размером. Я предполагаю, что хочу разместить файл базы данных sqlite где-нибудь, но где именно он будет жить, и каковы будут преимущества его размещения?

Спасибо заранее!

ответ

0

Причина, по которой некоторые люди ставят статические файлы в/var/www, просто такова, что по умолчанию конфигурация Apache помещает DocumentRoot в системы на основе Debian. Но я бы не рекомендовал это делать; гораздо лучше добавить псевдоним, указывающий на каталог STATICFILES внутри вашего проекта.

Что касается разрешений, то ваше предложение использования www-данных и добавление ваших пользователей в эту группу разумно. Рекомендация поставить код под/srv была, вероятно, моей, в первую очередь, но я думаю, что это хорошая идея; это легко идентифицируемое место, которое, вероятно, не используется ничем другим.

Вы действительно не должны использовать sqlite в производстве. Установите правильную СУБД; предпочтительно Postgres, но в противном случае MySQL, если нужно. Также очень сложно настроить.

+0

Хорошо, после добавления новой функции в последнюю минуту я снова пытаюсь ее развернуть. Это имеет большой смысл. В чем причина отказа от использования SQLite в производстве? Я читал, что все в порядке, если не будет большого трафика, чего не будет на этом сайте, поэтому я планировал его использовать. Есть ли другие соображения, о которых я должен знать? – airplanemania

0

Django не является PHP или ColdFusion, где вы должны хранить файлы проекта внутри/var/www в корне.

Прочтите главу от Two Scoops of Django: Best Practices for Django 1.8 о структуре проекта - у вас должны быть настроены настройки для каждой среды.

Также очень хорошая и разумная идея состоит в том, чтобы иметь один и тот же SQL-движок в каждой среде - он не повредил бы данные и не сделал миграции нестабильными. Если вашему проекту не требуется экстраординарная БД, выберите PostgreSQL. MySQL - это другой вариант, но MySQL не поддерживает миграции в транзакциях.

Смежные вопросы