• このエントリーをはてなブックマークに追加

ss-1302939647

はじめに

Movable Type の知識が皆無なのに何故か MTDDC Meetup Nagoya におジャマさせていただいたわけですが,そんな無知がイベント中の一企画である Hackathon な時間で何しようか,と数分考えた挙句,とりあえずnginxにインストールしてみよう,ということに至りました.

ひとまず動いたようなので,その記録を書いてみます.

あくまで個人でごにょごにょ遊んだよ,的なレベルなので,いろいろ落とし穴があるかと思いますが,そのあたりはご勘弁を.ではイカ以下.

環境の概要

nginx

ss-1302938773

この間リリースされた 1.0.0Homebrew 経由で入れてみました.あっという間に入りますね.

Perl

タイトルのとおり,perlbrew経由で入れた 5.12.2 です.

URLまわりの概要

ベースURL

http://mt.local:1080/nginx/

で動作することを目指します.

document root

/Users/issm/projects/web/mt/www/

/nginx/ はディレクトリ扱い.

fcgiソケット

/usr/local/var/run/nginx/cgi.sock

Movable Typeを準備する

MTOS-5.1b4-ja を対象にしました.

shebangを書き換える

オリジナルは #!/usr/bin/perl となっているので,perlbrewなPerlを扱う際には定石となっている(?) env コマンドを利用する形に置き換えます.

% cd ~/projects/web/mt/www/nginx
% find . | xargs perl -i.bak -pe 's{\#!/usr/bin/perl}{#!/usr/bin/env perl}g'
% find . -name \*.bak | xargs rm -f

nginxを設定する

先で定義したドメインでアクセスできるように,nginxを設定しておきます.

なお,fcgiwrap を実行して,同じく先で定義したソケット経由で通信できるものとします.

server {
    listen 1080;
    server_name mt.local;
    root /Users/issm/projects/web/mt/www;
    index index.html;
 
    # /nginx/
    location /nginx/ {
        index index.html;
 
        # static files
        location ~ \.(?<ext>html|xml|css|js|jpe?g|png|gif|txt)$ {
            expires 1m;
            break;
        }
 
        # directory
        location ~ (^$|/$) {
            break;
        }
 
 
        # fastcgi settings
        gzip off;
        fastcgi_pass   unix:/usr/local/var/run/nginx/cgi.sock;
 
        fastcgi_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_FILENAME    $document_root$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;
        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;
        fastcgi_param  REMOTE_USER        $remote_user;
 
 
        #
        client_max_body_size 16M;
    }
}

システムチェック

http://mt.local:1080/nginx/mt-check.cgi にアクセスしてみます.

ss-1302938847

お望みの Perl を使えているようです.

あとは好きにインストールを進めます.(データベースの設定とかは省略.)

まとめ(まとまっていないけど)

Movable Type の *.cgi なファイルを実行すること自体は難なく行きました.どちらかと言えば nginx の設定の方が肝になるかと思いました.

次の点で数分試行錯誤した結果,先のような設定に落ち着きました:

  • fcgiまわりの設定と静的ファイルへのアクセスまわりとの兼ね合い
  • トップとかディレクトリ指定的アクセス(末尾が/なURLでのアクセス)に対する設定

おわりに

以上,nginx な Webサーバと perlbrewなPerlで Movable Type を「ひとまず」動作させてみた記録でした.

nginx の設定さえしっかりできれば,ちゃんと動いてくれそうな予感がしますね.(つきつめるとどこかでハマるかもですが.)

おまけ:nginx + fcgi

次のあたりを参照してください.