Using Django in bluehost
最近由于某些操蛋的事情,linuxfb需要搬家,但是bluehost主机上不支持通过网页安装django,只好自己折腾了。
1. Install Python environment
bluehost上提供的python的版本是2.4.3(谨慎怀疑是RH5的系统),嫌老,所以要升级。首先,需要从bluehost处申请获得SSH权限,具体做 法去查网站帮助吧。
wget从服务器上下载源码包,然后解压编译安装三部曲,只是注意在配置的时间需要将安装的prefix目录改成自己家目录下的,否则没权限。在安装完成后记得把新p ython所在的目录加到$PATH环境变量中,然后可以使用python -V查看版本
2. Install Django in bluehost
安装Django,不想手动解压安装了,于是先安装了setuptools,接着用easy_install安装了Django。
3. Prepare the Django project
安装完Django后,可以在某处新建一个目录,然后把现有工程的整个目录拷过来。网上的教程中有说需要把setting.py的权限设成600,这样只有自己可读。 如果工程中没有绝对路径,应该不需要对工程做任何更改。
bluehost中通过Apache+fastcgi的方式来支持Django的应用,所以还需要在工程目录下准备一个fcgi的文件,程序很简单,而且ms是通用的 (具体的我没研究过,所以不知道怎么写)
#!
#coding:utf-8
import sys, os
from os.path import abspath,dirname
import sys
sys.path.append(dirname(dirname(abspath(__file__))))
os.environ['DJANGO_SETTINGS_MODULE'] = "settings"
from django.core.handlers.wsgi import WSGIHandler
from flup.server.fcgi import WSGIServer
WSGIServer(WSGIHandler()).run()
编辑完成后,将这个fcgi文件的权限设置成可执行的(chmod 755)。
4. Configure the Apache server
折腾完工程文件后,就需要设置Apache了,使用.htaccess方式。以下是内容,也基本上都是从网上找来的:
AddHandler fcgid-script .fcgi
RewriteEngine On
RewriteBase /
#static file setting
RewriteRule ^(media/.*)$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ run.fcgi/$1 [QSA,L]
第一行设置fcgi的handler,然后后续的行都在设置rewrite模块。具体的我不太懂,于是略过。需要更改的地方可能就是static fie setting中那个目录,那个media是将admin的资源文件目录链接过来的地方(其实具体我也不太清楚rewrite模块是怎么做的,不过目前可以工作了)。
5. Assign a domain to the site
最后就是给它加一个域名了。我使用的是二级域名,域名直接指向Django工程的目录,然后,就可以了~