Ubuntu
MovableType

Ubuntu16.04 + nginx でMovableType7.0.α.2を動かすまで

More than 1 year has passed since last update.

はじめに

  • Ubuntu16.04 + nginx で MovableType7.0.α.2 を動かすまで。

  • 以前、自前のブログ記事で Ubuntu14.04 + nginx でMT6.2.2を動かすまで というのを書いたので、その流れをそのまま踏襲します。

  • なるべく、慣れない方がこの記事だけで最後まで完遂できるようにします。他記事へ飛ばないといけなくなるようにはしないようにします。

  • 何はともあれ、 apt-get updateapt-get upgrade は実行しておいてください。

  • ディレクトリの構成などは、あくまで一例ですので、それぞれの環境に置き換えて実行していってください。

  • Ubuntuは立ち上げたばかりくらいの想定です。

  • 別に Ubuntu に限らず他の Linux ディストリビューションでも問題ないかと思います。

諸々のインストール

各種環境/ver.まとめ

  • MovableType 7.0.α.2
  • Ubuntu 16.04
  • MySQL 5.7.20
  • nginx 1.10.3
  • Perl 5.22.1

nginx のインストール

apt-get install nginx

MTのインストール

ダウンロード

アルファ版なので以下よりダウンロード。
ダウンロードした zip ファイルは解凍してください。

Movable Type BETA

アップロード先のディレクトリを作成

  • /var/www/mt/MT-7.0a2/mt
  • /var/www/mt/MT-7.0a2/mt-static
  • /var/www/mt/MT-7.0a2/hogehoge (サイト用ディレクトリ) とか。

今回、あくまでアルファ版のインストールをおこなう、ということで、それ用に切ってます(ちょいと冗長)

アップロード

作成したディレクトリに、解凍したものをアップロード。

  • /mt-static/ の中身 → /var/www/mt/MT-7.0a2/mt-static
  • /mt-static/ 以外のもの全て → /var/www/mt/MT-7.0a2/mt

MySQLのインストール

apt-get install mysql-server

MySQL をインストールすると latin1 になってしまっているので、 UTF8 にしなくてはなりません。
また、ユーザも root 以外で作成しておきましょう。

参照
Ubuntu で MySQL

UTF8にする

/etc/mysql/mysql.cnf に以下を追記してから、 MySQL を再起動。

[mysqld]
character-set-server=utf8
skip-character-set-client-handshake
default-storage-engine=INNODB

[mysqldump]
default-character-set=utf8

[mysql]
default-character-set=utf8

root以外のユーザ作成

username, password は適当に置き換えてください。

GRANT ALL PRIVILEGES ON *.* TO username@localhost IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;

perl のインストール

aptitude -y install perl

nginx の場合、 apache より cgi 動かすまでの道のりが長くて大変なのですが。
まあ、サクサクといきましょう。

fcgiwrap のインストール

apt-get install fcgiwrap
cp /usr/share/doc/fcgiwrap/examples/nginx.conf /etc/nginx/fcgiwrap.conf

/etc/nginx/sites-available/default に、以下を追記してー、

# fast cgi support
include /etc/nginx/fcgiwrap.conf;

/etc/nginx/fcgiwrap.conf の中身を以下に書き換えー、

location ~ \.cgi(/|$) {
  gzip off;
  fastcgi_index index.cgi;
  fastcgi_split_path_info ^(.+?\.cgi)(/.*)$;
  if (!-e $document_root$fastcgi_script_name) {
    return 404;
  }
  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  include /etc/nginx/fastcgi_params;
  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  fastcgi_param PATH_INFO $fastcgi_path_info;
  fastcgi_param PATH_TRANSLATED $fastcgi_path_info;
  fastcgi_pass unix:/var/run/fcgiwrap.socket;
}

fcgiwrap の起動( nginx の再起動もやっておいた方が吉かもです)

/etc/init.d/fcgiwrap start

なお、fcgiwrap 再起動の時は restart 、停止の時は stop で。
MT + fcgiwrap の環境って、ストレートにやっても動いてくれませんで、 403 forbidden 無間地獄に堕とされますから、 fcgiwrap.conf の中身を上のように書き換えないとならず。
このあたりについては、公式と以下記事を参照に。

PSGI の方が動かしやすそうかもしれませんが、何となくそれほどの根拠もなく fcgiwrap の方がイイ感じのような……(根拠ある情報があるようでしたら欲しいです)

諸々の設定

nginxの設定

/etc/nginx/nginx.conf をいじりましょう。
nginxのconfまわりの設定次第なのですが、デフォルトのままでしたら、 /etc/nginx/sites-available/default なども。
rootディレクトリを /var/www とかに設定しつつ。
VirtualHost も一緒に設定する場合、たとえば以下のようにするなど。

server {
  listen 80 default_server;
  server_name hogehoge.piano.or.jp;

  root /var/www;
  index index.html index.htm;

  location / {
    try_files $uri $uri/ =404;
  }

  # fast cgi support
  include /etc/nginx/fcgiwrap.conf;
}

SSL の場合は 443 についての記述も入れつつで。

ちなみに、 MT7 のブログ設定において、サブドメインを利用する、というやり方もとれなくはないのですが、個人的には、 nginx の conf に設定をまとめておいた方が、後々のメンテナンス性が高くなって幸せ感が高まるんじゃないかと思います。

MySQL の設定

MT データベース作成。

create database mt character set utf8;
grant all on mt.* to hogehogeuser@localhost identified by 'foobarpassword';

MT ディレクトリのパーミッション設定

cd /var/www/mt/MT-7.0a2/mt
chmod 755 *.cgi

cd /var/www/mt/MT-7.0a2/mt-static/
chmod 777 support

cd /var/www/mt/MT-7.0a2/
chmod 777 hogehoge

詳しくは本家 MT サイトへどうぞ。
Movable Type の設置 (Linux、BSD、Mac OS X)

ぼやき

パーミッション設定いじってると、何か、「あー、 cgi じゃー」っていう気分になりませんか。

MTの構築

http://hogehoge/mt/MT-7.0a2/mt/ にアクセスして、サインインボタンからおこなう。
あとは、ブラウザ上で必要な項目を順々に入力していけば、めでたく MT 管理画面に到着します。

お疲れ様でした! 準備完了です。

apache より高速サクサクな再構築が楽しめます。

構築前後における諸注意

Got an error: Can't locate DBI.pm と怒られたら

perl のライブラリ群を入れておかないと、

Got an error: Can't locate DBI.pm

などと怒られるかもしれないので、怒られたら、

aptitude install libimage-size-perl libfile-spec-perl libdbi-perl libdbd-mysql-perl libhtml-parser-perl libwww-perl libsoap-lite-perl libfile-temp-perl libimage-magick-perl libstorable-perl libcrypt-openssl-dsa-perl libmime-base64-perl libxml-atom-perl libarchive-tar-perl libarchive-zip-perl libio-compress-perl

を実行して、諸々インストールしておきます。

参考:
Debian(Ubuntu) で PerlモジュールをインストールしたいときはCPANを使わなくても良い

オプションのモジュールが見つかりません と怒られたら

必要と思われるものをピックアップしてインストールしていきましょう。
実際、構築時に怒られた項目としては、以下の通りでした。
いずれも、絶対に必要か、というと、そんなこともなさそうですね(サムネイル画像自動生成くらいか?)

IPC::Run
MTのイメージドライバとしてNetPBMを利用する場合に必要となります。

Plack
PSGI環境下でmt.psgiを実行する場合に必要となります。

Crypt::SSLeay
Crypt::SSLeayはAOLやYahoo!などのSSLを利用するOpenIDのコメント投稿者を認証する場合、または Google Analytics を利用するために必要となります。

Cache::Memcached
キャッシング機能としてmemcachedを利用する場合に必要となります。

Digest::SHA1
LiveJournal、あるいはOpenIDでコメント投稿者を認証するために必要になります。

XMLRPC::Transport::HTTP::Plack
PSGI環境下でmt.psgiを実行する場合に必要となります。

Cache::File
Yahoo! Japanによるコメント投稿者のOpenID認証を許可する場合に必要となります。

Mozilla::CA
このモジュールは、Google Analytics などで SSL 証明書の検証に必要です。

GD
アップロードした画像のサムネイルを作成する場合に必要となります。

Crypt::DSA
コメント投稿時のサインインが高速になります。

CGI::PSGI
PSGI環境下でmt.psgiを実行する場合に必要となります。

CGI::Parse::PSGI
PSGI環境下でmt.psgiを実行する場合に必要となります。

YAML::Syck
のインストールは必須ではありません。YAML::Tinyよりも、軽量で高速に動作します。

Imager
アップロードした画像のサムネイルを作成する場合に必要となります。

XML::SAX::ExpatXS
XML::SAX::ExpatXSのインストールは必須ではありません。バックアップデータの復元に必要となります。

​mt-config.cgi について怒られたら

/var/www/mt/MT-7.0a2/mt/​mt-config.cgi-original となっていて、肝心の mt-config.cgi が存在しない場合は、ファイル名を変更してあげてください。
自分で作って置いても構いません。

管理画面が表示された後になって、ページ URL が開かない場合

  • 正しいパスにファイルが生成されているか確認
  • 設定 > 全般 > 公開パス > 「サイトURL」と「サイトパス」の設定を確認( nginx での conf の設定と合っているか)