发现自己是越来越喜爱Dreamhost的虚拟主机了。SSH支持和超强的可定制性,使Dreamhost的虚拟空间俨然化身成为可自主维护的独立服务器。这不,我今天就自己动手,在Dreamhost主机上编译安装了Perl的CGI::Cache模块,让本来没有安装相应模块的虚拟空间,也实现了Movable Type MT-XSearch Tag搜索的缓存化。
由于我们是以非超级用户身份登录Dreamhost的,因此在安装Perl模块时,还颇有些技巧可言。具体来说,整个安装过程是这样的:
1.以SSH方式登录到Dreamhost
如果你是Windows用户,可以使用SSH客户端软件,譬如PuTTY连接Dreamhost主机。如果是Linux用户,那就更加简单了,在shell下直接输入"ssh 你的域名"即可。
2.下载CGI::Cache源码包
非超级用户的身份决定了我们不能以自动方式安装Perl模块,只能采用手工编译来实现。因此,请在Search CPAN搜索CGI::Cache,找到后复制其下载地址,在SSH终端输入"wget http://search.cpan.org/CPAN/authors/id/D/DC/DCOPPIT/CGI-Cache-1.4200.tar.gz",将CGI::Cache的源码包下载到服务器上。
3.解压缩CGI::Cache源码包
tar zxvf CGI-Cache-1.4200.tar.gz
多用用Linux下的Tab键,自动补全,呵呵。
4.准备Makefile
由于不是超级用户,这里需要指定Perl模块要安装到的目录,例如我将Perl模块安装到了自己hoome目录的CPAN文件夹下:
perl Makefile.PL PREFIX=/home/user/CPAN
其中,user为你的home目录名。此时,屏幕会输出一些信息。如果没有错误,则可以进入下一步;如果有错误,请仔细观察,通常是缺少某些需要的模块,需要先安装此模块。若使用Dreamhost主机,这里会提示缺少Tie:Restore模块。
5.安装Tie:Restore模块
同样从Search CPAN搜索下载Tie:Restore模块的源码包,并依次执行下面命令安装。
wget http://search.cpan.org/CPAN/authors/id/R/RO/ROBWALKER/Tie-Restore-0.11.tar.gz
tar zxvf Tie-Restore-0.11.tar.gz
cd Tie-Restore-0.11
perl Makefile.PL PREFIX=/home/user/CPAN
make
make test
make install
6.指定Perl模块目录搜索路径
即使你安装好Tie:Restore模块,再次回到CGI::Cache的目录,重新生成Makefile,还是会提示缺少Tie::Restore,这是由于系统并不知道你在哪个目录中添加了新模块,它们只会搜索默认的路径,我们需要将新的目录添加到Perl模块目录搜索路径中,才能够解决依赖性问题。
在shell下输入:
export PERL5LIB=/home/user/CPAN/share/perl/5.8.4
再输入:
perl -V
你将会看到/home/user/CPAN/share/perl/5.8.4加入了@INC,也就是说Perl会从此目录扫描模块了。
你还可以将这些命令加入.bashrc 文件, 当下次启动shell的时候,环境将会自动为你准备好相应的路径。对Dreamhost主机来说,应该这样做:
nano .bashrc
;在启动的编辑器中加入上面的命令,按Ctrl+X保存并退出
nano .bash_profile
;在启动的编辑器最后面加上. .bashrc
这里用了Dreamhost官方推荐的nano编辑器,你自然可以用顺手的vi或vim之流。
7.完成CGI::Cache的安装
回到之前,用cd命令切换回CGI::Cache源码包的解压目录,输入以下命令安装此模块。
perl Makefile.PL PREFIX=/home/user/CPAN
make
make test
make install
8.模块的使用
此时,模块已经安装完毕。如果在shell下直接运行Perl程序,则模块可以正常调用;但若是在浏览器中运行,由于我们此前设置的路径仅对当前用户起作用,Perl程序还是无法调用新添加的模块。解决的方法很简单,就是在你的脚本最上方加入要调用的模块的路径,这里应该是:
use lib '/home/user/CPAN/share/perl/5.8.4'
对于Movable Type,还可以把刚才编译的模块(例子中是在/home/user/CPAN/share/perl/5.8.4目录下)转移到Movable Type脚本目录的exlib文件夹下,这样无须修改脚本,新模块调用也能完成。
采用此方法,你还可以添加更多需要的Perl模块。
Dreamhost给了我们很大的自由度,我们可以用它尝试各种各样好玩的新玩意。不过Dreamhost续费真的比较贵,所以俺申请了一个捐助代码,希望有能力的朋友能够帮助让原生脑浆继续在Dreamhost上运行。
最后提一下,AnySQL.Net修改了Movable Type默认的Search代码,实现了通过Cache提升MT基于Tag搜索的速度,您要是不想这么麻烦,或者没有用Dreamhost的主机,对占用资源巨大的Movable Type搜索来说,anysql的方案真的是很好的解决办法。
墨神的凡龛
哈哈,貌似托儿~
caicairooms
呵呵,BBS的程序不错,就是不清楚是否有使用的版权。
sleetdrop
Not bad.
mark.