網元 AMI を Amazon Linux / RedHat Linux Enterprise 版に移行しました

2014/01/13

現在このブログは AWS EC2 で動いており、AWS EC2 で WordPress を使うにあたり 網元 AMI を利用させてもらっています。網元 AMI は最初 CentOS 版でしたが現在は Amazon Linux / RedHat Linux Enterprise 版になっています。

「あー移行してみたいけど、面倒なのかな-」と思っていたところインスタンスの移行方法の記事が網元サイトに掲載されたので参考に移行してみました。大体の流れは参考記事通りですが、セットでやっておいた方が良い作業&自分の作業メモを残します。

Amazon Linux / RedHat Linux Enterprise 版網元のインスタンスを作成

既存のインスタンスとは別に、Amazon Linux / RedHat Linux Enterprise 版のインスタンスを作成。

ざっくり手順を書くと、aws market place – AMIMOTO に行って、リージョンを「Asia Paciffic(Tokyo)」選択→「Continue」ボタン。「EC2 Instance Type」を選択(私の場合 t1.micro )して、「Security Group」と「Key Pair」を適宜設定して「Launch with 1-Click」ボタン。

作成方法は「使い方 | 超高速 WordPress AMI 網元」が詳しいです。初めて網元を使うわけではない場合、Key Pair やセキュリティグループは既存のものを使う感じで OK です。

インスンタンスの移行方法

詳しい流れは「インスタンスの移行方法 | 超高速 WordPress AMI 網元」を見ながら作業。

ざっくり手順を書くと、今稼働してるインスタンスのボリュームからスナップショットを作成→スナップショットからボリュームを作成→今作ったボリュームを新しいインスタンスにアタッチ→コマンドでデータ移行など→新しいインスタンスからさっきのボリュームをデタッチ→新しいインスタンスに EIP をつける

プロセス止める時にコケてしまったら

私は一度、コマンドで以下のようにしたとき、

# service php-fpm stop

[失敗] とエラーが出て stop ができない状態になりました。試しに start も試したけれどそちらでもエラー。
しょうがないので ps aux | grep php で php-fpm の master プロセスを見て kill 1234 みたいな感じで殺したら stop とか start がうまく行く感じに。

psaux

たとえば上記のような感じだったら、kill 6650 する感じで。

よーし移行終わったよ!あれ?ssh で繋げられない……!

網元 AMI の CentOS 版では root でログインしていましたが、Amazon Linux / RedHat Linux Enterprise 版では ec2-user でログインになります。私は失念してしばらく考えてしまいました。移行したら間違えないようにしましょう。

ec2-user でログインした後、

sudo passwd

で root ユーザーのパスワードを設定して、必要な場合は

su -

で root ユーザーにして作業。

~/.ssh/config ファイルを使っている場合

私は ~/.ssh/config に以下のような感じに設定を書いていたので、この User を root -> ec2-user に修正しました。

Host ec2
  HostName xxx.xxx.xxx.xxx
  Port 22
  User root
  IdentityFile ~/My_pem/hogehoge.pem

~/.ssh/config をちゃんと変更すれば

ssh ec2

でログインできるはずですが、もし該当 HostName がすでにあってエラーが出てしまった場合は ~/.ssh/known_hosts 内の該当 HostName の部分をトルツメして保存を。

ディレクトリ所有者が nginx で削除も上書きも出来ない……!

移行すると ec2-user でログインになりますが、ec2-user では /vhosts/ など nginx が所有者のディレクトリ内を修正したりすることができません。これはコマンド打って作業するならば su – して root になってしまえば OK。

しかし SFTP クライアントから接続する場合は su – できないので「nginx ユーザとして ssh 接続できるようにするには? | 超高速 WordPress AMI 網元」を参考に、nginx ユーザでログインできるよう設定。SFTP で繋ぐ時には root や ec2-user ではなく nginx で接続するようにすれば OK。

ちなみに SFTP 接続時のホストは IP アドレス(Public IP)、ポートは 22、パスは /var/www/vhosts/ で、秘密鍵を設定すれば OK。

完了

かなり丁寧なマニュアルがあるおかげで比較的すんなりと移行することができました。Amazon Linux / RedHat Linux Enterprise 版のほうが色々メリットがあるようなので、興味のある方は試してみると良いかもしれません。