Django
為什麼我遷移的 apache2-fastcgi-django 解決方案給我“AH01630:客戶端被伺服器配置拒絕”?
我有一個解決方案來執行在舊伺服器上執行的 Django(Python 2.7 上的 1.3.1)站點。我正在嘗試將其遷移到新伺服器,但是當我嘗試訪問該頁面時遇到以下錯誤(這表明它在瀏覽器中被禁止):
[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
我的 apache 配置包括這一行:
FastCGIExternalServer /var/django/sarahcage/fastcgihook.fcgi -socket /var/django/sarahcage.sock
我的 apache 站點配置如下所示:
<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 守護程序:
/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)
。我嘗試遵循升級指南,但它們似乎沒有幫助。我已經檢查並仔細檢查了兩台機器之間的權限,但我看不到我錯過了什麼。我可能做錯了什麼?
原來我必須為 fastcgi 鉤子正在使用的目錄設置“要求”語句:
<Directory "/var/django"> AllowOverride all Require all granted </Directory>