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