以 PSGI 运行 MovableType,是一直的梦想,说实在的,慢如蜗牛的 MT 后台已经早已厌倦了。只是不舍得转化到 WordPress 平台而已。
切换到了 vultr VPS + nginx, 这个愿望可以说距离实现近了一步,只是小有瓶颈,因为原版的 mt-starman-daemon 是针对 Debian 的。 移植到 CentOS6 上需要小小改动。
废话不说,直接记录过程吧。
先上几个参考教程:
第一个连接是安装 cpanm
Task::Plack
XMLRPC::Transport::HTTP::Plack
Starman
等 Perl Plack/PSGI
模块 和 mt-starman-daemon
本身。 基本上可以按照教程走,局部修改。 简单记录如下:
mt-starman-daemon
先更新当前系统到最新,防止出现稀奇古怪的问题
yum -y update
安装
App::cpanminus
工具,方便安装 Perl 模块.curl -L http://cpanmin.us/ | perl - App::cpanminus
用
cpanm
安装必须的Perl模块cpanm Task::Plack XMLRPC::Transport::HTTP::Plack Starman
这一步需要耐性等待,保证都安装成功。 如果错误。可能是没有安装某些lib导致,则尝试运行以下命令:
yum install expat-devel
(如果报告XML::Parser 安装失败)
yum install gcc
#如果报告没有编译器后重新运行安装命令。 直到安装成功。
下载
mt-starman
到启动目录并改权限。wget -P /etc/init.d https://raw.github.com/saahov/mt-starman-daemon/master/debian/mt-starman
chmod +x /etc/init.d/mt-starman
重点,修改
mt-starman
脚本适应 CentOS6vi /etc/init.d/mt-starman
找到
# Provides: starman-mt
改成# Provides: mt-starman
(此项改动无实际意思,只是个人习惯,统一名称)。
在其下另起一行添加以下内容:# chkconfig: - 84 16
# processname: mt-starman
(这两行必须,不让将无法加入服务)。
修改一下四行为自己的设置:
DIR=/absolute/path/to/mt-directory (#你的MT-cgi的绝对目录)
SCRIPT=/absolute/path/to/mt.psgi (#你的mt.psgi文件的绝对路径)
USER=www-data
GROUP=www-data
我把 USER 和 GROUP 全修改成了 root
,因为我的 VPS 没有 www-data
用户,可以根据实际去调整,改成 root 是 最懒 的办法。
至此, mt-starman
脚本修改完成。但是这个脚本并不能启动。 因为,这个脚本由 start-stop-daemon
命令完成,而 CentOS 并不带这个命令,这个就需要自己编译安装这个命令,而且版本要选择对,是必须有 --chdir
参数的 start-stop-daemon
。 找了很多个源码,编译下来都没有 --chdir
参数,所幸找到上面的第2个参考资料。
start-stop-daemon
编译安装start-stop-daemon
的过程记录如下,也基本上按照教程行事:
codecd /tmp #切换到tmp目录,习惯而已
wget http://ftp.de.debian.org/debian/pool/main/d/dpkg/dpkg_1.16.18.tar.xz
tar -xf dpkg_1.16.18.tar.xz
cd dpkg-1.16.18 #注意,原教程有错
./configure
yum install gcc #如果报告没有编译器
yum install ncurses-devel -y # 如果报错: no curses library found
./configure && make
find / -name start-stop-daemon # 查看start-stop-daemon位置
#copy到/usr/local/sbin/下。
cp /tmp/dpkg-1.16.18/utils/start-stop-daemon /usr/local/sbin/
基本上按照这个不会出错。
配置
接下来正式配置 mt-starman
。
首先测试:
/etc/init.d/mt-starman start
看是否可以启动?
当配置一切OK的时候,这个时候可以写进系统服务了。 命令如下:
codechkconfig mt-starman on
配置 mt-config.cgi
和 nginx
,办法见 https://github.com/saahov/mt-starman-daemon ,就不一一描述了。
重启 mt-starman 和 nginx,后打开 /var/log/mt-starman.log
查看状态,测试系统,移除 不能正常运行的 MT 插件,直到正常, 其命令为:
code/etc/init.d/mt-starman stop #停止服务
/etc/init.d/mt-starman start #启动服务
/etc/init.d/nginx restart #重启nginx
注意,任何 mt 目录下的文件更改都必须重启 mt-starman,不然不会生效。
至此,MT 已经愉快的工作在了PSGI 模式下了。