V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Ace77
V2EX  ›  问与答

HELP!HELP!使用 Nginx 和 Gunicorn 部署 Django 博客出现了 2 个问题

  •  
  •   Ace77 · 2018-09-02 23:56:18 +08:00 · 1645 次点击
    这是一个创建于 2259 天前的主题,其中的信息可能已经有所发展或是发生改变。

    坐着搞了一天,人都快搞抑郁了...求各位有经验的给支个招~ 问题描述 服务器:阿里云 ECS 服务器 服务器系统:Ubuntu 16.04 64 位 域名:备案 ing(访问时是使用 ip 地址去访问服务器,所以应该和域名无关)

    在初次安装好 Nginx 后可以使用 id 地址访问到 欢迎页面, 但是在配置完 nginx 之后出现 502 Bad Gateway

    这是第一个问题,查了很多文档 都试了一下没解决

    第二个问题:跳过页面 502 访问问题继续部署的时候,在部署 Gunicorn 的时候输入

    gunicorn --bind unix:/tmp/www.xxx.com.socket blog.wsgi:application 执行代码路径是在项目路径 也就是 blog 路径下执行的,www.xxx.com 是父级路径 报错了,报错信息是:

    [2018-09-02 23:12:26 +0800] [1133] [INFO] Starting gunicorn 19.9.0

    [2018-09-02 23:12:26 +0800] [1133] [INFO] Listening at: unix:/tmp/www.xxx.com.socket (1133)

    [2018-09-02 23:12:26 +0800] [1133] [INFO] Using worker: sync

    [2018-09-02 23:12:26 +0800] [1136] [INFO] Booting worker with pid: 1136

    [2018-09-02 23:12:26 +0800] [1136] [ERROR] Exception in worker process

    Traceback (most recent call last):

    File "/root/sites/www.xxx.com/env/lib/python3.5/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker

    worker.init_process()
    

    File "/root/sites/www.xxx.com/env/lib/python3.5/site-packages/gunicorn/workers/base.py", line 129, in init_process

    self.load_wsgi()
    

    File "/root/sites/www.xxx.com/env/lib/python3.5/site-packages/gunicorn/workers/base.py", line 138, in load_wsgi

    self.wsgi = self.app.wsgi()
    

    File "/root/sites/www.xxx.com/env/lib/python3.5/site-packages/gunicorn/app/base.py", line 67, in wsgi

    self.callable = self.load()
    

    File "/root/sites/www.xxx.com/env/lib/python3.5/site-packages/gunicorn/app/wsgiapp.py", line 52, in load

    return self.load_wsgiapp()
    

    File "/root/sites/www.xxx.com/env/lib/python3.5/site-packages/gunicorn/app/wsgiapp.py", line 41, in load_wsgiapp

    return util.import_app(self.app_uri)
    

    File "/root/sites/www.xxx.com/env/lib/python3.5/site-packages/gunicorn/util.py", line 350, in import_app

    __import__(module)
    

    ImportError: No module named 'blog'

    [2018-09-02 23:12:26 +0800] [1136] [INFO] Worker exiting (pid: 1136)

    [2018-09-02 23:12:26 +0800] [1133] [INFO] Shutting down: Master

    [2018-09-02 23:12:26 +0800] [1133] [INFO] Reason: Worker failed to boot.

    第一次进行服务器部署,真的头有点大,恳请各位帮忙看下这 2 个问题是什么情况,以及如何解决,跪谢!!!

    第 1 条附言  ·  2018-09-03 16:32:18 +08:00
    root@iZ2zeeZ:~/sites/www.xxx.xyz/godrryblog# tree -L 2
    .
    ├── aceblog
    │   ├── admin.py
    │   ├── apps.py
    │   ├── form.py
    │   ├── __init__.py
    │   ├── migrations
    │   ├── models.py
    │   ├── __pycache__
    │   ├── tests.py
    │   ├── urls.py
    │   └── views.py
    ├── Blog
    │   ├── __init__.py
    │   ├── __pycache__
    │   ├── settings.py
    │   ├── urls.py
    │   └── wsgi.py
    ├── manage.py
    ├── requirements.txt
    ├── static
    │   ├── css
    │   ├── fonts
    │   ├── images
    │   ├── js
    │   └── media
    ├── statics
    │   ├── admin
    │   ├── css
    │   ├── fonts
    │   ├── images
    │   ├── js
    │   └── media
    └── templates
        ├── blog_new
        └── markdownx
    
    21 directories, 14 files
    

    附录一下目录结构 @lxy42

    21 条回复    2018-09-09 23:56:17 +08:00
    Ace77
        1
    Ace77  
    OP
       2018-09-02 23:56:44 +08:00
    我甚至还格了一遍服务器重新搞了一次...
    wph95
        2
    wph95  
       2018-09-03 00:04:54 +08:00 via iPhone
    看报错信息呀 ImportError: No module named 'blog'

    ---
    祖传的 Django 部署文档,可以一试
    https://github.com/WPH95/Django_memo/blob/master/django 部署指南.md
    lxy42
        3
    lxy42  
       2018-09-03 00:09:13 +08:00 via Android
    报错信息已经说了,找不到 blog 模块。

    看一下 gunicorn 的文档,http://docs.gunicorn.org/en/latest/run.html#integration
    Ace77
        4
    Ace77  
    OP
       2018-09-03 01:54:07 +08:00
    @wph95
    @lxy42 那么 502 的问题也是因为找不到 blog 模块嘛? 这个模块是需要自己设置嘛?
    lxy42
        6
    lxy42  
       2018-09-03 09:07:08 +08:00
    502 Bad Gateway 是因为 Gunicorn 启动失败,Nginx 无法访问到后端服务器( Gunicorn )然后报错。

    模块不用自己设置,项目的目录结构是怎样的,贴上来看看。
    sujin190
        7
    sujin190  
       2018-09-03 10:27:44 +08:00
    502 本来就是 upstream 无法连接,显然是 Gunicorn 没启动,已经很明确了啊

    既然是用 blog.wsgi:application 启动,那么显然你就必须保证当前目录下有 blog 文件夹,blog 文件夹里有 wsgi.py 文件
    JasperYanky
        8
    JasperYanky  
       2018-09-03 10:42:53 +08:00
    Ace77
        9
    Ace77  
    OP
       2018-09-03 13:00:21 +08:00
    @lxy42
    /root/sites/
    www.xxx.xyz(域名)
    /blog(这是存放博客的目录)/
    Ace77
        10
    Ace77  
    OP
       2018-09-03 13:02:27 +08:00
    @lxy42 不小心发出去了 全部结构是
    /root/sites/www.xxx.xyz(域名)/blog(这是存放博客的目录) 同级还有一个 env 目录 /

    然后再 blog 目录下就是 python 的文件了 就是 manage.py 等~
    Ace77
        11
    Ace77  
    OP
       2018-09-03 13:05:03 +08:00
    @sujin190 当前目录下有 blog 文件夹,blog 文件夹里也是有 wsgi.py 文件,但是还是说报错找不到 module
    Ace77
        12
    Ace77  
    OP
       2018-09-03 13:22:58 +08:00
    @JasperYanky 我好好去看一下!
    lxy42
        13
    lxy42  
       2018-09-03 14:40:31 +08:00
    $ tree
    .
    ├── blog
    │   ├── __init__.py
    │   ├── __init__.pyc
    │   ├── settings.py
    │   ├── settings.pyc
    │   ├── urls.py
    │   ├── wsgi.py
    │   └── wsgi.pyc
    └── manage.py

    用 tree 命令显示目录结构
    Ace77
        14
    Ace77  
    OP
       2018-09-03 16:32:57 +08:00
    @lxy42 我刚刚加在附言里了 麻烦大佬看下
    Ace77
        15
    Ace77  
    OP
       2018-09-03 16:39:32 +08:00
    @lxy42 大写的 Blog 也引入过一次 也是失败的
    lxy42
        16
    lxy42  
       2018-09-03 17:54:01 +08:00   ❤️ 1
    目录结构是没问题的,你是在~/sites/www.xxx.xyz/godrryblog 目录下运行 gunicorn 吗?
    Ace77
        17
    Ace77  
    OP
       2018-09-03 22:38:30 +08:00
    @lxy42 是的呀 有可能是第一次运行 gunicorn 的时候没有进入虚拟环境 后来又进入虚拟环境试了一下 也是报错了
    Ace77
        18
    Ace77  
    OP
       2018-09-04 04:31:28 +08:00
    @lxy42 感谢你的热心指导,已经解决了
    Ace77
        19
    Ace77  
    OP
       2018-09-04 04:32:33 +08:00
    lxy42
        20
    lxy42  
       2018-09-04 10:56:32 +08:00
    @Ace77 #19 所以,最终原因是什么?
    Ace77
        21
    Ace77  
    OP
       2018-09-09 23:56:17 +08:00
    @lxy42 sry,刚刚看到,有 2 个原因,一个是虚拟环境的配置不当,第二个是 nginx 更新了配置文件后要进行重启(一开始无效,后来我直接重启了服务器).其实就是因为手比较生 整个流程搞得很乱 后来理清了思路 就没问题了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2645 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 01:42 · PVG 09:42 · LAX 17:42 · JFK 20:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.