首先介绍相关知识:
WSGI:
运行python代码的容器,Web服务器网关接口,没有官方实现,
更像一个协议,只要遵循这个协议,就可以在任何服务器上运行
wsgi.py:
application对象:在python模块中用application对象与应用服务器交互
settings:Django需要导入的模块,应用定义
uWSGI:实现WSGI所有接口的软件
监听端口,完全用C编写
配置:
项目目录下新建uwsgi.ini文件
nginx:
作用:负载均衡,多台服务器轮流执行
反向代理:隐藏真实服务器
实现流程:用户请求nginx,nginx转发到uwsgi,运行django下的python代码
请求静态文件:直接由nginx返回
uwsgi安装配置:
进入虚拟环境
pip install uwsgi
在项目目录下创建uwsgi.ini
配置如下:
[uwsgi]
# socket=外网ip:端口(使用nginx连接时,使用socket)
http=0.0.0.0:8000 # 直接用来做服务器,并且127.0.0.1只能本地访问网站
chdir=你的项目根目录
wsgi-file=wsgi.py文件位置
processes=4
threads=2
master=True
pidfile=uwsgi.pid # 主端口号id,用于停止服务
daemonize=uswgi.log # 日志文件
启动:uwsgi –ini uwsgi.ini(注意,是双短横线,下同)
停止:uwsgi –stop uwsgi.pid
重启:uwsgi –reload uwsgi.pid
使用http协议查看网站运行情况,运行正常,但是静态文件无法加载
访问网站,完成uwsgi测试!
nginx下载配置(我这里是CentOS7):
1、添加CentOS 7 EPEL仓库
sudo yum install epel-release
2、安装nginx
sudo yum install -y nginx
用yum安装的nginx可以非常简便的启动nginx
sudo nginx # 启动nginx
sudo nginx -s stop # 停止nginx
sudo nginx -s reload # 重启nginx
配置nginx
sudo vim /etc/nginx/nginx.conf
在server下添加新的location项,指向uwsgi的ip与端口
location / {
include uwsgi_params;
uwsgi_pass 0.0.0.0:8000;
}
启动uwsgi再启动nginx测试,然后访问网站测试
uwsgi --ini uwsgi.ini
sudo nginx
nginx静态文件配置:
所有的静态文件都会由nginx处理,不会将请求转到uwsgi
配置nginx的静态项,打开nginx.conf文件,找到server,添加新location
location /static {
alias /var/www/test/static/;
}
注意,以后的静态文件都会传入上面这个文件夹内
修改文件夹权限,然后创建static目录,顺序不可逆
sudo chmod 777 /var/www/test
cd /var/www/test
sudo mkdir static
PS:如果是配置Django的服务需要在Django设置中添加
STATIC_ROOT='/var/www/test/static/'
STATIC_URL='/static/'
重启uwsgi、nginx,测试,完成!