Python+;Django在apache2(httpd)上的另一个用户Redhat下运行
我已经有一个django应用程序绑定到Red hat上的httpd(apache2),它工作得很好,但是我想用不同于apache的用户名运行它,所以如果它写入文件系统,文件的所有者应该是newuser。我正在寻找实现这一目标的解决方案 我尝试使用httpd-itk(在这之后:),但它抱怨:Python+;Django在apache2(httpd)上的另一个用户Redhat下运行,python,django,apache,apache2,redhat,Python,Django,Apache,Apache2,Redhat,我已经有一个django应用程序绑定到Red hat上的httpd(apache2),它工作得很好,但是我想用不同于apache的用户名运行它,所以如果它写入文件系统,文件的所有者应该是newuser。我正在寻找实现这一目标的解决方案 我尝试使用httpd-itk(在这之后:),但它抱怨: permission denied: mod_wsgi (pid=31322): Unable to connect to WSGI daemon process 'myapp.djangoserver' o
permission denied: mod_wsgi (pid=31322): Unable to connect to WSGI daemon process
'myapp.djangoserver' on '/var/run/wsgi.31085.0.1.sock' after multiple attempts.
解决了这个问题后(通过对文件授予777测试权限),我仍然将apache作为文件的所有者
我的conf文件如下所示:
<VirtualHost *:80>
ServerName myapp
ServerAlias myapp
DocumentRoot /usr/share/myapp
<Directory /usr/share/myapp>
Order allow,deny
Allow from all
</Directory>
WSGIDaemonProcess syntyma.djangoserver processes=10 threads=20 display-name=%{GROUP}
WSGIProcessGroup myapp.djangoserver
WSGIScriptAlias / /usr/share/myapp/apache/django.wsgi
CustomLog logs/myapp-access.log combined
ErrorLog logs/myapp-error.log
LogLevel debug
AssignUserId newuser newuser
</VirtualHost>
WSGISocketPrefix /var/run/wsgi
我如何使用htttpd-itk或任何其他解决方案(如一些suEXEC或类似产品)实现我的目标
谢谢。
WSGIDaemonProcess
为运行守护进程的用户提供了一个user
参数。就你而言:
WSGIDaemonProcess syntyma.djangoserver user=newuser processes=10 etc...
从:
user=name | user=#uid.rst
定义守护进程处理的用户的UNIX用户名或数字用户uid
应按以下方式运行。如果未提供此选项
守护进程将以与Apache相同的用户身份运行
按照用户指令的定义运行子进程和
请注意,如果Apache不是以root用户身份启动的,则忽略此选项,其中
无论设置如何,守护进程都将作为启动Apache的用户运行
还要注意,mod_wsgi将不允许您以根用户身份运行守护进程进程组
由于运行
web应用程序作为根
WSGIDaemonProcess syntyma.djangoserver user=newuser processes=10 etc...