所使用的操作系统与环境
操作系统:centos6.5
Python环境:3.7.0
本文前提
- 已经能用uwsgi来正常执行django项目,只是加载的static资源有问题
- 在本地已经安装好了nginx,并且能正常访问
用uwsgi+nginx部署Django项目
配置django关于static资源的路径
修改setting.py文件,加上如下的内容
STATIC_URL = '/static/'
# STATIC_ROOT = 'main/static'
STATIC_ROOT = os.path.join(BASE_DIR,'static')
STATICFILES_DIRS = [
os.path.join(BASE_DIR,'static')
]
首先配置用uwsgi使用到的ini文件
[uwsgi]
# Django相关的配置
# 必须全部为绝对路径
# 项目的路径
chdir = /home/zeng/cnr/spider
# Django的wsgi文件
module = spider.wsgi
# Python虚拟环境的路径
# home = /home/zeng/anaconda3/bin
# 进程相关的设置
# 主进程
master = true
# 最大数量的工作进程
processes = 10
# http= :8082
# socket文件路径,绝对路径
socket = /home/zeng/cnr/spider/spider.sock
# 设置socket的权限
chmod-socket = 666
# 退出的时候是否清理环境
vacuum = true
daemonize=/var/log/spider_uwsgi.log
与uwsgi加载django项目不同的是,这里使用的不是http端口的形式,而是sock的形式,让uwsgi与nginx进行通信
/home/zeng/cnr/spider/spider.sock
这个文件一开始是没有的,在执行了uwsgi后会自动创建
先用这个ini来运行uwsgi
然后使用命令
sudo uwsgi --ini spider_uwsgi.ini
看到产生了.sock文件
对nginx进行配置
从源代码安装时,nginx的配置文件存放在/usr/local/nginx中,conf/nginx.conf是其配置文件
打开配置文件,需要加上如下内容
在第一行加上,否则会没有权限使用sock文件
user root;
在server下的location /中加入
# uwsgi_params文件地址
include /usr/local/nginx/conf/uwsgi_params;
uwsgi_pass unix:///home/zeng/cnr/spider/spider.sock;
在server中error_page的下边加上
error_log logs/error_spider.log error;
# 最大的文件上传尺寸
client_max_body_size 75M;
# 静态文件访问的url
location /static {
# 静态文件地址
alias /home/zeng/cnr/spider/main/static;
}
logs/error_spider.log error是nginx出错后的信息,同样的还有access_log,具体可参考
- https://www.cnblogs.com/czlun/articles/7010591.html
- https://blog.csdn.net/ty_hf/article/details/55518070
重新加载nginx的配置
sudo sbin/nginx -s reload
在浏览器中访问django对应的项目
可以看到nginx的转发已经成功了