【发布时间】:2015-02-27 14:32:52
【问题描述】:
您好,很抱歉再次打扰,我正在做我的第一个烧瓶项目,非常简单。
我将我的网站部署在 Digital Ocean 的 ubuntu 服务器上。我遵守了它的instructions。
问题: 当我尝试在浏览器中打开该站点时,出现 500 错误。然后我查了一下apache的错误日志,发现如下几句。
错误日志:
[Wed Dec 31 07:45:49 2014] [error] [client 112.64.71.131] mod_wsgi (pid=27835): Target WSGI script '/var/www/qianshan/qianshan.wsgi' 无法加载为 Python模块。
[2014 年 12 月 31 日星期三 07:45:49] [错误] [客户端 112.64.71.131] mod_wsgi (pid=27835):处理 WSGI 脚本“/var/www/qianshan/qianshan.wsgi”时发生异常。
[Wed Dec 31 07:45:49 2014] [error] [client 112.64.71.131] Traceback(最近一次通话最后):
[2014 年 12 月 31 日星期三 07:45:49] [错误] [客户端 112.64.71.131] 文件“/var/www/qianshan/qianshan.wsgi”,第 7 行,在
[Wed Dec 31 07:45:49 2014] [error] [client 112.64.71.131] from qianshan import app as application
[Wed Dec 31 07:45:49 2014] [error] [client 112.64.71.131] ImportError: cannot import name app
项目的树形结构
spark@Qianshan:/var/www/qianshan$ tree -L 2
.
├── qianshan
│ ├── config.ini
│ ├── qianshan.py
│ ├── static
│ ├── templates
│ └── venv
└── qianshan.wsgi
虚拟主机配置
<VirtualHost *:80>
ServerName qianshan.co
ServerAdmin spark@qianshan.co
WSGIScriptAlias / /var/www/qianshan/qianshan.wsgi
<Directory /var/www/qianshan/qianshan/>
Order allow,deny
Allow from all
</Directory>
Alias /static /var/www/qianshan/qianshan/static
<Directory /var/www/qianshan/qianshan/static/>
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
wsgi
#!/usr/bin/python
import sys
import logging
logging.basicConfig(stream=sys.stderr)
sys.path.insert(0,"/var/www/qianshan/")
from qianshan import app as application
application.secret_key = 'Add your secret key'
.py 文件
# Filename: qianshan.py
# encoding: utf-8
import ConfigParser
import codecs
from flask import Flask
from flask import render_template
app = Flask(__name__)
@app.route('/')
def index():
block_list = getBlockList()
website_dict = getWebsiteDict()
return render_template('index.html', block_list=block_list, website_dict=website_dict)
...
...
if __name__ == '__main__':
app.run()
如果你有幸看到这个底线,祝大家新年快乐^_^
【问题讨论】:
-
您的 init.py 文件在哪里。我看不到 /var/www/qianshan/__init__.py 文件。
-
我曾经偶然发现同样的问题,后来得知您无法从主文件中导出任何内容。您可能想查看此链接*.com/questions/419163/what-does-if-name-main-do
-
是否启用了 SELinux?