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或者域名加路由进行访问即可

Django(Ngnix)项目部署 负载均衡

相关推荐