1、 django配置文件修改
debug=False
ALLOWED_HOSTS = ['*']
#静态文件收集地址
STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), 'wx/static')
#修改好配置执行,收集静态文件
python manage.py collectstatic
2、nginx,uwsgi安装及配置
1、安装
sudo apt install nginx
pip install uwsgi
2、配置
uwsgi配置
[uwsgi]
#使用nginx连接时使用,Django程序所在服务器地址
socket=127.0.0.1:8200
#直接做web服务器使用,Django程序所在服务器地址
#http=127.0.0.1:8002
#项目目录
chdir=/server/fangcun_wx/wx_mall
#uwsgi的pid文件
pidfile=wx.pid
# 进程数
processes=2
# 线程数
threads=4
module=wx_mall.wsgi
# uwsgi服务器的角色
master=True
# 日志文件,因为uwsgi可以脱离终端在后台运行,日志看不见。我们以前的runserver是依赖终端的
daemonize=logs/wx_uwsgi.log
#自定义uwsgi日志格式
logformat = i am a logline reporting "%(ltime) %(user) %(method) %(uri) %(proto) %(foo)" returning with status %(status)
# 指定依赖的虚拟环境
virtualenv=/root/.virtualenvs/django_3
#多线程设置
enable-threads=true
http配置
server {
listen 8001;
server_name 339.104.234.173
charset utf-8;
location / {
include uwsgi_params;
uwsgi_pass localhost:8300;
}
location /static/ {
root /server/phosee/mall/static/;
}
}
https配置
upstream fangcun{
server 127.0.0.1:8000;
}
server {
listen 443 ssl;
ssl on;
ssl_certificate /server/2767_www.pe.cn.pem;
ssl_certificate_key /server/2767_www.pe.cn.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
server_name localhost;
charset utf-8;
location / {
uwsgi_pass fangcun;
include uwsgi_params;
root /var/www/;
}
location /static/ {
root /server/fangcun/front/;
}
location /newyear/ {
proxy_pass http://39.105.165.157/;
}
location /newyearpc/ {
root /var/www/;
index index.html;
}
}
3、启动
nginx -s reload
nginx -s stop
nginx -s start
#uwsgi文件名可自定义,启动等操作要在当前路径下
uwsgi --ini uwsgi.ini
uwsgi --relaod uwsgi.pid
uwsgi --stop uwsgi.pid
4、后端服务做健康检查,我们可以在 Nginx 配置文件中添加如下配置:
upstream test_web {
server 192.168.1.21:80;
server 192.168.1.22:80;
check interval=3000 rise=2 fall=5 timeout=1000 type=http;
}
在这些配置中,server 指令用于配置后端节点,check 指令用于配置节点的健康检查。在 check 指令后面有几个健康检查相关的参数:interval、rise、fall、timeout、type。
它们表示什么意思呢?
interval:用于配置健康检查的间隔,如 3000 毫秒;
rise:用于配置连续几次请求成功后表示该节点恢复了,如 2 次;
fall:用于配置连续几次请求失败后表示该节点出故障了,如 5 次;
timeout:用于配置健康检查请求的超时时间,超时后表示请求失败,如 1000 毫秒;
type:用于配置请求协议的类型,如 HTTP 请求。
3、四种负载均衡模式:轮询法、加权轮询法、来源 IP 哈希法、最小连接数法
Nginx 默认提供轮询模式负载均衡,配置示例如下:
upstream admin {
server 127.0.0.1:8081;
server 127.0.0.1:8082;
}
当在每个 server 后面加上 weight 参数后,轮询模式变成加权轮询模式:
upstream admin {
server 127.0.0.1:8081 weight=4;
server 127.0.0.1:8082 weight=6;
}
当在轮询模式的配置中加上 ip_hash,Nginx 将会按来源 IP 哈希做负载均衡。配置如下:
upstream admin {
ip_hash;
server 127.0.0.1:8081;
server 127.0.0.1:8082;
}
同样,如果在配置中加上 least_conn,Nginx 会采用最小连接数法做负载均衡。配置如下:
upstream admin {
least_conn;
server 127.0.0.1:8081;
server 127.0.0.1:8082;
}