python--Django+uwsgi+nginx

Posted kitshenqing

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python--Django+uwsgi+nginx相关的知识,希望对你有一定的参考价值。

uwsgi+Django


查看uwsgi版本及信息:cmd-->>uwsgi


首先先测试uwsgi能否正常使用

1. 创建测试文件index.py
vim index.py

写入下边代码:

def application(env, start_response):
    start_response(200 OK, [(Content-Type,text/html)])
    return [b"Hello World"]

运行:

uwsgi --http :9090 --wsgi-file index.py


然后就可以通过浏览器访问 ip+端口 看到Hello Worid了

2. 添加并发(加大处理速度)
uwsgi --http :9090 --wsgi-file index.py --processes 4 --threads 2

然后就是部署Django了。

 

1.在项目跟目录创建一个ini文件

vim uwsgi.ini

写入代码:

[uwsgi]
http = 0.0.0.0:8000
chdir = /usr/www/DjangoSpider/
wsgi-file = DjangoSpider/wsgi.py
processes = 4
threads = 2

注:Django中的ALLOWED_HOSTS = []  改为ALLOWED_HOSTS = [‘*’]

 

2. 启动

uwsgi uwsgi.ini 

然后就可以通过ip加端口访问部署好的项目了,但此时的静态文件是显示不出来的,需要我们在配置好nginx才可以完美的展示。

 

uwsgi+nginx+Django

 

1.cd进入‘/etc/nginx/cond.d’目录下修改default.conf文件(建议先备份一份源文件)

 

server 
    listen       80;
    server_name  localhost;   # 对外部用户提供的统一域名

    # 将动态请求转发给uwsgi服务器
    location / 
        # 包含uwsgi请求的参数
        include uwsgi_params;
        # 转交请求给uwsgi服务器 (uwsgi服务器的ip和端口号)
        uwsgi_pass 127.0.0.1:8000;  # 单个uwsgi服务器(不需要负载均衡)
        #uwsgi_pass upstream1;
    

    # 如果是静态资源请求就直接响应资源。
    location /static 
        # 指定静态文件存放的目录 (需要修改/usr/...目录的操作权限。 $ chmod 777 /usr)
        alias /usr/www/项目名/static/;
    

 

2.修改完配置文件,要重新reload一下。

nginx -s reload

3.请求80接口时,可能会出现permission问题,这时需要关掉selinux

setenforce 0

4.收集静态资源。

当访问admin后台没有样式的时候,需要去收集Django中的静态资源。

#项目名/settings.py(项目配置,STATIC_ROOT设置收集静态资源的路径):
STATIC_URL = /static/
STATICFILES_DIRS = [os.path.join(BASE_DIR, static)]
# 指定收集静态文件的路径 (需要修改/var/...目录的操作权限)
STATIC_ROOT=./static

然后运行指令:

python manage.py collectstatic

5.修改项目根目录下的ini文件

vim uwsgi.ini

[uwsgi]
# http = 0.0.0.0:8000
Socket=0.0.0.0:8000
chdir = /usr/www/DjangoSpider/
wsgi-file = DjangoSpider/wsgi.py
processes = 4
threads = 2

 

启动:
启动nginx:systemctl start/restart nginx
项目根目录:uwsgi uwsgi.ini

查看nginx是否启动:systemctl status nginx

网页访问ip报502时,应该是权限的问题,所以就需要对应的运行一下指令。
setenforce 0

 

以上是关于python--Django+uwsgi+nginx的主要内容,如果未能解决你的问题,请参考以下文章

python3 + Django + uwsgi + nginx 配置部署笔记

Install Python+Django+Nginx+UWSGI

python+django+uwsgi 搭建环境

centos7下部署Django(nginx+uWSGI+Python3+Django)

python django+uwsgi+nginx

python django uwsgi nginx   实例