自己动手,在DreamHost上安装所需的Perl模块

发现自己是越来越喜爱Dreamhost的虚拟主机了。SSH支持和超强的可定制性,使Dreamhost的虚拟空间俨然化身成为可自主维护的独立服务器。这不,我今天就自己动手,在Dreamhost主机上编译安装了PerlCGI::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上运行。

Donate towards my web hosting bill!

最后提一下,AnySQL.Net修改了Movable Type默认的Search代码,实现了通过Cache提升MT基于Tag搜索的速度,您要是不想这么麻烦,或者没有用Dreamhost的主机,对占用资源巨大的Movable Type搜索来说,anysql的方案真的是很好的解决办法。