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

猜你喜欢

转载自www.cnblogs.com/kitshenqing/p/11074629.html