全网最详细 Django 多项目uwsgi+nginx部署,实现多个项目同时访问,不成功你来打我!

默认认为你已经成功部署了一个项目,想要继续部署第二个项目

  1. 进入 Nginx 的配置文件目录 / usr/local/nginx/conf/,然后新建一个目录:mkdir vhost,之后在 vhost 目录里建立两个以. conf 后缀的文件(有几个项目就放几个,文件名任意),里面的内容如下:

    server {
        listen       8798;               # (需要自己改) 这个就是外网访问项目的端口,不能和其他项目一样,自己选择使用哪个端口.需要在防火墙开放端口
        server_name  www.yuming.cn;
        charset utf-8;
        location / {
            include uwsgi_params;
            uwsgi_pass 127.0.0.1:8997;  #(需要自己改) 端接口自己选择,别冲突就行,而且下面的项目xml文件里的端口要和这个一致,并且这个端口不能和其他项目的一样,可能需要将防火墙开放这个新的端口号
            uwsgi_param UWSGI_SCRIPT ***.wsgi;    #(需要自己改) ***为项目中wsgi.py所在文件夹名(就是seetings.py所在的文件夹)  如mysite.uwsgi
            uwsgi_param UWSGI_CHDIR /改成/项目/路径/;  #(需要自己改) 项目文件夹的决定路径,即manage.py所在的文件夹   如/data/wwwroot/mysite/
            }
        location /static/ {
            alias /data/wwwroot/mysite/static/;    # (需要自己改) 项目的static文件夹路径
            }
        }
    
  2. /usr/local/nginx/conf / 目录下的原来默认的 nginx.conf 文件,先备份一下,然后把里面的代码删除,修改成如下代码:

    events {
        worker_connections  1024;
    }
    http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        include /usr/local/nginx/conf/vhost/*.conf;   #  只需要注意这里的nginx路径和你的是否一样,其他代码不用改
        server {
            listen 80 default_server;
            server_name _;
            return 404;
            }
        }
    
  3. 新建立一个虚拟环境,把新项目上传到到服务器。进入虚拟环境,在新的虚拟环境再装一次 uwsgi,和安装项目所需依赖包

  4. 在第二个项目根路径创建search.xml配置文件,把以下代码复制到文件中(把1,2,3行改成你的)

    <uwsgi>
       <socket>127.0.0.1:8997</socket><!-- 内部端口,自定义 -->
       <chdir>/data/wwwroot/***/</chdir><!-- 项目路径 -->
       <module>***.wsgi</module>
       <processes>4</processes> <!-- 进程数 -->
       <daemonize>uwsgi.log</daemonize><!-- 日志文件 -->
    </uwsgi>
    
  5. 进入项目目录启动uwsgi

    uwsgi -x search.xml
    
    注意:如果报错先结束uwsgi进程,再重启启动
    killall -9 uwsgi
    
  6. 启动nginx

    cd /usr/local/nginx/sbin  && ./naginx
    
    注意:如果报错,先结束进程再启动
    killall -9 nginx
    

7.启动第二个项目方法

进入第二个项目的虚拟环境,进入项目目录,重复操作一次第5和6步骤,来启动uwsgi和nginx,注意启动uwsgi时配置文件就不是上个项目的search.xml了,是当前项目目录下的你自己创建的xml文件.

nginx可以直接复制代码重启运行,每个项目的nginx是通用的


问题排解

如果输入ps -ef|grep uwsgi命令,显示类似这样
root 22654 22651 0 13:31 ? 00:00:00 uwsgi -x search.xml
root 22686 1 0 13:33 ? 00:00:00 uwsgi mysite.xml
最后有两个配置文件 search.xml mysite.xml存在,那么恭喜你就是成功启动了两个uwsgi,应该就可以两个项目同时访问了如果没有,检查步骤是否出错

可以在项目目录下的uwsgi.log以及nginx目录下的error.log查看错误信息

参考
https://www.django.cn/article/show-4.html#banqian
https://blog.csdn.net/xiaoduu/article/details/107295789

你可能感兴趣的:(django,nginx,python)