LNMP 环境下安装 Movable Type

dimlau

最近从虚拟主机搬到了一台VPS上,好处自不必多说,关键是价格竟然出奇地便宜。原来我的虚拟空间月租要7美元在加上独立IP费用,月租10多美元了。但是这个VPS竟然每月只要 3 美元!有需要地朋友可以看一下——Ramnode VPS

搬到VPS之后,装了Centos,用网上找的LNMP一键安装包配置了Nginx+php+mysql环境。据说效率要比LAMP强多了,其实这些我都不懂,只不过vps的内存只有512,所以就选了资源占用比较少的LNMP了。

问题也就来了,本身在wordpress满大街的今天,用Movabletype的人就很少了,更何况是LNMP环境下?

我竟然⋯⋯甚至找不到nginx下配置支持cgi程序的资料。千辛万苦,花了三天的时间,综合好多文章里的介绍,自己勉强搞定了——其实回过头来看,好简单,是我自己菜鸟而已。

开始了:

Nginx不支持CGI但是支持FastCGI,安装FastCGI模块:

wget https://www.cpan.org/modules/by-module/FCGI/FCGI-0.67.tar.gz
tar zxvf FCGI-0.67.tar.gz
cd FCGI-0.67
perl Makefile.PL
make && make install

下载一个或者自己建立一个fastcgi-wrapper.pl。

把上述文件放在比如 /root 某个目录下,把它的权限改为可执行,并执行该文件。执行后会在 /var/run/nginx 目录下生成一个文件:perl_cgi-dispatch.sock 到这里如果一直没出差错就基本上完成了,只需要在Nginx的配置文件里加载cgi格式的文件解释方式:

比如我是这样写的:

location ~* .*\.(cgi|pl)$ {
       fastcgi_pass unix:/var/run/nginx/perl_cgi-dispatch.sock;
       fastcgi_index index.cgi;
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       include fastcgi_params;
       }

其中最后一句,是加载了一个外部的配置文件(如果是用LNMP一键安装包安装的环境,该文件默认是存在的),也可以把这一句用如下内容替换:

lfastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;
fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;
fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;
fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;
# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param  REDIRECT_STATUS    200;

然后重启nginx,理论上大功已经告成⋯⋯下面继续安装Movabletype的过程。

如果和我一样是新装的系统新配置的环境,要安装Movabletype的话还需要安装DBI.pm来连接mysql数据库,不然会提示:Can’t locate DBI.pm 。

这个就简单了,比如我用的centos,只需一行命令:

yum install perl-DBI perl-DBD-MySQL -y

OK了么?没有,汗一下,MT默认情况下认为 mysql.sock 文件放置的目录和实际用LNMP配置环境时mysql.sock存在的路径不同。这时,在万能的 mt-config.cgi 文件里定义该路径就行了,加入一行:

DBSocket /tmp/mysql.sock  //这个路径是lnmp安装包配置的路径,根据自己情况更改。

然后,可以运行一下 mt-check.cgi 你会发现,这时候cgi程序已经可以运行了,但是对于MT来说当前环境仅足以运行而已,很多模块都缺失⋯⋯

好吧,聊胜于无。

延伸阅读

本站架设在 RamNode VPS

Grav -> Hugo