python - 使用 mod_wsgi 在 Apache 上运行最简单的 Flask 应用程序时遇到一些问题

标签 python apache wsgi flask

我正在尝试运行一个使用 Flask 微框架开发的非常简单的 Python Web 应用程序。我使用的是 Ubuntu 10.04 LTS 的 VPS。我关注了this instructions为了得到令人安慰的“Hello world!”,这是一次成功的经历。但现在,我正在设置一个稍微复杂的配置,但我无法让它正常工作。

我的应用程序的 Apache 虚拟主机配置是:

<VirtualHost *:80>
    ServerAdmin    <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="4035332532002538212d302c256e2f3227" rel="noreferrer noopener nofollow">[email protected]</a>
    ServerName    domain.com
    ServerAlias    www.domain.com

    DocumentRoot    /srv/www/domain.com/public_html/

    LogLevel    info    # I've put this for debugging purposes.
    ErrorLog    /srv/www/domain.com/logs/error.log
    CustomLog    /srv/www/domain.com/logs/access.log combined

    WSGIDaemonProcess   username   user=username    group=username   threads=5   processes=5
    WSGIScriptAlias /myapplication/     /srv/www/domain.com/myapplication/myapplication.wsgi

    <Directory /srv/www/domain.com/myapplication/myapplication>
        WSGIProcessGroup    username
        WSGIApplicationGroup %{GLOBAL}
        Order deny,allow
        Allow from all
    </Directory>

    Alias /css    /srv/www/domain.com/public_html/css
    Alias /js    /srv/www/domain.com/public_html/js
    Alias /images    /srv/www/domain.com/public_html/images
</VirtualHost>

我的 WSGI 配置文件是:

# -*- coding: utf-8 -*-
from myapplication import app as application

上面的配置有问题吗?

最后,Apache 给了我一个 500 错误页面。所以我检查日志:

[info] mod_wsgi (pid=3132, process='', application='domain.com|/myapplication/'): Loading WSGI script '/srv/www/domain.com/myapplication/myapplication.wsgi'.
[error] mod_wsgi (pid=3132): Target WSGI script '/srv/www/domain.com/myapplication/myapplication.wsgi' cannot be loaded as Python module.
[error] mod_wsgi (pid=3132): Exception occurred processing WSGI script '/srv/www/domain.com/myapplication/myapplication.wsgi'.
[error] Traceback (most recent call last):
[error] File "/srv/www/domain.com/myapplication/myapplication.wsgi", line 3, in <module>
[error] from myapplication import app as application
[error] ImportError: No module named myapplication

树结构类似于:

/myapplication
    myapplication.wsgi
    myapplication (python package)

显然,Python 在 sys.path 中找不到 myapplication 模块。但我检查过打印品,它就在那里。我知道这个问题解决起来可能很简单,但我有点困惑。我怎样才能找到正确的方向来解决这个问题?

最佳答案

@larsks 向我指出了一个临时但有效的解决方案。现在,myapplication.wsgi 看起来像:

import os
import sys

sys.path.append('/srv/www/domain.com/myapplication/')
os.environ['PYTHON_EGG_CACHE'] = '/srv/www/domain.com/myapplication/.python-egg'

from myapplication import app as application

谢谢!

关于python - 使用 mod_wsgi 在 Apache 上运行最简单的 Flask 应用程序时遇到一些问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10285362/

相关文章:

python - 在生产环境中运行 Python Pyramid 服务器,无需 Apache

python - 无法使用 uWSGI 和 NGINX 导入名称 'app'

Python打开CV错误: Name error: name images is not defined

apache - 构建位于反向代理后面的应用程序时处理URI的策略

php - 自定义 404 错误页面——仅适用于 PHP 页面

java - 如何将 ListAdapter 的值获取到工作簿单元格

python - 我如何在我的网络服务器上运行这个 python 脚本? TorBulkExitList.py

python - 将数据框汇总到字典中

python - 在 python 中导入 beautifulsoup

python - 在 Python 中找到最早的出现