動かなくなったMovableType4をアップグレードする その1

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

XREAのサーバでMovableType4.01を動かしていたのですが、すごい放置をしていたらサーバの更新でPerlのバージョンが上がり、動かなくなってしました。このMovableTypeをアップグレードして、次の対応します。

  • テンプレートを変更し、モバイル対応する
  • HTTPS対応
  • Canonical URLは変わらないようにする (HTTP -> HTTPSはするけど)

無理矢理動くようにする

  • definedの部分のコードを書き換える
  • mt-config.cgiSQLSetNames 1を追加する(文字化けするので)

これで動くようにはなります。
しかしMT4のテンプレートでレスポンシブ対応しているものを見つけるのは大変。元々使っていたテンプレートのサイトも閉鎖されていました。

再現環境を手元に作る / XREAの情報

今動いているXREAのサーバでは次のものが動いています。

  • Apache 2.4
  • Perl 5.16.3
  • MySQL 5.7.27

Perlのdefined関連がおかしいので、Perl5.10よりも前のもので動いていたのだと思います。XreaはSSHできるので、他にも情報を集めます。

/etc/my.cnf
1
2
3
4
5
6
7
8
[client]
default-character-set = utf8
[mysqld]
character-set-server = utf8
[mysqldump]
default-character-set = utf8
[mysql]
default-character-set = utf8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
mysql> show variables like '%chara%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.11 sec)

環境をUbuntu18.04で作る

もっと古いubuntuを使った方が良いのかもしれませんが。

1
2
apt update
apt install build-essential mysql-server libmysqlclient-dev perlbrew apache2
1
2
3
4
5
6
7
8
9
10
11
12
13
perlbrew install --notest perl-5.8.6   # 元の環境
perlbrew install --notest perl-5.16.3 # 今の環境
perlbrew use perl-5.8.6

cpan
> notest install Digest::SHA Devel::CheckLib
> notest install CGI Image::Size File::Spec CGI::Cookie DBI DBD::mysql HTML::Entities LWP::UserAgent XML::Atom MIME::Base64 IO::Compress:Gzip IO::Uncompress:Gunzip Crypt::DSA


perlbrew switch perl-5.16.3

cpan
notest install CGI Image::Size File::Spec CGI::Cookie DBI DBD::mysql HTML::Entities LWP::UserAgent XML::Atom MIME::Base64 IO::Compress:Gzip IO::Uncompress:Gunzip Crypt::DSA

ローカルで適当に動けばいいやレベルの設定。

/etc/apache2/sites-enabled/100-mt.orz.at.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<VirtualHost *:80>
ServerName mt.orz.at
DirectoryIndex index.html

ServerAdmin webmaster@localhost
LogLevel info

ErrorLog ${APACHE_LOG_DIR}/error_orz.log
CustomLog ${APACHE_LOG_DIR}/access_orz.log combined

AddHandler cgi-script .cgi .pl
DocumentRoot "/data/mt.orz.at/"
<Directory "/data/mt.orz.at/">
AllowOverride All
Options +ExecCGI
Require all granted
</Directory>
</VirtualHost>

/etc/hosts127.0.0.1 mt.orz.atを追加します。良くない方法だけど、VMの閉じた環境だし手っ取り早く動かしたいので。

XREAのコンソールからMySQLのDumpを取りローカルに持ってきます。

1
2
3
create database mydb default character set utf8;
CREATE USER 'myuser'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mypassword';
GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'localhost';

XREAサーバにあるファイル群をTARで固めてローカルに持ってきます。
mt.cgiのパスをperlbrewのパスに変更します。

これでローカルで動くようになりました。

ひとまずここまで。
MT4からMT7にはアップグレードできないため、次はこれを新しい環境にMT5を経由してMT7まであげます。
その後、それをXREAに持って行くか、XREA上でアップグレード作業をするかのどちらかをします。