1

我有一个在 Python 和 Flask 上运行的网站。10 次中有 4 次返回 500 错误,据我所知是随机的。

from flask import Flask

app = Flask(__name__)

@app.route("/")
def index():
    return "Hello world!"

这是我的 .wsgi 文件(我正在使用 virtualenv,并在导入应用程序之前激活它):

activate_this = '/path/to/app/venv/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))

from myapp import app as application

这是我的 Apache 主机配置:

<VirtualHost *:80>
    ServerName website.com

    WSGIDaemonProcess myapp user=ubuntu group=ubuntu processes=2 threads=5
    WSGIScriptAlias / /path/to/app/myapp.wsgi

    <Directory /path/to/app>
        WSGIProcessGroup myapp
        WSGIApplicationGroup %{GLOBAL}
        Order deny,allow
        Allow from all
    </Directory>
</VirtualHost>

欢迎任何调试这个的指针!

编辑:

Apache 错误日志:

mod_wsgi (pid=29581): Target WSGI script '/path/to/app/myapp.wsgi' cannot be loaded as Python module.
mod_wsgi (pid=29581): Exception occurred processing WSGI script '/path/to/app/myapp.wsgi'.
Traceback (most recent call last):
  File "/path/to/app/myapp.wsgi", line 4, in <module>
    from myapp import app as application
ImportError: No module named myapp

两个进程之一(29581)似乎没有运行 virtualenv 位,因此没有找到要导入的文件。

编辑2:

这是在 PATH 中找不到的本地文件 myapp.py。我需要将它包含在我的 .wsgi 文件的顶部:

import sys
sys.path.insert(0, '/path/to/myapp')

activate_this = '/path/to/myapp/venv/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))

from myapp import app as application
4

0 回答 0