Ответ 1
Я просто суммирую шаги для развертывания приложения django с nginx и gunicorn здесь:
1. Установите nginx и добавьте его в /etc/nginx/sites-enabled/default
server {
server_name 127.0.0.1 [email protected];
access_log /var/log/nginx/domain-access.log;
location / {
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_connect_timeout 10;
proxy_read_timeout 10;
# This line is important as it tells nginx to channel all requests to port 8000.
# We will later run our wsgi application on this port using gunicorn.
proxy_pass http://127.0.0.1:8000/;
}
}
2. Установить оружие-стрелок
$ pip install gunicorn
3. Запустите проект django с использованием gunicorn и файла wsgi.py
$ cd </path/to/djangoproject_subdirectory_with_wsgi.py>
$ gunicorn wsgi -b 127.0.0.1:8000 --pid /tmp/gunicorn.pid --daemon
# --daemon parameter tells gunicorn to run in the background
# So that gunicorn continues to run even if you close your ssh session
# (You cannot remain ssh-ed into your server all the time right!)
Пожалуйста, не используйте "wsgi.py"; вам просто нужно использовать wsgi без расширения ".py" при вызове gunicorn. Это запустит ваше приложение wsgi в фоновом режиме.
4. Посетите "[email protected]" в своем браузере
Теперь ваше приложение должно быть запущено и запущено на вашем экземпляре. Посещение:
и посмотрите, работает ли ваше приложение. Не забудьте повторно перенести ваш[email protected] в выше и в файле конфигурации nginx.
5. (Дополнительно) Дополнительные примечания
-
На шаге 1, если запутать; удалите все существующие строки из файла
/etc/nginx/sites-enabled/default
и поместите в него вышеуказанный код. (Или удалите и создайте новый пустой файл и добавьте код) -
Если вы используете virtualenv, и вы выполнили
pip install gunicorn
внутри virtualenv на шаге 2, запустите команду Step 3 с соответствующим активированным виртуальным пользователем. -
pid процесса стрельбы хранится в /tmp/gunicorn.pid; если вы хотите убить существующий процесс увольнения и перезапустить его.
-
supervisord
может использоваться в сочетании, что помогает автоматически перезапустить демона пушки, если он по какой-то причине умирает. Это полезно в производственных средах.