Ubuntu16.04 + nginx でMovableType7.0.α.2を動かすまで
はじめに
- Ubuntu16.04 + nginx で MovableType7.0.α.2 を動かすまで。
以前、自前のブログ記事で Ubuntu14.04 + nginx でMT6.2.2を動かすまで というのを書いたので、その流れをそのまま踏襲します。
なるべく、慣れない方がこの記事だけで最後まで完遂できるようにします。他記事へ飛ばないといけなくなるようにはしないようにします。
- 何はともあれ、 apt-get update と apt-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 ファイルは解凍してください。
アップロード先のディレクトリを作成
- /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 以外で作成しておきましょう。
参照 qiita.com
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 サイトへどうぞ。 www.movabletype.jp
ぼやき
パーミッション設定いじってると、何か、「あー、 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 の設定と合っているか)