Развертывание django с помощью python manage.py runserver для производства на VPS

Я купил VPS для своего приложения django. Я никогда раньше не развертывал django или любое другое приложение. Я прочитал несколько руководств о том, как развернуть django с помощью apache и wsgi, а также некоторые другие варианты gunicorn, ngix. Мне все это кажется очень разочаровывающим и трудным для понимания. Мне было интересно, что произойдет, если я разверну свое приложение, изменив отладку на false, создав базу данных, подключив ее, а затем просто запустив python manage.py runserver my-ip. Это плохая практика?


person Marijus    schedule 19.04.2014    source источник
comment
Здесь много ненависти, но я думаю, что это ценный вопрос - документация, которую я прочитал, не объясняет, зачем вам нужен веб-сервер, пушка и т. д., и, поскольку я могу обслуживать свой сервер разработки без него, интересно знать, что они обеспечивают то, что так необходимо.   -  person owencm    schedule 14.06.2015
comment
Я также не понимаю, почему никто не может дать адекватный ответ, кроме как просто не делать этого. Было ли хорошей идеей когда-либо принимать изречения, не понимая лежащего в их основе обоснования?   -  person Alex Petralia    schedule 28.03.2017
comment
Основная причина в том, что сервер Django не считается безопасным. Вообще говоря, данные нуждаются в защите даже в защищенной среде, что делает сервер выполнения manage.py непригодным для производства.   -  person aris    schedule 19.01.2019


Ответы (2)


Научиться развертывать проект Django легко.

Сначала вы должны знать, как установить Apache и mod_wsgi

если вы используете Ubuntu

sudo apt-get install apache2 libapache2-mod-wsgi

или Fedora (красная шапка) (без теста)

yum install httpd mod_wsgi

Тогда вы должны знать, как связать Apache2 с вашим проектом Django.

<VirtualHost *:80>
    ServerName example.com
    ServerAdmin [email protected]

    Alias /media/ /home/tu/blog/media/

    <Directory /home/tu/blog/media>
        Require all granted
    </Directory>

    WSGIScriptAlias / /home/tu/blog/blog/wsgi.py

    <Directory /path/to/django/project/wsgifile>
    <Files wsgi.py>
        Require all granted
    </Files>
    </Directory>
</VirtualHost>

Предложение WSGIScriptAlias связывает конфигурацию Apache2 с вашим проектом Django в файле wsgi.py Django, вы увидите project.settings включенным, вот как это работает.

Следующее может быть легко понять, как это работает

*.conf --> wsgi.py --> settings.py --> urls.py и приложения

просто поищите в Google, например ubuntu django server mod_wsgi, и изучите сами!

person WeizhongTu    schedule 20.04.2014

Не используйте сервер разработки в производстве. Просто не надо.

По крайней мере, подавайте его с пушкикорна:

$ pip install gunicorn
$ cd your_project
$ gunicorn project.wsgi  # gunicorn now runs locally on port 8000

И используйте nginx (или apache) в качестве обратного прокси:

server {
    location / {
        proxy_pass http://127.0.0.1:8000;
    }
}

Развертывание Django (как и любого другого приложения) — это целый мир сам по себе, и его освоение требует времени. Но никогда не запускайте сервер разработки в продакшене.

person Yuval Adam    schedule 19.04.2014
comment
Не могли бы вы объяснить, почему мне нужны gunicorn и nginx или apache? Я верю вам на слово, но я хотел бы понять, что они мне предоставляют. - person owencm; 14.06.2015
comment
Почему бы не использовать сервер разработки в производстве в сценариях очень малого масштаба? Добавьте объяснение, пожалуйста. См. serverfault.com/q/717568/134848. - person becko; 28.08.2015