SetEnv PYTHON_EGG_CACHE /tmp/trac-eggs
Options +ExecCGI
RewriteEngine .
RewriteBase /
RewriteRule ^(hello/.*)$ - [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(static/fckeditor/editor/filemanager/connectors/.*)$ fcgifck.fcgi/$1 [QSA,L]
RewriteRule ^(static/.*)$ - [L]
#adm_media file setting
RewriteRule ^(adm_media/.*)$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ fcgirun.fcgi/$1 [QSA,L]
- AddHandler行,标示本目录中后缀为.fcgi的文件是fastcgi脚本
- setEnv行,设置python的egg临时目录
- Options +ExecCGI,允许本目录执行CGI
- RewriteEngine .,打开Rewrite
- RewriteRule ^(hello/.*)$ - [QSA,L],/hello/浪点服务器上下过来的测试程序,hello目录里面也有“.htaccess”文件,用来设置hello程序的。这个RewriteRule前不需要RewriteCond。
- fckeditor,我这个应用里面用到fckeditor编辑器,还好fckeditor自己带有python的wsgi服务端程序,可以拿来直接使用,那两行设置就是针对这个的。
- 静态文件目录和django管理模块相关的静态文件目录设置
- fcgirun.fcgi,具体fastcgi脚本。
- 更新问题:我试过更新了应用和修改更新了fcgirun.fcgi,但大半天了网站内容还没变。解决办法:更新时,将fcgirun.fcgi改名,如:fcgirun1.fcgi,还需要修改.htaccess文件里的对应文件名。这样更新后,网站内容一定会马上更新。
- 部署时,碰到问题的解决办法:如果在django初始化时出了错误,那么网页上只会提示500内部错误,很难判断具体错误信息是什么?这个就是为什么花了我很多时间的原因。解决办法:使用python logging模块,将错误信息log到可访问的目录里面(sftp登陆的用户建立的目录,默认情况下apache cgi脚本是不允许写的,需要改权限设置)。将怀疑会在导入时出错的模块,尝试在fcgirun.fcgi中导入。
- python egg问题:使用easy_install安装包很方便,不过有时会将包以压缩方式安装,这时,导入该包,如果有.pyd模块在压缩文件里面,就需要解压到目录里,默认的目录fastcgi模块是不允许访问的,这时,就需要设置:os.environ['PYTHON_EGG_CACHE'] = '/tmp/trac-eggs',将这代码写在fcgirun.fcgi里面就好,“.htaccess”文件中的“SetEnv PYTHON_EGG_CACHE /tmp/trac-eggs ”好像不起作用。我就在导入MySQLdb模块时碰到这问题。