美文网首页
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