Django(Ngnix)项目部署 负载均衡
踩过不少坑,所以一定要看清楚自己的配置,地址这些都不能有错
简单的说就是本机当Ngnix,分配客户端的请求给不同后端的服务器,解决大量并发访问服务问题
首先:
在本机与后端服务器都要先安装Uwsigi
sudo apt-get install libpython3.6-dev
pip install uwsgi
先在后端的各个服务器上操作
1 先进入你创建的虚拟环境下 #注意!一定要安装好项目所需要的环境
2把项目拷进去,cd 到项目文件夹里 #注意!项目不能用root用户拷进来
3 pwd 复制这个路径:
4 在这个项目目录下建立uwsgi文件 记得是项目主目录,也就是和Template等处于一个目录下,别弄错
sudo vim uwsgi.ini
5 在里面写入
[uwsgi]
socket=0.0.0.0:8000
#http=0.0.0.0:8000
chdir=/home/gms/project #这里就可以粘贴你复制的项目路径,一定不能错!
wsgi-file=project/wsgi.py #项目下的wsgi.py的路径
processes=1 #多少个进程可自定义
threads=2 #可自定义
master=true
pidfile=uwsgi.pid
daemonize=uwsgi.log
保存退出
6 cd 到有seeting.py文件的目录下,也就是与你项目同名的文件,修改项目的settings.py 文件
DEBUG=FALSE
ALLOWED_HOSTS = ["*"]
STATIC_ROOT=’/var/www/myApp/static/’
#这个路径可自定义,但要与本机创建的static目录相同,可先到本机窗口先创建此目录,在第二部分的第7条保存退出
7 确认本机创建static文件和配置好ngnix.conf文件后,把项目里的static文件里的东西迁移过去本机新创建的static文件里
cd .. #到达项目主目录
python manage.py collectstatic #执行迁移前要确定本机有没有创建好这个文件!
8 sudo uwsgi --ini uwsgi.ini 启动服务
9 sudo ps -aux | grep uwsgi 查看启动进程确定是否开启
第二部分在本机操作
本机当 Nginx,分发客户端的请求给后端的服务器
1 安装
sudo apt-get install zlib1g-dev
2 拿下安装包,解压 #解压包可自取
链接:https://pan.baidu.com/s/1DF9MyD2Dms89Qe7dLbuAiQ 密码:i70u
tar -xzvf nginx-1.11.3.tar.gz
tar -xzvf openssl-1.0.1.tar.gz
tar -xzvf pcre-8.41.tar.gz
3 进入Nginx解压目录
cd /home/gms/nginxFile/nginx-1.11.3/
4 输入来配置环境
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_flv_module --with-http_stub_status_module --with-http_gizp_static_module --with-prce=../prce-8.41 --with-openssl=../openssl-1.0.1
5 编译
make
如果出现prce.h No such file or directory,就安装 sudo apt-get install libpcre3 libpcre3-dev
负载均衡
6 安装
sudo make install
7 打cd命令 回主目录,创建一个static文件,存放项目的css,js,jq等文件 注意要在分发服务器上把项目的static文件迁移过来
sudo mkdir -vp /var/www/myApp/static #可自己命名,要与下面nginx.conf配置的相同
Sudo chmod 777 /var/www/myApp/static/ #设置文件的权限
8 配置nginx.conf 文件
vim /usr/local/nginx/conf/nginx.conf
内容
events {
use epoll;
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 300;
gzip on;
#mycom指定负载均衡器的名称 ,可自定义,后面会调用
upstream mycom{
server 47.106.37.80:8000 weight=1 max_fails=1 fail_timeout=300s;
#47.106.37.80:8000 注意:这是我自己分发的后端服务器的IP和端口,记得修改
server ztwo.top:8000 weight=2 max_fails=2 fail_timeout=300s;
#ztwo.top:8000 注意:这是我分发的后端服务器的IP和端口,记得修改
}
server {
listen 80;
server_name localhost 39.108.232.243:8000;
#注意39.108.232.243:8000这是自己的服务器IP与端口
charset utf-8;
location / {
include uwsgi_params;
uwsgi_pass mycom; #注意:调用负载均衡器的名称,上面定义的 需要同名
}
#配置你项目的static文件
location /static{
alias /var/www/myApp/static/;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
8 启动ngnix服务
sudo /usr/local/nginx/sbin/nginx
如果是改变了配置文件的话,再次启动服务器只要输入
sudo /usr/local/nginx/sbin/nginx -s reload
9 查看进程确认是否开启
sudo ps -aux | grep uwsgi
最后在浏览器直接输入自己本机的IP或者域名加路由进行访问即可