mod_wsgi工作目录和用户

时间:2013-02-11 08:47:45

标签: python apache2 mod-wsgi

我在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

1 个答案:

答案 0 :(得分:14)

WSGIDaemonProcess的documentation表示您可以使用home=...节:

  

主屏幕=目录

     

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

但我很好奇 - 为什么在您看来使用os.chdir会有更多安全隐患?