美文网首页
nginx + supervisor + uwsgi + dja

nginx + supervisor + uwsgi + dja

作者: 清风徐来_简 | 来源:发表于2018-11-25 00:37 被阅读0次

    一、静态文件处理

    • 0.hosts 文件配置,模拟域名
      C:\Windows\System32\drivers\etc
      10.0.0.10 www.mydjango.com
    • 1.创建存放django静态文件的目录:
      mkdir /opt/static/django
    • 2.配置django项目,收集静态文件
      关闭debug模式
    DEBUG=False
    #收集静态文件的目录,静态文件内容都放这里了
    STATIC_ROOT='/opt/static/django'
    STATIC_URL = '/static/'
    STATICFILES_DIRS=[
        os.path.join(BASE_DIR,"static"),
    ]
    
    • 3.创建static静态文件夹,注意创建的目录
    (django15) [root@localhost /projects/django15 07:40:57]#mkdir static
    (django15) [root@localhost /projects/django15 07:41:16]#ls
     db.sqlite3  django15  manage.py  static
    
    • 4.STATIC_ROOT 文件夹 是用来将所有STATICFILES_DIRS中所有文件夹中的文件,以及各app中static中的文件都复制过来
      把这些文件放到一起是为了用nginx等部署的时候更方便
      python3 manage.py collectstatic(虚拟环境内执行)
      结果:61 static files copied to '/opt/static/django'.
    • 5.cd /opt/static/django 查看 ls
      会有一个admin cd admin 查看 ls
      会有这么多东西 css fonts img js

    二、uwsgi配置

    • 1.创建uwsgi配置文件 uwsgi.ini,文件放哪里都可以
      cd /projects/django15/
      vim uwsgi.ini
    [uwsgi]
    #使用nginx连接时使用
    socket=0.0.0.0:9000
    #不用nginx直接当做web服务器使用
    #http=0.0.0.0:9000
    #项目目录绝对路径
    chdir=/projects/django15
    #wsgi文件路径,在项目底下
    wsgi-file=django15/wsgi.py
    #指定解释器目录
    home=/root/Envs/django15
    processes=4
    threads=2
    master=True
    pidfile=uwsgi.pid
    
    • 2.目录结构:
    (django15) [root@localhost /projects/django15/django15 08:41:47]#ls
    __init__.py  __pycache__  settings.py  test_uwsgi.py  urls.py  wsgi.py  
    

    三、nginx配置

    • 1.配置nginx文件:
      vim /opt/nginx1-12/conf/nginx.conf
    upstream django {
    server 0.0.0.0:9000 weight=10;  
    }
    server {
    listen       80;
        server_name  www.mydjango.com;   (注意不带斜杠,加引号)
        location / {
            include /opt/nginx1-12/conf/uwsgi_params; 
            uwsgi_pass  django;
        }
        location /static  {
        alias /opt/static/django;
        }
    }
    
    
    • 2.启动:/opt/nginx1-12/sbin/nginx

    四、安装supervisor进程管理工具

    • 1.通过easy_install下载
      easy_install supervisor # python2的下载
    • 2.生成supervisor配置文件
      echo_supervisord_conf > /etc/supervisord.conf
    • 3.添加进程管理命令
      which uwsgi
      /root/Envs/django15/bin/uwsgi
      find / -name uwsgi.ini
      /projects/django15/uwsgi.ini
      vim /etc/supervisord.conf
      [program:my_django15]
      command=/root/Envs/django15/bin/uwsgi --ini /projects/django15/uwsgi.ini
      (跟据两个文件的位置配置)
      
    • 4.启动supervosr,管理uwsgi
      通过 supervisord 这个命令 -c 指明一个配置文件
      • 4.1,supervisord -c /etc/supervisord.conf #启动supervisor
        可能会出现:Unlinking stale socket /tmp/supervisor.sock
      • 4.2,supervisorctl reload 重启:
      • 4.3,supervisorctl
        回车之后就进入一个交互式的环境
      1. supervisord 命令
        1.supervisor > update:更新新的配置到supervisord
        2.supervisor > reload:重新启动配置中的所有程序
        3.supervisor > stop all program_name:启动某个进程(program_name=你配置中写的程序名称)
        4.supervisor > stop program_name:停止某一进程 (program_name=你配置中写的程序名称)
        5.supervisor > restart program_name:重启某一进程 (program_name=你配置中写的程序名称)
        6.supervisor > status:查看状态

        下面非常重要,启动不了的时候可查看具体原因。

        7.supervisorctl tail my_django15(任务名) stdout:查看具体的项目信息

        1. supervisor手动关闭:
          /usr/bin/supervisorctl stop all先关闭supervisor启动脚本,之后再关闭supervisord服务kill pid进程号

        2. 如果报错,可能时因为没有相关文件,手动添加,或将supervisord.conf中的配置信息修改一下。相关文章介绍。

    五、启动nginx,supervisorctl,浏览器访问

    supervisorctl reload:重启
    /opt/nginx1-12/sbin/nginx -s reload:重启
    www.mydjango.com:访问测试

    六、nginx 反向代理 uwsgi 的404页面自定制

    upstream django {
    server 0.0.0.0:9000 weight=10;
    }
    server {
        listen       80;
        server_name  www.mydjango.com;
            
        location / {
            include /opt/nginx1-12/conf/uwsgi_params; 
            uwsgi_pass  django;
                
            关键参数:这个变量开启后,我们才能自定义错误页面,当后端返回404,nginx拦截错误定义错误页面
            uwsgi_intercept_errors on;
        }
            
        location /static  {
        alias /opt/static/django;
        }
            
        # 定义错误页面码,如果出现相应的错误页面码,转发到那里。
        error_page  404     /404.html;
    
        location = /404.html {
        root   /opt/static;
        }
            
    }
    

    我的自定制页面
    [root@localhost /opt/static 20:51:37]#ls
    404.html django index.html page1 page2 page3

    相关文章

      网友评论

          本文标题:nginx + supervisor + uwsgi + dja

          本文链接:https://www.haomeiwen.com/subject/mseuqqtx.html