mod_wsgi的工作目录和用户(mod_wsgi working directory and us

2019-07-19 16:53发布

我上运行的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

Answer 1:

该文档为WSGIDaemonProcess说,你可以使用home=...节:

家=目录

定义被用作处理组内的守护进程的初始当前工作目录的一个目录的绝对路径。 如果没有定义这个选项,在1.X的mod_wsgi Apache的父进程的当前工作目录将由进程组中的守护进程继承。 通常情况下,Apache的父进程的当前工作目录是根目录。 在mod_wsgi的2.0+初始当前工作目录将被设置为是守护进程运行的用户的主目录。

我很好奇,虽然-为什么会使用os.chdir是更多的在您看来,存在安全隐患?



文章来源: mod_wsgi working directory and user