我遇到了一些奇怪的错误,我已经通过了这一点。
我有一个Ubuntu服务器设置与Apache + mod_wsgi + Django。 当我SSH进入服务器,我可以从另一台机器上的浏览器访问网站,一切都看起来精彩。 当我没有通过SSH进入时,我的浏览器上出现404 Not Found,这是我的Apache日志中的错误:
[Wed Apr 18 10:15:02 2012] [error] [client 。 。 。 ]目标WSGI脚本未find或无法统计:/ home / zen / kiosk
(这个错误最让我困扰的是,目标WSGI脚本不是我在apacheconfiguration文件中列出的完整path)
版本:
Apacheconfiguration:
Alias /static/ /home/zen/kiosk/static/ User zen <Directory /home/zen/kiosk/static> Order deny,allow Allow from all </Directory> WSGIScriptAlias / /home/zen/kiosk/server/config/django.wsgi #Alias / /home/zen/kiosk/server/config/django.wsgi <Directory /home/zen/kiosk/server/config> Order allow,deny Allow from all </Directory>
当只使用别名而不是WSGIScriptAlias(在Config文件中注释掉)时,我能够看到wsgi文件,如果我是通过SSHlogin的,但是得到相同的404上面这个错误信息:
[Wed Apr 18 11:10:01 2012] [error] [client 。 。 。 ]文件不存在:/ home / zen / kiosk
WSGIconfiguration(/home/zen/kiosk/server/config/django.wsgi)
import os, sys sys.path.insert(0, '/home/zen/kiosk/server') sys.path.insert(0, '/home/zen/kiosk') os.environ['DJANGO_SETTINGS_MODULE'] = 'server.settings' os.environ['PYTHON_EGG_CACHE'] = '/var/www/.python-eggs' os.environ["CELERY_LOADER"] = "django" import django.core.handlers.wsgi application = django.core.handlers.wsgi.WSGIHandler() sys.stdout = sys.stderr
一切/ home / zen / kiosk和under都被修改到了755,但那似乎并不重要。
drwxr-xr-x 8 zen zen 4096 2012-04-16 16:13 /home/zen zen@KioskServer:~$ ls -ld /home/zen/kiosk drwxr-xr-x 8 zen zen 4096 2012-04-11 12:52 /home/zen/kiosk zen@KioskServer:~$ ls -ld /home/zen/kiosk/server/ drwxr-xr-x 8 zen zen 4096 2012-04-16 15:05 /home/zen/kiosk/server/ zen@KioskServer:~$ ls -ld /home/zen/kiosk/server/config/ drwxr-xr-x 3 zen zen 4096 2012-04-03 22:05 /home/zen/kiosk/server/config/ zen@KioskServer:~$ ls -l /home/zen/kiosk/server/config/django.wsgi -rwxr-xr-x 1 zen zen 504 2012-04-16 14:44 /home/zen/kiosk/server/config/django.wsgi
当我从Apacheconfiguration文件中删除“User zen”时,只要我没有SSH到服务器,就会出现下面的错误,而不是Target WSGI脚本。
[Wed Apr 18 10:29:02 2012] [error] [client 。 。 。 ](13)权限被拒绝:访问/login/拒绝
我的浏览器有403 Forbidden错误。 当我SSH'd中,这个错误也不会发生。
这感觉就像一些权限错误,或者一些pathvariables的问题。 不幸的是,我有点卡在这一点,我不知道还有什么要尝试。
谢谢
编辑:我看到在不同的线程有人问这个命令(dpkg -l * apache * | grep -E'^ ii'),所以我想我现在就添加它。 我曾经有prefork,但有人build议可能有帮助时切换到工人。 错误发生在prefork和工作人员完全一样。
ii apache2 2.2.16-1ubuntu3.5 Apache HTTP server metapackage ii apache2-mpm-worker 2.2.16-1ubuntu3.5 Apache HTTP Server - high speed threaded model ii apache2-utils 2.2.16-1ubuntu3 utility programs for webservers ii apache2.2-bin 2.2.16-1ubuntu3.5 Apache HTTP Server common binary files ii apache2.2-common 2.2.16-1ubuntu3.5 Apache HTTP Server common files ii libapache2-mod-wsgi 3.2-2 Python WSGI adapter module for Apache
编辑2:看起来像这与encryption的主目录,我不知道我在这台服务器上。 由于声誉原因,我无法提供答案,但是我会尽可能地让其他有同样问题的人能够更快地找出交易。
经过两天的search,我find了同样的问题 。
基本上,服务器安装了一个encryption的主目录(我不知道),所以当我login和testing一切都如预期。 但是,一旦我没有,主目录不再可用于Apache。
希望如果有人遇到这个问题,这篇文章将帮助他们。 我发现查看您是否拥有encryption主目录的最快方法是运行:
$ mount | grep ecryptfs
“解密”你的主目录的过程似乎很痛苦,所以我解决了这个问题,把我的Django目录移到了/ home之外,进入了/ var / www