django2.27 项目部署 nginx+uwsgi

    技术2022-07-12  64

    上图有误,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
    Processed: 0.018, SQL: 9