mod_wsgi 与 Apache 忽略 python-path

mod_wsgi 与 Apache 忽略 python-path

我正在尝试奔跑mozilla-firefox-同步服务器在我的 Arch Linux 服务器上使用 apache 2.4.17-3,如下本指南。这是我的文件的一部分/etc/httpd/conf/extra/httpd-vhosts.conf

<Directory /opt/mozilla-firefox-sync-server>
    Require all granted
</Directory>

<VirtualHost *:80>
    ServerName ffsync.example.com
    DocumentRoot /opt/mozilla-firefox-sync-server/

    WSGIProcessGroup ffsyncs
    WSGIDaemonProcess ffsyncs user=ffsync group=ffsync processes=2 threads=25 python-path=/opt/mozilla-firefox-sync-server/local/lib/python2.7/site-packages/
    WSGIPassAuthorization On
    WSGIScriptAlias / /opt/mozilla-firefox-sync-server/syncserver.wsgi
    CustomLog /var/log/httpd/ffsync_custom combined
    ErrorLog /var/log/httpd/ffsync_error
</VirtualHost>

当我 时curl ffsync.example.com,我收到 500 错误。在日志中,看起来它正在使用 Python 3.5 ( ImportError: No module named 'ConfigParser') 运行。

事实上,如果我替换syncserver.wsgi为以下示例代码mod_wsgi 上的 ArchWiki 页面:

#-*- coding: utf-8 -*-
def wsgi_app(environ, start_response):
    import sys
    output = sys.version.encode('utf8')
    status = '200 OK'
    headers = [('Content-type', 'text/plain'),
               ('Content-Length', str(len(output)))]
    start_response(status, headers)
    yield output

application = wsgi_app

我收到 200 状态代码3.5.0 (default, Sep 20 2015, 11:28:25) [GCC 5.2.0]

当我使用该包时mod_wsgi2,一切正常,但我需要使用,mod_wsgi因为还有一个与 Apache 一起运行的 Python 3 WSGI 应用程序无法与mod_wsgi2.这mod_wsgi 上的 ArchWiki 页面声明mod_wsgi应该与 Python 2 和 3 一起使用。

是什么导致指令python-path中的参数WSGIDaemonProcess被忽略?

更新 :拥有最新版本的mod_wsgi(4.4.21-1),我也尝试使用python-home,如下所示:

WSGIDaemonProcess ffsyncs user=ffsync group=ffsync processes=2 threads=25 python-home=/opt/mozilla-firefox-sync-server/local/

这次,我收到 504 错误,错误日志中出现此消息(无论是原始的还是修改后的syncserver.wsgi

Timeout when reading response headers from daemon process 'ffsyncs': /opt/mozilla-firefox-sync-server/syncserver.wsgi

答案1

我有同样的Timeout when reading response headers from daemon process问题。 Apache 的主日志文件(不是该 VirtualHost 的日志文件)显示此错误:

Unable to change working directory to '/home/ffsync'.
Failure to configure the daemon process correctly and process left in unspecified state. Restarting daemon process after delay.

结果发现主目录ffsync不存在。改变它来/opt/mozilla-firefox-sync-server/解决我的问题。或许对你也有帮助!

相关内容