V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
guoweikuang
V2EX  ›  Django

关于 Django 部署遇到了奇怪的问题???

  •  
  •   guoweikuang · 2017-09-22 22:16:45 +08:00 · 3710 次点击
    这是一个创建于 2653 天前的主题,其中的信息可能已经有所发展或是发生改变。

    部署网站时,使用了 Supervisor+Gunicorn+Nginx 部署,


    • Nginx 的配置没有问题了
    • 改变了 Django 的 settings.py 文件
    DEBUG = False
    ALLOWED_HOSTS = ['101.236.6.252', '127.0.0.1', '.guoweikuang.com']
    
    • supervisor 的配置如下
    [program:django_cms]
    directory = /home/guoweikuang/projects/django_cms
    command = /home/guoweikuang/projects/django_cms/venv/bin/gunicorn django_cms.wsgi:application -b 127.0.0.1:8003
    user=www-database_pool
    startsecs = 5
    startretries = 3
    stopsignal = KILL
    stopasgroup = True
    stdout_logfile = /var/log/supervisor/django_cms.log
    stderr_logfile = /var/log/supervisor/django_cms.error.log
    

    配置好重新载入配置并启动,都没有出现问题 然后我打开首页,也没有问题 然后我试着点进去一个详情页,what the fuck, 直接Server Error (500)

    赶紧去看了下 supervisor 的日志,发现只有 500 服务器端错误,但也找不到原因

    GET /article/3 HTTP/1.0" 500 27
    

    然后去看了 nginx 的日志,也只有

    GET /article/3 HTTP/1.1" 500 38 "http://101.236.6.252/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.79 Safari/537.36"
    

    这个错误信息。 然后我直接在项目路径下执行

    gunicorn django_cms.wsgi:application -b 127.0.0.1:8003
    

    再访问一次发现是可以的,我分析是我 supervisor 的配置错了,但改了几次都不行,

    11 条回复    2017-09-26 08:07:00 +08:00
    rogwan
        1
    rogwan  
       2017-09-22 22:33:14 +08:00
    建议 1. 你检查下 supervisor 启动的时候,[program:django_cms] 有加载吗?
    建议 2. gunicorn 可以试试直接放在系统启动加载
    guoweikuang
        2
    guoweikuang  
    OP
       2017-09-22 22:36:40 +08:00
    @rogwan supervisor 已经有加载配置了,都正常运行,gunicorn 放在系统启动加载???这个步骤不了解
    lxy
        3
    lxy  
       2017-09-22 22:45:32 +08:00
    既然是 500,开 Debug 不就知道了吗
    Victor215
        4
    Victor215  
       2017-09-22 22:46:33 +08:00 via Android
    settings 把 debug 打开看看呗
    rogwan
        5
    rogwan  
       2017-09-22 22:47:05 +08:00
    @guoweikuang 直接写个启动文件,比如 gunicorn.conf 放在 /etc/init/ 目录下就可以随系统启动了。
    neoblackcap
        6
    neoblackcap  
       2017-09-22 22:48:08 +08:00
    数据库设置正确了吗?
    guoweikuang
        7
    guoweikuang  
    OP
       2017-09-22 22:51:13 +08:00
    @Victor215 这个我居然忘了
    guoweikuang
        8
    guoweikuang  
    OP
       2017-09-22 22:55:42 +08:00
    问题通过 DEBUG 找到了,是数据库权限问题,我运行下面语句时是在 root 权限下运行
    ```python
    gunicorn django_cms.wsgi:application -b 127.0.0.1:8003
    ```
    所以那时候都是可以访问了,
    julyclyde
        9
    julyclyde  
       2017-09-23 22:38:41 +08:00
    如果是数据库权限的问题,按说你用各种运行方式应该得到相同的错误才对啊
    guoweikuang
        10
    guoweikuang  
    OP
       2017-09-24 21:07:42 +08:00   ❤️ 1
    @julyclyde 因为使用的是 sqlite 数据库,数据库也就是一个磁盘文件,但是它的权限是 root 才能打开的。我之前直接在命令行下操作都是 root 权限运行的,所以没有报错,放在 supervisor 里面已经配置用户是 www-data 了,所以报错
    julyclyde
        11
    julyclyde  
       2017-09-26 08:07:00 +08:00
    @guoweikuang 不错不错,能分析出原因分享给大家
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2804 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 07:08 · PVG 15:08 · LAX 23:08 · JFK 02:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.