如何正确安全地移动python金字塔应用程序? 见下文,我在评论中反馈后更新了细节。
我首先使用以下命令准备环境:
virtualenv - 可定位的ENV
之后,该应用程序仍然正常工作。 然后我将python应用程序移动到另一个目录,但得到以下错误:
[Thu Jul 27 16:09:08.884534 2017] [wsgi:error] [pid 14775] [remote 185.54.183.194:58084] mod_wsgi (pid=14775): Target WSGI script '/home/develop/web/checklist/prod/backend/pyramid.wsgi' cannot be loaded as Python module.
[Thu Jul 27 16:09:08.884660 2017] [wsgi:error] [pid 14775] [remote 185.54.183.194:58084] mod_wsgi (pid=14775): Exception occurred processing WSGI script '/home/develop/web/checklist/prod/backend/pyramid.wsgi'.
.......
[Thu Jul 27 16:09:08.886634 2017] [wsgi:error] [pid 14775] [remote
185.54.183.194:58084] pkg_resources.DistributionNotFound: The 'checklist' distribution was not found and is required by the application
(清单是python应用程序)。 我将WSGIDaemonProcess和WSGIScriptAlias的apache配置中的路径更改为新位置。 我更改了WSGIDaemonProcess中使用的pyramid.ini文件中的路径。 我的apache配置:
WSGIApplicationGroup %{GLOBAL}
WSGIPassAuthorization On
WSGIDaemonProcess checklistTest user=apache group=apache threads=4 python-path=/home/develop/web/test/checklist/backend:/home/develop/web/test/checklist/backend/env/lib/python3.4/site-packages
WSGIScriptAlias /bdh-checklist-test /home/develop/web/test/checklist/backend/pyramid.wsgi
<Directory /home/develop/web/test/checklist/backend>
WSGIProcessGroup checklistTest
Require all granted
</Directory>
我在Graham的反馈后更新了上面的配置。我使用与python app(版本3.4)相同的python版本编译mod_wsgi。但是,我仍然无法使用python-home属性,它会导致超时错误(使用可重定位环境):
从守护程序进程读取响应头时超时 'checklistTest':
如果我使用python-home,上面的DaemonProcess条目如下所示:
WSGIDaemonProcess checklistTest user=apache group=apache threads=4 python-home=/home/develop/web/test/checklist/backend/env/lib/python3.4
如何解决这个问题? 我为什么要使用python-home而不是python-path? 我必须在python-app属性中包含应用程序本身的路径,否则apache日志将包含一个错误,指出它无法找到应用程序分发。