一. 把代码部署到服务器上
不要和静态文件服务器部署到一起,否则后期nginx会冲突
1. 打包第三方库
pip freeze > requirements.txt # 打包第三方库
2. 将代码拷贝到服务器上
3. 新建虚拟环境安装第三方库
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/ # 下载第三方库
4. 编辑分词的文件,重新生成索引数据
虚拟环境中找到分词文件,编辑分词的文件,重新生成索引数据
否则会报错
5. 更改支付查询调用的函数里面的沙箱路径
使用支付宝沙箱模式,记得更改支付查询调用的函数里面的沙箱路径
否则会报错
6. 运行
能启动就代表成功
python3 manage.py runserver 0.0.0.0:8000
7. 浏览器访问
http://192.168.37.152:8000/user/login
# 访问被拒绝
# (1). 配置settings.py
# ALLOWED_HOSTS = [] 设置为 ["*"],否则访问不到
# (2). 检查防火墙(关闭 或者 开放8000端口)
# 其他报错就百度一下
二. uwsgi作为web服务器
1. 安装uwsgi
pip install uwsgi
2. 配置 settings.py
DEBUG=False
ALLOWED_HOSTS=['*']
3. 在项目根目录新建配置文件 uwsgi.ini
[uwsgi]
#使用nginx连接时使用
# socket=你刚刚查到的本地ip地址:8000
#直接做web服务器使用 python manage.py runserver ip:port
http=192.168.37.152:8000
#项目目录
chdir=/dddd/django20
#项目中wsgi.py文件的目录,相对于项目目录
wsgi-file=django20/wsgi.py
# 指定启动的工作进程数
processes=4
# 指定工作进程中的线程数
threads=2
# 开启主进程模式--uwsgi服务器的角色 uwsgi做主进程,关闭该进程其他相关进程也会被杀掉
master=True
# 保存启动后主进程的pid
pidfile=uwsgi.pid
# 设置uwsgi后台运行,uwsgi.log保存
daemonize=uwsgi.log
#虚拟开发环境路径(可以不写)
virtualenv = /dddd/myproject
4. uwsgi启动和停止
启动: uwsgi --ini 配置文件路径 # 例如: uwsgi --ini uwsgi.ini
停止: uwsgi --stop uwsgi.pid路径 # 例如:uwsgi --stop uwsgi.pid
5. 静态页面问题
settingspy中debug改为false的时候django就不会默认处理静态文件了,
所以静态文件不会显示,需要使用nginx处理静态文件
三. 部署-基本部署架构解析
1. uwsgi部署
2. uwsgi + nginx 部署
四. 部署-nginx配置转交请求给uwsgi
1. 修改uwsgi.ini配置文件
#使用nginx连接时使用
socket=你刚刚查到的本地ip地址:8000 # 打开
#直接做web服务器使用
# http=192.168.37.152:8000 # 注释
2. 修改nginx配置文件
# 1. 进入文件
cd /usr/local/nginx/conf
vim nginx.conf
# 2. 修改配置文件
server {
listen 80;
server_name localhost;
location / {
# 包含uwsgi的请求参数
include uwsgi_params;
# 转交请求给uwsgi, uwsgi服务器的ip和端口
uwsgi_pass 192.168.37.152:8000;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
3. 更新项目配置文件
sudo /usr/local/nginx/sbin/nginx -s reload
4. 启动nginx 和 uwsgi
// 启动nginx 和 uwsgi
sudo /usr/local/nginx/sbin/nginx
uwsgi --ini uwsgi.ini
// 其他指令
sudo /usr/local/nginx/sbin/nginx -s reload // 重启
sudo /usr/local/nginx/sbin/nginx -s stop// 停止
5. 浏览器访问
http://192.168.37.152/user/login
五. 部署- nginx配置处理静态文件
1. centos 新建 静态文件目录
mkdir -p /dddd/static
2. settings.py 配置静态文件路径
# 指定收集静态文件的路径
STATIC_ROOT = 收集的静态文件路径 例如:/dddd/static;
3. centos 修改文件权限
sudo chmod 777 /dddd/static/
4. django执行收集静态文件的命令
# 执行命令会把项目中所使用的静态文件收集到STATIC_ROOT指定的目录下。
python manage.py collectstatic
5. 配置nginx.conf文件
# 1. 进入文件
cd /usr/local/nginx/conf
vim nginx.conf
# 2. 修改配置文件
server {
...
# nginx配置转交请求给uwsgi
...
# nginx处理静态文件
location /static {
# 指定静态文件存放的目录
alias /dddd/static/; # 指定静态文件路径
}
}
6. 更新项目配置文件
sudo /usr/local/nginx/sbin/nginx -s reload
7. 浏览器访问
http://192.168.37.152/index
六. nginx 转发请求给另外地址
项目服务器 和 静态页面服务器使用两个虚拟机区分
1. 配置项目服务器上的 nginx配置文件 传递请求给静态文件服务器
# 1. 进入文件
cd /usr/local/nginx/conf
vim nginx.conf
# 2. 修改配置文件
server {
...
# nginx配置转交请求给uwsgi
...
# nginx处理静态文件
...
location = / {
# 传递请求给静态文件服务器的nginx
proxy_pass http://静态页面服务器ip; // 例如: 192.168.38.199;
}
}
2. 更新项目nginx配置文件
sudo /usr/local/nginx/sbin/nginx -s reload
七. nginx配置upstream实现负载均衡
启动多个uwsgi,让nginx实现负载均衡,将请求分配到多个uwsgi服务器上
1. 启动多个uwsgi
# 1. 复制一份 uwsgi.ini
cp uwsgi.ini uwsgi2.ini
# 2. 修改uwsgi2.ini内容:
#使用nginx连接时使用
socket=192.168.37.152:8001
# 保存启动后主进程的pid
pidfile=uwsgi2.pid
# 设置uwsgi后台运行,uwsgi.log保存
daemonize=uwsgi2.log
# 启动uwsgi2.ini
uwsgi --ini uwsgi2.ini
2. 修改项目的nginx配置文件
# 1. 进入文件
cd /usr/local/nginx/conf
vim nginx.conf
# 2. 修改配置文件
# 指定上游服务器,dailyfresh随便起,两个uwsgi配置的ip和端口
upstream dailyfresh{
server 192.168.37.152:8000;
server 192.168.37.152:8001;
}
server {
listen 80;
server_name localhost;
# nginx配置转交请求给uwsgi
location / {
# 包含uwsgi的请求参数
include uwsgi_params;
# 转交请求给uwsgi
# uwsgi_pass 192.168.37.152:8000;
uwsgi_pass dailyfresh;
}
...