由于一系列遗留的基础设施,我必须通过mod_fcgid
(没有 nginx,也mod_wsgi
没有mod_uswgi
)在 Apache 服务器中部署 Django 应用程序。
我按照Django (1.8) 说明通过 FastCGI 进行部署,但mod_fcgid
正在退出,我不知道为什么。
我得到的最有用的信息是exit(communication error), terminated by calling exit(), return code: 120
. 不知道是什么引起的。
这是阿帕奇的error_log
:
[Tue Feb 16 13:20:28 2016] [info] mod_fcgid: server subdomain.domain.com:/path/to/project/index.fcgi(15473) started
[Tue Feb 16 13:20:31 2016] [info] mod_fcgid: process /path/to/project/index.fcgi(15473) exit(communication error), terminated by calling exit(), return code: 120
这是我的.htaccess
:
AddHandler fcgid-script .fcgi
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.fcgi/$1 [QSA,L]
这是我的index.fcgi
:
#!/path/to/project/venv/bin/python
import sys
import os
sys.path.insert(0, "/path/to/project")
os.chdir("/path/to/project")
os.environ['DJANGO_SETTINGS_MODULE'] = "project.settings"
from django.core.servers.fastcgi import runfastcgi
runfastcgi(method="threaded", daemonize="false")
我尝试了使用和不使用sys.path(…)
andos.chdir(…)
行以及其他一些小的更改,例如使用/path/to/project
(where manage.py
is) 或/path/to/project/project
(包本身)。