我在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
?
答案 0 :(得分:14)
WSGIDaemonProcess的documentation表示您可以使用home=...
节:
主屏幕=目录强>
定义应该用作的目录的绝对路径 该守护进程的初始当前工作目录 过程组。如果未定义此选项,则在mod_wsgi 1.X中 Apache父进程的当前工作目录将是 由进程组内的守护进程继承。一般 Apache父进程的当前工作目录将是 根目录。在mod_wsgi 2.0+中,最初的当前工作 目录将被设置为该用户的主目录 守护程序进程运行为。
但我很好奇 - 为什么在您看来使用os.chdir
会有更多安全隐患?