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

2018-09-02 23:56:18 +08:00
 Ace77

坐着搞了一天,人都快搞抑郁了...求各位有经验的给支个招~ 问题描述 服务器:阿里云 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 个问题是什么情况,以及如何解决,跪谢!!!

1655 次点击
所在节点    问与答
21 条回复
Ace77
2018-09-02 23:56:44 +08:00
我甚至还格了一遍服务器重新搞了一次...
wph95
2018-09-03 00:04:54 +08:00
看报错信息呀 ImportError: No module named 'blog'

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

看一下 gunicorn 的文档,http://docs.gunicorn.org/en/latest/run.html#integration
Ace77
2018-09-03 01:54:07 +08:00
@wph95
@lxy42 那么 502 的问题也是因为找不到 blog 模块嘛? 这个模块是需要自己设置嘛?
lovebirdegg
2018-09-03 08:36:14 +08:00
我都是直接在工程目录下执行:gunicorn -w 3 -b 127.0.0.1:8080 wxjl.wsgi:application
lxy42
2018-09-03 09:07:08 +08:00
502 Bad Gateway 是因为 Gunicorn 启动失败,Nginx 无法访问到后端服务器( Gunicorn )然后报错。

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

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

然后再 blog 目录下就是 python 的文件了 就是 manage.py 等~
Ace77
2018-09-03 13:05:03 +08:00
@sujin190 当前目录下有 blog 文件夹,blog 文件夹里也是有 wsgi.py 文件,但是还是说报错找不到 module
Ace77
2018-09-03 13:22:58 +08:00
@JasperYanky 我好好去看一下!
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
2018-09-03 16:32:57 +08:00
@lxy42 我刚刚加在附言里了 麻烦大佬看下
Ace77
2018-09-03 16:39:32 +08:00
@lxy42 大写的 Blog 也引入过一次 也是失败的
lxy42
2018-09-03 17:54:01 +08:00
目录结构是没问题的,你是在~/sites/www.xxx.xyz/godrryblog 目录下运行 gunicorn 吗?
Ace77
2018-09-03 22:38:30 +08:00
@lxy42 是的呀 有可能是第一次运行 gunicorn 的时候没有进入虚拟环境 后来又进入虚拟环境试了一下 也是报错了
Ace77
2018-09-04 04:31:28 +08:00
@lxy42 感谢你的热心指导,已经解决了
Ace77
2018-09-04 04:32:33 +08:00
lxy42
2018-09-04 10:56:32 +08:00
@Ace77 #19 所以,最终原因是什么?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/485474

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX