2016-06-13 3 views
0

У меня есть настройка сайта django и настроена в виртуальной среде python (venv) на Ubuntu, и все работает нормально. Теперь, чтобы запустить мой сервер на порту 80, мне нужно использовать «sudo», который не выполняется в контексте виртуальной среды, поднимая ошибки (т. Е. Ни один модуль с именем django ...)Как сделать выполнение sudo в текущей виртуальной среде python?

Есть ли способ получить «sudo» для выполнения в контексте виртуальной среды python ?!

ответ

3

Нет, вам не нужно это делать. Не следует пытаться запустить сервер разработки на порту 80; если вы создаете производственную среду, используйте надлежащий сервер.

+0

Что вы подразумеваете под правильным сервером? пытался выполнить sudo python для определенной виртуальной среды (имея доступ к пакетам, недоступным вне этой виртуальной среды). Является ли, например, неправильным в вашей книге отбойник или сервер uwsgi http service? – AmirGh

+0

Это так, но он по-прежнему не должен обслуживать порт 80. Вам нужен обратный прокси-сервер, такой как nginx. –

-1

This should be the solution. Даже я действительно не рекомендую это делать. Если вам нужно sudo внутри Python, вы, вероятно, ошибаетесь.

-1

это сделал трюк:

$ sudo -- sh -c './venv-bin-path/activate; gunicorn <params> -b 0.0.0.0:80' 
1

Как @DanielRoseman сказал, что вы не должны использовать сервер разработки Django производства.

Но если вам нужно запустить сервер разработки на порте 80, вам необходимо напрямую обратиться к исполняемому файлу виртуальной среды python.

sudo ../bin/python manage.py runserver localhost:80