Расположение virtualenv в производстве

Я нахожусь в процессе развертывания сайта Django и использую virtualenv, чтобы поддерживать порядок в установке Python. Я пытаюсь выяснить, где должна располагаться виртуальная среда в среде производственного сервера. Кажется, что это должно быть очень просто, но это вызывает у меня чудовищную головную боль. Любая помощь будет принята с благодарностью!

Мой план состоял в том, чтобы использовать virtualenvwrapper для создания виртуальной среды. По умолчанию это сохраняет виртуальную среду в ~/.virtualenvs, в данном случае это /home/james/virtualenvs/. Это нормально в разработке, когда я на своей локальной машине и запускаю все под пользователем james. Однако я не верю, что пользователь james будет запускать код в virtualenv на рабочем сервере; скорее, я считаю, что это будет www-data. Должен ли www-data подключаться к james для доступа к virtualenv, или есть способ установить virtualenv в www-data? Кажется, должен быть стандартизированный способ настройки virtualenvs в производстве, но я ничего не могу найти.

Заранее спасибо за любую помощь!


person airplanemania    schedule 10.01.2016    source источник
comment
Я бы установил virtualenv в каталог venv в корневом каталоге проекта, а не в домашний каталог пользователя. Тогда настройка может быть одинаковой как в prod, так и в dev.   -  person Tom Dalton    schedule 10.01.2016
comment
Это полностью зависит от предпочтений человека. Моим личным предпочтением было бы создание virtualenv в /usr/local/virtualenv/ — таким образом, это стандартное место, независимо от того, где на самом деле находится проект на сервере.   -  person karthikr    schedule 10.01.2016


Ответы (3)


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

person Klaus D.    schedule 10.01.2016

Я всегда структурирую вещи так:

виртуальные среды:

/user/var/www/project/virtualenvs/myapp_env1
/user/var/www/project/virtualenvs/myapp_env2
/user/var/www/project/virtualenvs/myapp_env3
....

Приложения:

/user/var/www/project/applications/myapp1
/user/var/www/project/applications/myapp2
/user/var/www/project/applications/myapp3
...

Я действительно знаю, что эти вещи не должны быть в /var/www/, но я никогда не обращал на это внимания.

и у каждого приложения есть свой пользователь, названный по имени приложения.

person doniyor    schedule 10.01.2016

Я настраиваю свой virtualenv так же, как и вы. Что вам нужно сделать, так это добавить james в группу www-data, и все должно быть в порядке.

sudo adduser james www-data
person Mevin Babu    schedule 10.01.2016