13

我在 mod_wsgi 上运行烧瓶。我的烧瓶应用程序正在/var/www/app接收用户的一些文件并将其保存到/var/www/app/tmp目录中。然而,即使在所有 chmod 和 chown 之后(认为这是一个权限问题),我也无法访问该 tmp 目录。

经过一番调试,我发现烧瓶应用程序的当前工作目录是/. 我可以通过 更改工作目录os.chdir('/var/www/'),但出于安全考虑,我想避免这种情况。

这是我的apache配置:

<VirtualHost *:80>
    ServerName mysite.com
    ServerAlias site.com
    ServerAdmin admin@localhost

    WSGIDaemonProcess app user=www-data group=www-data processes=1
    WSGIScriptAlias / /var/www/app.wsgi

    Alias /static /var/www/app/static

    <Directory /var/www/app>
        WSGIProcessGroup app
        WSGIApplicationGroup %{GLOBAL}
        WSGIScriptReloading On
        Order deny,allow
        Allow from all
    </Directory>

    <Location "/static">
        SetHandler None
    </Location>

</VirtualHost>

如何将我的应用程序的工作目录从更改//var/www

4

1 回答 1

15

WSGIDaemonProcess的文档home=...说您可以使用以下节:

家=目录

定义一个目录的绝对路径,该路径应该用作进程组中守护进程的初始当前工作目录。如果未定义此选项,则在 mod_wsgi 1.X 中,Apache 父进程的当前工作目录将由进程组内的守护进程继承。通常 Apache 父进程的当前工作目录是根目录。在 mod_wsgi 2.0+ 中,初始当前工作目录将设置为守护进程运行的用户的主目录。

不过,我很好奇——os.chdir在您看来,为什么使用会带来更多的安全风险?

于 2013-02-11T08:50:24.220 回答