[笔记]CentOS6 nginx下安装MT-PSGI环境的全过程

PSGI 运行 MovableType,是一直的梦想,说实在的,慢如蜗牛的 MT 后台已经早已厌倦了。只是不舍得转化到 WordPress 平台而已。

切换到了 vultr VPS + nginx, 这个愿望可以说距离实现近了一步,只是小有瓶颈,因为原版的 mt-starman-daemon 是针对 Debian 的。 移植到 CentOS6 上需要小小改动。

废话不说,直接记录过程吧。

先上几个参考教程:

  1. https://github.com/saahov/mt-starman-daemon
  2. http://www.centoscn.com/CentOS/help/2016/1209/8270.html
  3. https://www.tonyhead.com/archive/2014/08111250

第一个连接是安装 cpanm Task::Plack XMLRPC::Transport::HTTP::Plack StarmanPerl Plack/PSGI 模块 和 mt-starman-daemon 本身。 基本上可以按照教程走,局部修改。 简单记录如下:

mt-starman-daemon

  1. 先更新当前系统到最新,防止出现稀奇古怪的问题

    yum -y update

  2. 安装 App::cpanminus 工具,方便安装 Perl 模块.

    curl -L http://cpanmin.us/ | perl - App::cpanminus

  3. cpanm 安装必须的Perl模块

    cpanm Task::Plack XMLRPC::Transport::HTTP::Plack Starman

    这一步需要耐性等待,保证都安装成功。 如果错误。可能是没有安装某些lib导致,则尝试运行以下命令:

    yum install expat-devel (如果报告XML::Parser 安装失败)
    yum install gcc #如果报告没有编译器

    后重新运行安装命令。 直到安装成功。

  4. 下载 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

  5. 重点,修改mt-starman 脚本适应 CentOS6

    vi /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.cginginx ,办法见 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 模式下了。