项目部署
1)静态文件服务器
开发阶段: live-server
部署阶段: nginx
域名: www.meiduo.site
Django项目静态文件收集:
# 设置setting配置文件
STATIC_ROOT = '指定收集静态文件的保存目录'
# 在终端执行收集静态文件的命令
python manage.py collectstatic
配置nginx服务器提供front_end_pc目录下的静态文件:
server {
listen 80;
server_name www.meiduo.site;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
# 指定网站的根目录是html
# root html;
"""现在指定网站的根目录是我们收集的静态文件"""
root /Users/smart/Desktop/sh16_code/meiduo_sh16/front_end_pc;
"""如果访问的是网站的根路径,默认返回根目录下的index.html"""
index index.html;
}
# ...
}
-
启动nginx: sudo /usr/local/nginx/sbin/nginx
-
停止nignx: sudo /usr/local/nginx/sbin/nginx -s stop
-
重启nginx: sudo /usr/local/nginx/sbin/nginx -s reload
2)后端API服务器
开发阶段: django提供开发的web服务器 python manage.py runserver
部署阶段: uwsgi 遵循wsgi协议的服务器
域名: api.meiduo.site
uwsgi服务器基本使用:
安装: pip install uwsgi
配置:
"""注意这个前面的标识不能丢"""
[uwsgi]
# 使用nginx连接时使用,Django程序所在服务器地址
;socket=127.0.0.1:8001
# 直接做web服务器使用,Django程序所在服务器地址
http=127.0.0.1:8001
# 项目目录
chdir=/Users/smart/Desktop/sh16_code/meiduo_sh16/meiduo_mall
# 项目中wsgi.py文件的目录,相对于项目目录
wsgi-file=meiduo_mall/wsgi.py
# 进程数
processes=4
# 线程数
threads=2
# uwsgi服务器的角色
master=True
# 存放进程编号的文件
pidfile=uwsgi.pid
# 日志文件,因为uwsgi可以脱离终端在后台运行,日志看不见。我们以前的runserver是依赖终端的
daemonize=uwsgi.log
# 指定依赖的虚拟环境
virtualenv=/Users/smart/.virtualenvs/django
-
启动: uwsgi --ini ‘配置文件路径’
-
停止: uwsgi --stop ‘uwsgi.pid文件路径’
配置nginx实现负载均衡:
upstream meiduo {
# 指定业务服务器ip:port
server 127.0.0.1:8001;
server 127.0.0.1:8002;
}
server {
listen 8000;
server_name api.meiduo.site;
location / {
# 保存uwsgi请求参数
include uwsgi_params;
# 请求转发
# uwsgi_pass '业务服务器ip:port';
uwsgi_pass meiduo;
}
}
```