Я переключаю свой производственный сервер на использование virtualenv
, и я хочу понять передовой опыт настройки virtualenv в производственной среде. Я столкнулся сегодня со следующими вопросами, пытаясь в этом разобраться:
Virtualenv будет использоваться почти исключительно Apache, поэтому я думаю, что правильный пользователь www-data
, а расположение virtualenv может быть /var/www/.virtualenvs
.
Вроде нормально, но следующая проблема в том, что www-data
на самом деле не имеет оболочки входа и не может писать в свой собственный домашний каталог (/ var / www /), поэтому, когда я пытаюсь активировать virtualenv
, это не работает, и когда я пытаюсь установить что-то с помощью pip, я получаю такие ошибки, как:
Каталог '/var/www/.cache/pip/http' или его родительский каталог не принадлежит текущему пользователю, и кеш отключен. Пожалуйста, проверьте разрешения и владельца этого каталога. При выполнении pip с помощью sudo вам может понадобиться флаг sudo -H.
(даже если я использую -H
Я получаю эту ошибку.)
Итак, я мог создать оболочку входа для www-data
, но это похоже на антипаттерн безопасности.
И я мог дать www-data
доступ к его домашнему каталогу (/var/www/
), но это явно антипаттерн безопасности.
Есть ли в этом норма? Я прожег слишком много циклов, пытаясь понять это, и мне кажется, что это должно быть намного проще.
Запуск в virtualenv ничем не отличается от любого другого приложения. Вы используете пользователя с наименьшим количеством привилегий, необходимых для выполнения того, что требуется приложению.
Не рекомендуется запускать его от себя.