さくらのVPSに入れているDebianをWheezyにアップデートした

MondoRescueと格闘していたのはSqueeze -> Wheezyをローカルでテストが目的。

幾つか問題はあったけどアップグレードできたのでさくらVPS上でも更新。基本的にドキュメントのDebian 6.0 (squeeze) からのアップグレード通りに実行。バックアップはMondoRescueでまるまる取ったった。

さくらのVPSは拠点が石狩で最近は大阪を選べるようになったと聞く。つまり従来の契約の人は石狩を使っているはず大阪リージョンだった。北海道の大学のミラーサーバはないかとおもって調べていたらさくらインターネットがミラーサーバー公開している様子! traceroute してみたら石狩っぽいので http://debian-mirror.sakura.ne.jp/debian/ を今回からつかうことに。
* 参考: 2013年02月15日 さくらインターネット Debian ミラー提供開始
* 参考: データ転送速度が高いかもしれないサーバ (近くのミラーサイト) を自動的に探すには

とイキってたけど使っていたVPSは大阪リージョンでした・・・(´・ω・`)

dotdebの日本のミラーサーバもあるようなので最終的に、/etc/apt/sources.list は以下のように設定。

# Debian 7 wheezy
deb http://debian-mirror.sakura.ne.jp/debian wheezy main contrib non-free
deb-src http://debian-mirror.sakura.ne.jp/debian wheezy main contrib non-free

deb http://security.debian.org/ wheezy/updates main contrib non-free
deb-src http://security.debian.org/ wheezy/updates main contrib non-free

deb http://debian-mirror.sakura.ne.jp/debian wheezy-updates main contrib non-free
deb-src http://debian-mirror.sakura.ne.jp/debian wheezy-updates main contrib non-free

# dotdeb.org
deb http://mirrors.teraren.com/dotdeb/ wheezy all
deb-src http://mirrors.teraren.com/dotdeb/ wheezy all
deb http://mirrors.teraren.com/dotdeb/ wheezy-php55 all
deb-src http://mirrors.teraren.com/dotdeb/ wheezy-php55 all

トラブル

MySQLのアップデートでエラー

dpkg: error processing /var/cache/apt/archives/mysql-client-5.5_5.5.31+dfsg-0+wheezy1_amd64.deb (--unpack):
 trying to overwrite '/usr/bin/mysqlcheck', which is also in package mysql-client-core-5.5 5.5.31-1~dotdeb.0
configured to not write apport reports
                                      dpkg-deb: subprocess paste killed by signal (Broken pipe)
 /var/cache/apt/archives/mysql-client-5.5_5.5.31+dfsg-0+wheezy1_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

Mise à jour Squeeze vers Wheezy : MySQL DotDeb
How to reinstall broken mysql package

あたりを見ると再インストールした方が良いそうなのでそうした。

apt-get -f install -o Dpkg::Options::=”–force-overwrite”
apt-get remove mysql-client-core-5.5
apt-get dist-upgrade

mod_dav_svn.soでコケる

Debian Bug report logs – #705464 mod_dav_svn.so: undefined symbol: svn_repos__post_commit_error_str

apache2: Syntax error on line 203 of /etc/apache2/apache2.conf: Syntax error on line 2 of /etc/apache2/mods-enabled/dav_svn.load: Cannot load /usr/lib/apache2/modules/mod_dav_svn.so into server: /usr/lib/apache2/modules/mod_dav_svn.so: undefined symbol: svn_repos__post_commit_error_str
Action 'configtest' failed.

どうもコケるタイミングがおかしいので、

a2dismod authz_svn dav_svn

a2dissiteで一旦モジュールと使っているサイトを無効にして apt-get dist-upgrade の後に有効にしたらうまく行った。

というか、SVNもう使ってないし秘密のソースコードでもないのでSourceForgeかどっかに移行してSVN停めよう・・・

Ruby環境がおかしくなった

update-alternatives: error: alternative link /usr/bin/gem is already managed by ruby.

そもそもrbenvに置き換えていたので問題を解決する気になれず、ruby関連モジュールは apt-get purge で消した。

nginx-fullに移行

ディストリビューションのrubyを削除したことも関連しているのだけど、wheezyからdotdebのnginx-passengerは提供されなくなった模様。途中でnginxが消えてしまったので nginx-full をインストール。

nginx-extraにngx-pagespeedが含まれていたので気を惹かれたけど、一度に多くのことをやると切り分けが難しくなるので今回はnginx-fullをつかうことにした。

Wheezyにアップデートした動機

そもそもMondoRescueと格闘している間になぜWheezyにアップデートしようとするのか忘れていた。OSのアップデートを延期していたのは、以前PHPをアップデートしたらWordPressブログが動かなくなった苦い思い出があったから。一切動かないならまだしも、しばらくは動いていてphp-fpmが応答不能になり、再起動するとまたしばらくは動くという調査しづらい状態なのでそれからディストリビューションのアップデート怠っていた。まったく根拠はないがAPCキャッシュを疑っていた。

先日のPHPカンファレンス2013の「PHP 5.5ネーティブキャッシュの話」でPHP5.5でOpcacheが標準搭載されたことPHP5.4/5.5とAPCの組み合わせが不安定なことを聞いて、dotdebでwheezy向けのPHP5.5が配布されていたのでOSごとアップデートしてみることにした。

根拠はないし、WordPress+PHP5.5で問題が起きるかもしれないがしばらく様子を見てみる。

MondoRescue素敵

アップデートで起きたトラブルは全部MondoRescueでローカルのVMware仮想環境で経験できたので、さくらのVPSでの更新は穏やかに対処できた。設定ファイルのマージも事前にまとめられるし。理想としてはさくらのVPS側で仮想環境をコピーして使えたら楽なのだけど、GlobalIPの数や料金的など難しいのだろうな。新規にもう一つ契約して移行することも考えたけどセットアップはもちろん契約すら面倒だからMondoRescueを選んだが新たな技を取得して満足。