部署示意图
uwsig
第一步:安装uwsig
pip install uwsgi
第二步:配置uwsgi
手动在项目根目录下新建文件uwsgi.ini
[uwsgi]# 使用nginx连接时使用# socket = 127.0.0.1:8080# 直接做web服务器使用,指定要监听的ip和端口号,即我们运行项目时的ip和端口http = 127.0.0.1:8080# 项目目录chdir = /home/fatpuffer/myproject/dailyfresh# 项目中的wsgi.py文件的目录,相对于项目目录wsgi-file = dailyfresh/wsgi.py# 指定启动的工作进程数process = 4# 指定每个进程中的线程数threads = 2# 指定在工作进程中存在一个主进程master = True# 保存启动之后主进程的进程号pidfile = uwsgi.pid# 设置uwsgi后台运行,运行信息保存在uwsgi.logdaemonize = uwsgi.log# 设置虚拟环境的路径virtualenv = /home/fatpuffer/.virtualenvs/dailyfresh
第三步:修改项目配置文件settings.py
DEBUG = FlaseALLOWED_HOST = ['*']
第四步:uwsgi的启动和停止
启动uwsgi --ini 配置文件路径
uwsgi --ini uwsgi.ini
停止uwsgi --stop uwsgi.pid文件路径
uwsgi --stop uwsgi.pid
查看已启动的进程
ps aux | grep uwsgi
查看主进程号
cat uwsgi.pid
nginx
第一步:修改uwsgi.ini
配置文件,使其能够与nginx
通信
[uwsgi]# 使用nginx连接时使用socket = 127.0.0.1:8080# 直接做web服务器使用,指定要监听的ip和端口号,即我们运行项目时的ip和端口# http = 127.0.0.1:8080# 项目目录chdir = /home/fatpuffer/myproject/dailyfresh# 项目中的wsgi.py文件的目录,相对于项目目录wsgi-file = dailyfresh/wsgi.py# 指定启动的工作进程数process = 4# 指定每个进程中的线程数threads = 2# 指定在工作进程中存在一个主进程master = True# 保存启动之后主进程的进程号pidfile = uwsgi.pid# 设置uwsgi后台运行,运行信息保存在uwsgi.logdeamonize = uwsgi.log# 设置虚拟环境的路径virtualenv = /home/fatpuffer/.virtualenvs/dailyfresh
第二步:nginx配置转发请求给uwsgi
location / {# 包含uwsgi的请求参数include uwsgi_params;# 转交请求给uwsgiuwsgi_pass uwsgi服务器的ip:port}
第三步:新建文件夹用来保存我们项目中的静态文件
sudo mkdir -p /var/www/dailyfresh/static
该目录需要用管理员权限才能访问,所以我们需要修改其权限
sudo chmod 777 /var/www/dailyfresh/static/
第四步:配置nginx静态文件访问路径
location /static {# 指定静态文件存放的目录alias /var/www/dailyfresh/static/;}
第五步:收集项目中的静态文件到上述目录中
打开项目配置文件settings.py
,指定要收集静态文件到哪里
STATIC_ROOT = '/var/www/dailyfresh/static'
第六步:执行收集命令
python3 manage.py collectstatic
第七步:对接我们的静态页面服务器的nginx
(以下部分没有可以不用看
)
该nginx配置如下
server {listen 80;server_name localhost;location /static {alias /home/fatpuffer/Desktop/dailyfresh/static;}location / {root /home/fatpuffer/Desktop/dailyfresh/static;index index.html index.htm;}}
配置请求转发,当用访问/
时我们转发到该服务器上
# 等号代表精确匹配location = / {# 传递请求给静态文件服务器的nginxproxy_pass http://文件存储系统ip:80;}
重启nginx
cd /usr/local/nginxsudo sbin/nginx -s reload
第八步:配置负载均衡
说明:每个服务器都要有项目源码,必须有uwsgi.ini
配置文件,配置同上,必须写自己服务器的真实IP
,且各个配置文件之间端口不能重复
。
nginx配置文件中server上面添加upstream
upstream dailyfresh {server 项目服务器1 ip:port;server 项目服务器2 ip:port;server 项目服务器3 ip:port;}server {listen 80;server_name localhost;location / {# 包含uwsgi的请求参数include uwsgi_params;# 转交请求给uwsgi# uwsgi_pass uwsgi服务器的ip:portuwsgi_pass http://dailyfresh;}location /static {# 指定静态文件存放的目录alias /var/www/dailyfresh/static/;}location = / {# 传递请求给静态文件服务器的nginxproxy_pass http://文件存储系统ip:80;}}
重启nginx
cd /usr/local/nginxsudo sbin/nginx -s reload