とむむの日々

埼玉県某市に住む「とむむ」の日記です。2008年3月から、関心のあることを書き連ねる日常の記録です。

自宅サーバの近況報告 その3

移行断念


どうも、とむむです。

前回の「自宅サーバの近況報告 その2」に引き続き、その3をお送りしたい。


OpenPNE2.12.xxからOpenPNE 3.8.xxへの遥かに遠い道のり…

色々と調べていると、同じことをやっている人がいるみたいで、ここのブログを参考にさせてもらった。

■データベースのEngineにInnoDBに変更する

データベースをInnoDBにしておかないとアップグレードが正常にできません。
まずはalter table tablename engine = InnoDB;を全テーブルに実行してInnoDB化しておきます。

なるほど。これは重要なポイントだなと思う。
そういえば、とむむのUbuntu Server10.04)って、InnoDBは使ってないんじゃないか? と思い、show engines; を叩いてみたが、予想通りの展開でMyISAMがDefaultになっており、InnoDBの文字列は存在しなかった。。
どうしたものかと調べていると、非常にマッチする記事を発見した。「Unable to enable InnoDB in mySQL on Ubuntu 10.04」だ。

ここに書かれている内容で、必要事項をまとめると以下の通りだ。


・my.cnf に設定を追加
以下の内容を書いておく。
ignore-builtin-innodb
plugin-load=innodb=ha_innodb_plugin.so;
innodb_trx=ha_innodb_plugin.so;
innodb_locks=ha_innodb_plugin.so;
innodb_lock_waits=ha_innodb_plugin.so;
innodb_cmp=ha_innodb_plugin.so;
innodb_cmp_reset=ha_innodb_plugin.so;
innodb_cmpmem=ha_innodb_plugin.so;
innodb_cmpmem_reset=ha_innodb_plugin.so

・/etc/apparmor.d/usr.sbin.mysqld の書換え
/usr/lib/mysql/plugin/ r を /usr/lib/mysql/plugin/* mr へ書き換える。

・/var/lib/mysql/ib* の削除
心配ならmvでも構わないが、基本削除してしまっても問題ない。

OpenPNEのテーブルをInnoDBに変更する

やる前に必ず、バックアップが必要。
mysqldump と /var/lib/mysql/[OpenPNEのDB名] をtar.gzに固めてバックアップすると良い。


$ mysql -N -u root -p -e 'show tables;' [OpenPNEのDB名] > /tmp/table
$ for table_name in `cat /tmp/table`; do mysql -N -u root -p -e 'alter table $table_name engine = InnoDB;'-D [OpenPNEのDB名] ; done

■OpenPNE3.4.xxへバージョンアップ

バージョンアップの手順は、OpenPNE3.4に同梱されているアップグレード手順の通りで、問題なかった。

■imgファイル移行

バージョンアップ後、画像ファイルをコピーするがOpenPNE3.4以降だと、画像ファイル名が変わっているので、以下の修正が必要だ。


コピー元: SNS名/var/img_cache/
コピー先: SNS名/web/cache/img/以下

旧ファイル名:img_cache_d_776_X_130XXXXXXX_jpg.jpg
新ファイル名:d_776_X_13XXXXXXX.jpg.jpg

サブディレクトリ配下にも大量にあるので、リストファイルを元にファイル名の一斉変更をした方がよいと思う。

Apacheの設定変更

.htaccessのRewrite設定
SNS名/web/.htaccess 内でコメントアウトされている箇所を以下のように変更する。
RewriteBase /SNS

上記の設定がないとログイン後のページ遷移が正しく行えないことがあるようなので、注意すること。

◯Aliasの設定

OpenPNEApacheのAlias設定も以下のように変更する。


変更前: Alias /SNS名 /[DocumentRoot]/SNS名/public_html
変更後: Alias /SNS名 /[DocumentRoot]/SNS名/web

OpenPNE 3.4.xxから、OpenPNE 3.8.xxへのバージョンアップ

バージョンアップの手順は、OpenPNE3.8に同梱されているアップグレード手順の通りで、OKだ。
OpenPNE 3.4で様々な変更を実施済なので、特に引っかかるところはなかった。

■結論

2.12 => 3.4 => 3.8 の流れを経れば、バージョンアップは可能だった。
バージョンアップの過程で様々な変更は必要だったが、これまでのデータが消えたり、正常にログインできなくなったりするというような最悪の事態が発生するようなことはなかった。

しかし…重い、重すぎる。。

OpenPNE3.0以降で採用されたSymfony2の影響も大きいと思っているが、MILLINUXの貧弱なハードウェアでは重すぎて、使い物にならなかった。。また、期待していたスマホ用のインタフェースもプラグイン等を追加しないとダメで、デフォルトだとそれほど魅力的なものにはならないことも分かった。

結局、重さに耐えかねて、2.12に戻すことにした。2.12に戻した後、2系の最終バージョンである2.14へバージョンアップを行った。バージョンアップをして、1つだけいいことがあった。レビューでAmazonの商品検索ができなくなっていたところが見事に直った。

あー、それでも今時のスマホに対応したSNSにしたいなぁ。と思いながら、たまたま2.X系をメンテナンスしている人のサイトのリンク先に面白い取り組みを見つけた!

次回、詳しく紹介するのでお楽しみに!