在主机商的共享服务器上部署Django站点的方法
许多共享主机的服务提供商不允许运行你自己的服务进程,也不允许修改httpd.conf文件。尽管如此,仍然有可能通过Web服务器产生的子进程来运行Django。
记录
如果你要使用服务器的子进程,你没有必要自己去启动FastCGI服务器。Apache会自动产生一些子进程,产生的数量按照需求和配置会有所不同。
在你的Web根目录下,将下面的内容增加到.htaccess文件中:
AddHandlerfastcgi-script.fcgi RewriteEngineOn RewriteCond%{REQUEST_FILENAME}!-f RewriteRule^(.*)$mysite.fcgi/$1[QSA,L]
接着,创建一个脚本,告知Apache如何运行你的FastCGI程序。创建一个mysite.fcgi文件,并把它放在你的Web目录中,打开可执行权限。
#!/usr/bin/python importsys,os #AddacustomPythonpath. sys.path.insert(0,"/home/user/python") #Switchtothedirectoryofyourproject.(Optional.) #os.chdir("/home/user/myproject") #SettheDJANGO_SETTINGS_MODULEenvironmentvariable. os.environ['DJANGO_SETTINGS_MODULE']="myproject.settings" fromdjango.core.servers.fastcgiimportrunfastcgi runfastcgi(method="threaded",daemonize="false")
重启新产生的进程服务器
如果你改变了站点上任何的python代码,你需要告知FastCGI。但是,这不需要重启Apache,而只需要重新上传mysite.fcgi或者编辑改文件,使得修改时间发生了变化,它会自动帮你重启Django应用。你可以重新上传mysite.fcgi或者编辑这个文件以改变该文件的时间戳。当阿帕奇服务器发现文档被更新了,它将会为你重启你的Django应用。
如果你拥有Unix系统命令行的可执行权限,只需要简单地使用touch命令:
touchmysite.fcgi