Django

為什麼我遷移的 apache2-fastcgi-django 解決方案給我“AH01630:客戶端被伺服器配置拒絕”?

  • September 18, 2017

我有一個解決方案來執行在舊伺服器上執行的 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>

引用自:https://serverfault.com/questions/874177