В соответствии с Django docs Django можно настроить с помощью FastCGI.
Вот наша настройка (обратите внимание, что я не контролирую настройку Apache на своем рабочем месте, и мне необходимо использовать FastCGI, поскольку он у нас уже есть, а не устанавливать WSGI):
fcgi-релевантная часть нашего apache conf:
LoadModule fastcgi_module modules/mod_fastcgi.so
# IPC directory location
#
FastCgiIpcDir "/path/to/FastCGI_IPC"
# General CGI config
#
FCGIConfig -idle-timeout 30 -listen-queue-depth 4 -maxProcesses 40 -minProcesses 10 -maxClassProcesses 2 -killInterval 60 -updateInterval 20 -singleThreshhold 0 -multiThreshhold 10 -processSlack 5 -failed-restart-delay 10
# To use FastCGI scripts:
#
AddHandler fastcgi-script .fcg .fcgi .fpl
FastCgiServer "/path/to/my/django.fcgi" -listen-queue-depth 24 -processes 8 -restart-delay 1 -min-server-life 2 -failed-restart-delay 10
Последняя строка должна быть наиболее актуальной. Мой django.fcgi:
#!/path/to/python-2.5/bin/python
import sys, os
open('pid', "w").write("%d" % (os.getpid()))
# Add a custom Python path.
sys.path.insert(0, "/path/to/django/")
sys.path.insert(0, "/path/to/python2.5/site-packages/")
# Switch to the directory of your project. (Optional.)
os.chdir("/path/to/django/site")
# Set the DJANGO_SETTINGS_MODULE environment variable.
os.environ['DJANGO_SETTINGS_MODULE'] = "site.settings"
from django.core.servers.fastcgi import runfastcgi
runfastcgi(method="threaded", daemonize="false")
Согласно
http://docs.djangoproject.com/en/dev/howto/deployment/fastcgi/#restarting-the-spawned-server
перезапуск fcgi должен быть таким простым, как
touch django.fcgi
но для нас это не приводит к перезапуску (именно поэтому я записываю pid в файлы).
Почему не работает тач django.fcgi?