[筆記]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 模式下了。