我有一个解决scheme来运行在旧服务器上工作的Django(1.3.1在Python 2.7)。 我试图迁移到一个新的服务器,但我遇到了以下错误,当我尝试访问该页面(它说这是禁止在浏览器中):
[Mon Sep 18 06:48:32.394835 2017] [authz_core:error] [pid 24239:tid 140298255943424] [client 86.133.221.44:58348] AH01630: client denied by server configuration: /var/django/sarahcage/fastcgihook.fcgi
我的apacheconfiguration包含这一行:
FastCGIExternalServer /var/django/sarahcage/fastcgihook.fcgi -socket /var/django/sarahcage.sock
我的Apache网站configuration如下所示:
<VirtualHost 46.101.39.249:80> <Directory "/var/www/sarahcage"> AllowOverride All Require all granted </Directory> ServerName newserver.sarahcage.co.uk DocumentRoot /var/www/sarahcage RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^/?$ /var/django/sarahcage/fastcgihook.fcgi/$1 [QSA,L] # Set the whole site to use DJango <LocationMatch "^/?$"> SetHandler fastcgi-script </LocationMatch> </VirtualHost>
我像这样跑了django deamon:
/var/django/sarahcage/manage.py runfcgi socket=/var/django/sarahcage.sock pidfile=/var/run/sarahcage_fcgi.pid
两台服务器之间有一个显着的区别。 新版本运行在Apache/2.4.18 (Ubuntu)而旧版本则运行Apache/2.2.22 (Ubuntu) 。 我试图按照升级的指导方针,但他们似乎没有帮助。
我已经检查和双重检查两台机器之间的权限,但我不明白我错过了什么。 我可能会做错什么?
事实certificate,我必须为fastcgi钩子所使用的目录设置'Require'语句:
<Directory "/var/django"> AllowOverride all Require all granted </Directory>