昨日の記事で「MovableTypeでも記事をリアルタイムに生成するような仕組みはないんでしょうかね」と書いたのですが、調べてみたら案外簡単にできそうだったので、試してみることにしました。要するに、このページで言うところの「ダイナミックパブリッシング」というやつです。
mod_rewriteは元々入っていたし、httpd.confの設定も何ら問題無し。この辺は自前のサーバならではの気軽さでサクッと設定できました。で、公開プロファイルの設定を「ダイナミックパブリッシング」に変更して、ブログを再構築。はい、これでおしまい。
…… と思ったんですが、ひとつ大変重要なことを忘れていました。ダイナミックパブリッシングを行なうにはPHPが必要だったのです(爆)。いやぁ、この辺は自前のサー バならではの落とし穴。いっぱしのPerlフリークである私にはPHPなんて必要なかったので、サーバ立てて以来PHPなんて全くインストールしていなかったのですよ。これは盲点。
でもまあ、必要であるならばインストールもやぶさかではないので、レポジトリにRemiを追加して、5.x系の一番新しいバージョンである5.6.15をyumでさっくりインストール。httpdを再起動して、はいこれでおしまい。
……と思ったんですが、予想に反してなぜかトップページにアクセスしてもブログの記事が表示されません。何だこれはどうしたんだ、と思案することしばし。「それじゃあhttpdのエラーログを見てみようか」ということで見てみたところ。
mysql_connect()が見つかりません。
というエラーが大量に出ていました。ええっ、PHPちゃんと入れたんですけど? これは何かおかしい、ということでまた思案することしばし。それじゃあ、mysql_connect()の身元を当たってみよう、ということでPHP総本家のページに行ったところ。
「この拡張モジュールは PHP 5.5.0 で非推奨になり、PHP 7.0.0 で削除されました。」
な、何ですとぉ? ということは、今インストールした5.6.15にはmysql_connect()が存在しないということか……? たしかにドキュメントを読むと、代わりにmysqli_connect()を使えとあるし、php-mysqlndのパッケージを見てもそれらしき関数は見当たりません。これは、バージョンが新しすぎるということですね(泣)。つーか、そんな大事な関数の名前をホイホイ変えるもんじゃないよ!! まったく、PHPのこういう文化はあいかわらずだよなぁ。
そういうわけで、5.6.15をアンインストールして、それならどのバージョンのPHPなら使えるんだ? と調べてみたところ。正解はこのページにありました。
PHP 5.3 以上。php-mysql モジュールが必要です。
ぐはぁっ(頭を抱えてのけぞる)
php-mysqlモジュールって、すでにRemiには置いてないぞ? っていうか、5.3系なんてすでにサポート終了してまずぜ!? とはいえ、パッケージとしてphp-mysqlモジュールを入れるとなると、選択肢は……他に無いんです。updateレポジトリにあったモジュールのバージョンは5.3.3-46。PHP本体もこれに合わせるしかないのです。あああ、そんな。役所で未だにWindowsXP使い続けるような真似はしたくないのにぃぃ(号泣)。
念のためにPHPの5.3.3-46というバージョンがいつビルドされたのか確認してみると、今年の7月となっていました。それほど古くないということは、今までに発覚した脆弱性とかには全部パッチを当ててある……と信じていいのでしょうか。いや、信じるしかありません。他に選択肢が無いんですから(渋)。
というわけで、ブログの不具合が発覚してからPHPをインストールし直して記事が生成できるようになるまで、約25分。その間、当ブログにアクセスすることができなくなっていました。謹んでお詫び申し上げます。はあ、やれやれ。
そんなこんなで、現在の当ブログはHTMLファイルを一切持たない、動的なページ生成によって運用されております(URLはhtmlのままですが)。このため、以前に比べるとレスポンスが若干もったりするようになったのですが、テンプレートの変更やカテゴリの追加といったサイト全体に影響するような変更を行なっても再構築する必要がなくなったので、運用面ではずいぶん楽になりました。めでたしめでたし。
にしても、MovableTypeのバージョンアップから始まって、ここまで来るのに予想以上に労力を費やしてしまいました。まあ、こんなことができるのもまとまった休みが取れる時くらいですから、いいっちゃいいんですけどね。それなりに楽しかったし(大笑)。
さて、これからいよいよ今回のセミファイナルイベント、カーネルの再構築に挑戦します。今回はRPM化を考えているので、rpmbuildについても勉強しつつ、進めていきたいと思います。さあ、やるぞー。