上图有误,server1 和 server2 都是8080端口。
--------1.
在server0里,配置nginx config 文件:
upstream uwsgi负载均衡名字 {
server server1的ip:port; 假设这里均为80 port
server server2的ip:port;
}
server {
listen 80;
server_name server0的IP; # 添加ip
# = 表示精确匹配
location = /{
proxy_pass server3的IP;
}
location / {
include uwsgi_params;
uwsgi_pass uwsgi负载均衡名字;
}
###其他代码不用管
}
--------2.
上图是用户访问流程图。因为要用到uwsgi,所以server1上需要安装它。server1上有djiango project code。
pip install uwsgi
项目部署时,需要把django 项目代码里的settings.py文件下两个参数改一下:
DEBUG=FALSE
ALLOWED_HOSTS=[‘*’]
然后创建一个名字为uwsgi.ini的文件,位于项目文件夹下,粘贴如下内容:
[uwsgi]
#使用nginx连接时使用
socket=127.0.0.1:8080
#直接做web服务器使用
#http=127.0.0.1:8080
#项目目录
chdir=/Users/sylvia/wokplace/dailyfresh
#项目中wsgi.py文件的目录,相对于项目目录
wsgi-file=dailyfresh/wsgi.py
processes=4
threads=2
master=True
pidfile=uwsgi.pid
daemonize=uwsgi.log
virtualenv=/Users/sylvia/.virtualenvs/env1
#home = /Users/sylvia/.virtualenvs/env1 # 如果在虚拟机安装了uwsgi需要添加这一句,否者会在uwsgi.log里出现报错而不能启动
启动uwsgi: uwsgi –-ini 配置文件路径 例如:uwsgi –-ini uwsgi.ini
停止uwsgi指令为: uwsgi --stop uwsgi.pid路径 例如:uwsgi –-stop uwsgi.pid
配置nginx config文件:
server {
listen 80; #假设server0里用的是80端口
server_name 当前server ip:port;
location / {
include uwsgi_params;
uwsgi_pass 当前server的ip:8080;
}
在server1和2 里任意创建文件夹,如路径/Users/sylvia/Desktop/dailyfresh1_celery/static/,
然后在django settings.py中配置收集静态文件路径:
STATIC_ROOT=/Users/sylvia/Desktop/dailyfresh1_celery/static/;
执行命令收集静态文件:
python manage.py collectstatic
--------3.
在server3里,配置nginx config 文件:
server {
listen 80;
server_name server3 ip:port;
location /static {
alias /Users/sylvia/Desktop/dailyfresh1_celery/static/;
}
如上配置完ngin需要重启:
sudo /usr/local/nginx/sbin/nginx -s stop
sudo /usr/local/nginx/sbin/nginx