Использование Nginx развернуть Джанго

Ссылка статьи ссылка

Моя среда

Конда 4.7.10, 3.6.7 Python, Django 3.0.3

Установка uWSGI

pip install uwsgi
Если есть проблема, рассмотрим следующее решение: Ссылки Ссылки

apt-get install python3-dev
apt-get install gcc-4.7 ##卸载你的gcc版本,安装为4.7:
rm /usr/bin/gcc
ln -s /usr/bin/gcc-4.7 /usr/bin/gcc

И, наконец, повторно выполнить команду установкиpip install uwsgi

Тест UWSGI работает правильно

  • Test.py создать новый файл: touch test.pyЕсли вы хотите удалить запуск после rm 文件名
    входа в следующем:
def application(env, start_response):
    start_response('200 OK', [('Content-Type','text/html')])
    return [b"Hello World"] # python3
    #return ["Hello World"] # python2
  • Run uWSGI: uwsgi --http :8080 --wsgi-file test.py
    может быть ошибка:
    ошибка при загрузке это время в библиотеках Shared:: uwsgi libpcre.so.1: Не удается открыть Shared Object File: Нет такого файла или каталога
    Решение: Ссылки Ссылки
find / -name libpcre.so.* ##找到所有的系统中libpcre
ln -s /root/anaconda3/lib/libpcre.so.1 /lib ##创建libpcre.so.1软链到/lib下
which uwsgi ##测试一下是否好用了

Вот яма, если ваш сервер является облаком, я, например, было Али облака, мы должны обратить внимание на работы настроек портов и группы безопасности портов, соответствующие консоли облака сервера, или он не может правильно работать с HTTP портом доступа.
Примеры конфигурации группы безопасности

  • Тип браузера http://example.com:8000появится инструкция Hello World , чтобы успешно работать.
    Ниже представляет собой обычный путь: в веб - клиенте <-> uWSGI <-> Python
    ps.Ubuntu команда убить определяет процесс:kill -9 $(lsof -i tcp:8080 -t)

    От простого к test.py проекта Django

  • Создание проекта Django и убедитесь , что он работает правильно: как создать ссылку здесь
    . Ps помните облако сервер проект Django settings.py положить в ALLOWED_HOSTS = ['']вместо ALLOWED_HOSTS = ['*'], позволяют другой нормальный адрес доступа.
  • UWSGI использовать для запуска: uwsgi --http :8000 --module mysite.wsgi
    Если вы можете запустить следующее описание нормального пути нормального: веб - клиент <-> uWSGI <-> Django , как
    правило , мы не разрешаем ваш браузер напрямую общаться с uWSGI, то есть работа с веб - сервера.

    Установка Nginx

sudo apt-get install nginx
sudo /etc/init.d/nginx start ##启动nginx服务

Доступ браузера через порт 80, вы должны получить сообщение от Nginx: «Добро пожаловать в Nginx!» .
Это показывает нормальный путь: веб - клиент <-> , а веб - сервер

Конфигурация Nginx статических маршрутов

  • каталог Новый Django с именем в uwsgi_paramsфайле, содержимое файла из здесь Copy
  • каталог Новый Django назван в mysite_nginx.confдокументе, говорит:
upstream django {
    server 0.0.0.0:8081; #web socket
}
server {
    listen      8080; #nginx端口
    server_name xx.xx.xx.xx; #IP地址
    charset     utf-8;
    client_max_body_size 75M;
    location /media  {
        alias /path/to/your/mysite/media; #media文件路径
    }
    location /static {
        alias /path/to/your/mysite/static; #static文件路径
    }
    location / {
        uwsgi_pass  django;
        include     /path/to/your/mysite/uwsgi_params; #uwsgi_parms文件路径
    }
}
  • Вышеуказанные документы, связанные с / и т.д. / Nginx / сайты с поддержкой для того, чтобы определить Nginx
    sudo ln -s ~/path/to/your/mysite/mysite_nginx.conf /etc/nginx/sites-enabled/
  • settings.py файл ИЗМЕНЯЮТ Джанго, добавьте следующее заявление:
    STATIC_ROOT = os.path.join(BASE_DIR, "static/")
  • Выполните следующую команду:
    python manage.py collectstatic
  • Перезагрузка Nginx
    sudo /etc/init.d/nginx restart
  • Тест
    тест фотографии test.jpg в СМИ папку доступа , xx.xx.xx.xx:8080/media/test.jpgесли они могут получить доступ, что указывает на Nginx при условии правильных файловых служб

    запрос динамической конфигурации Nginx

    Nginx , чтобы test.pyприложение сказать «привет мир» это.
    uwsgi --socket :8081 --wsgi-file test.py
  • socket :8081: Протокол использования uWSGI, порт 8081, то же самое время, Nginx уже настроен для связи с uWSGI в порту, в то время как внешний порт 8000. Доступ: xx.xx.xx.xx:8080/
    появление «привет мир» объяснил нормальный следующий путь: веб - клиент <-> на веб - сервер <-> гнездо <-> uWSGI <-> Python

    Вместо того чтобы использовать сокет порт Unix

    Мы в настоящее время с помощью простого TCP сокета, заменить Unix сокета с меньшими затратами.
  • Редактирование mysite_nginx.confфайла
    в первом предложении server 0.0.0.0:8081; #web socketчитайте server unix:///path/to/your/mysite/mysite.sock;здесь / путь / к / ваш / ..... в свой собственный путь, mysite.sock автоматически генерируется, не игнорировать его.
  • Перезагрузка Nginx:sudo /etc/init.d/nginx restart
  • Снова запустить uWSGI:uwsgi --socket mysite.sock --wsgi-file test.py
  • В браузере, перейдите по ссылке: xx.xx.xx.xx:8000/
    здесь может появиться 502 Bad Gateway, потому что Nginx не орган , чтобы войти в каталог, он не может получить доступ к файлу сокета, один решение изменить идентификатор пользователя работает Nginx, то /etc/nginx/nginx.conf первая строка WWW-пользовательских данных, изменение прав доступа для WWW-данных достаточно высоких пользователей, перезагрузите Nginx. Я прямо в корень, вы можете работать должным образом.

    Использование uWSGI и Nginx запущенного приложения Django

  • Введите следующую команду для запуска приложения Django
    uwsgi --socket mysite.sock --module mysite.wsgi --chmod-socket=664

рекомендация

отwww.cnblogs.com/wuu02/p/12403956.html