Python +Apache:相对路径

z3yyvxxp  于 2023-03-03  发布在  Apache
关注(0)|答案(1)|浏览(157)

我有一个Flask应用程序,我正在Windows下设置它,在我的http.conf文件中,我包含了应用程序的conf文件,它位于如下目录中:

C:\prod\apps\my_app\
                    \my_app
                        my_app.conf
                        my_app.py
                        my_app.wsgi
                    \my_service
                    \my_data
                    \my_python_virtual_env

我可以在Apache中配置它,并在my_app. conf中使用WSGIPythonPath的绝对路径让它正常运行。但是,我不能使用WSGIPythonPath的相对路径让它正常运行。基于上述结构,我假设它应该是这样的:

WSGIPythonPath ../my_app;../my_service;../my_data;../my_python_virtual_env
<Directory "/">
    Require all granted
</Directory>

这显然不是apache解释根目录的相对路径的方式.我尝试做的事情是可能的吗?如果不可能,有什么其他的建议吗?如果有一个配置文件可以用于不同的部署环境,那就太好了.

xam8gpfp

xam8gpfp1#

您需要阅读更多关于WSGImodwsgi如何与Apache一起工作以及最佳实践是什么的内容。
首先,你应该在一个独立的virtualenv中构建你的Flask应用程序。这对于任何基于Python的Web应用程序来说都是最好的实践,无论是Flask,Django,还是其他什么。用pip管理你的包。谷歌一下这两个术语,你会看到很多关于如何做的教程。
然后,您应该将Flask应用配置放在Apache命名的虚拟主机的专用端口上。您需要确保WSGIDaemonProcess包含指向Flask站点包的virtualenv特定python-path变量。
您还应该创建一个系统Flask用户和组,以将Flask系统与其他系统隔离。这样会安全得多。
下面列出的是一个示例配置。注意我已经创建了一个特定的flask-main用户和flask-main组,并且我将所有到Flask应用的流量指向端口8789。

#####
# START: Flask App
WSGISocketPrefix /var/run/wsgi
Listen 8789    
NameVirtualHost *:8789
<VirtualHost *:8789>
    DocumentRoot /path/to/www/
    ErrorLog "/path/to/logs/httpd/flask-8789-error_log"
    LogLevel info 
    ProxyRequests Off
    WSGIDaemonProcess flask-main user=flask-main group=flask-main display-name=%{GROUP} python-path=/path/to/www:/path/to/lib/python2.6/site-packages
    WSGIProcessGroup flask-main
    WSGIScriptAlias / /path/to/www/mygateway.wsgi process-group=flask-main application-group=%{GLOBAL}
    <Directory /path/to/www>
        WSGIProcessGroup run
        WSGIApplicationGroup %{GLOBAL}
        Order deny,allow
        Allow from all
    </Directory>
    <Directory /path/to/www/static>                                                        
        Order deny,allow
        Allow from all
    </Directory>
</VirtualHost>

我希望这能帮助你朝着正确的方向前进。

相关问题