我在使用apache(Apache / 2.4.7(Ubuntu 14.04))和mod_wsgi以及我的django站点时遇到了很多困难。我的配置已经工作了很长时间,然后我不确定我做了什么(可能是因为我移动了virtualenv,并没有在配置中准确反映这一点,或者可能只是服务器升级,我不确定),但现在我得到像
这样的错误#/var/log/apache2/error.log
[Mon Dec 22 08:47:04.693620 2014] [:info] [pid 21082:tid 139779033159552] mod_wsgi (pid=21082): Starting process 'mysite.com' with uid=999, gid=999 and threads=4.
[Mon Dec 22 08:47:04.693744 2014] [:alert] [pid 21084:tid 139779033159552] (2)No such file or directory: mod_wsgi (pid=21084): Unable to change working directory to '/home/djangoUser'.
[Mon Dec 22 08:47:04.693769 2014] [:alert] [pid 21084:tid 139779033159552] mod_wsgi (pid=21084): Failure to configure the daemon process correctly and process left in unspecified state. Restarting daemon process after delay.
和
#/srv/apache/log/mysite_error.log
[Mon Dec 22 08:49:31.295810 2014] [core:error] [pid 13999:tid 139778670376704] [client 1.169.91.80:2836] Script timed out before returning headers: mysite.com_wsgi.py
我尝试重新安装并重新启用mod_wsgi
:
sudo aptitude install libapache2-mod-wsgi
a2enmod wsgi
service apache2 restart
这没有帮助。
我的django的wsgi文件如下:
#/srv/apache/mysite.com_wsgi.py (perms are www-data.www-data 644 on file, 755 dir above)
#!/usr/bin/env python
settings_module = "settings"
os.environ["DJANGO_SETTINGS_MODULE"] = settings_module
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
和我的apache conf看起来像:
#/etc/apache2/sites-enabled/mysite.com.conf:
<VirtualHost *:80>
# Admin email, Server Name (domain name), and any aliases
ServerAdmin me@gmail.com
ServerName www.mysite.com
ServerAlias mysite.com
WSGIScriptAlias / /srv/apache/mysite.com_wsgi.py
# Log file locations
LogLevel info
ErrorLog /srv/apache/log/mysite.com_error.log
CustomLog /srv/apache/log/mysite.com_access.log combined
WSGIDaemonProcess mysite.com processes=4 threads=4 display-name=%{GROUP} user=djangoUser group=djangoUser python-path=/srv/mysite:/srv/mysite/venv/lib/python2.7/site-packages
WSGIProcessGroup: mysite.com
<Directory "/srv/apache">
Require all granted
</Directory>
<Directory "/srv/www/mysite.com/media">
Require all granted
</Directory>
<Directory "/srv/www/mysite.com/static">
Require all granted
</Directory>
</VirtualHost>
一些目录结构说明:
django站点文件位于/srv/mysite
,即djangoUser.djangoUser 755(以下所有文件/目录也由djangoUser拥有)。虚拟环境位于/srv/mysite/venv
,并且再次由djangoUser拥有,并且pip install提供了相同的perms。 /srv/mysite/
内的其他文件也由djangoUser拥有,其中dir为500,文件为400。
wsgi文件位于/srv/apache
,它和apache目录是www-data.www-data,其中wsgi文件为644,目录为755以上。
静态文件位于/srv/www/mysite.com/static
,其中包含www-data所拥有的所有内容,以及dir .....我实际上可以毫无问题地访问favico或robots文件... www.mysite.com/favicon .ico显示它没有错误。
有没有人有任何想法可能是什么问题?我一开始认为它必须是权限,但我看不出任何问题。
最后/ etc / passwd将djangoUser显示为
djangoUser:x:999:999::/home/djangoUser:/bin/false