さくらVPSへサーバー移転した時の記録

AWSのEC2で動かしていました当ブログ(hrs-sano.net/blog/)をさくらのVPSへ移転しました。

OSもUbuntu 14.04にアップグレードしました。移転自体はデータや設定の移行で済ませています。

おもだって特別なことはしていないのですが、備忘録として残します。

やること

  1. ubuntuのインストール
  2. sshの設定、公開鍵の登録
  3. LAMPサーバーをセットアップ
  4. UFWの設定
  5. 旧サーバーから移行
  6. ドメインのAレコードを変更

1. ubuntuのインストール

さくらVPSの説明通り

「カスタムインストール」を利用すると簡単に終了します。VNCコンソールもHTML5モードが利用できるため、Javaの面倒な話はなしです。さくらさんさすがです。

第322回 さくらのVPSでUbuntu 14.04 LTSを動かす:Ubuntu Weekly Recipe|gihyo.jp … 技術評論社

MacのiTerm2で色々操作してると、ロケール関連の警告がうざったく出てくると思いますので、日本語環境を入れておくと良いかもしれません。(または.bashrcなどに言語関連の環境変数を入れる)

sudo apt-get install language-pack-ja
sudo dpkg-reconfigre locales

こうしてsshを繋ぎ直すと日本語化されています。

2. sshの設定、公開鍵の登録

ubuntu 10.04からの移行で設定ファイルの内容がやや変わっていました。が特にやることは一緒で、

PubkeyAuthentication yes
PasswordAuthentication no

ぐらいかな。

公開鍵を新しいサーバーへ流し込みます。利用したい鍵の公開鍵をssh-copy-idで流し込みます。

第53回 sshの活用:Ubuntu Weekly Recipe|gihyo.jp … 技術評論社

ssh-copy-id -i (公開鍵ファイル) (リモートマシンのアドレス)

3. LAMPサーバーをセットアップ

とりあえず入れるだけです。

sudo tasksel
#LAMP Serverを選択
#mysqlのrootパスワードを入力

これでひと通り必要な Apache2やMySqlやPHPが入ります

4. UFWの設定

さくらのVPSはいわゆるルーターと言った外側と挟むものがあるわけでない、フィルタの設定等ありません。

サーバーにさくら側が用意してくれるグローバルIPアドレスをふってくれます。そのため、サーバー側でフィルタ、ファイヤーウォールを用意する必要があります。

NE(ネットワークエンジニア)な人はiptablesでサクッと設定されたり、秘伝のiptablesのリストがあると思われますが自分はufwで済ませてしまってます。そんなにサーバー触る人ではないもので(汗)

この辺を参考に

第76回 Ubuntuのソフトウェアファイアウォール:UFWの利用(1):Ubuntu Weekly Recipe|gihyo.jp … 技術評論社

sudo ufw default deny
sudo ufw limit [ssh-port]
#lampサーバーのセットアップをした後でufwのapp指定が利用できます。
#apacheも"Apache", "Apache Full", "Apache Secure"が利用可能
sudo ufw allow “Apache"
sudo ufw logging low

5.旧サーバーから移行

ようやっと旧サーバーからの移行です

やることはWordpressの移行です。 公式のドキュメントは参考になります。

  1. 旧サーバーの内容, wordpress本体コンテンツをコピー
  2. apacheの利用のための設定
  3. MySQLのデータベースを作成
  4. DNSのAレコードを変更する

5-1. 旧サーバーの内容をコピー

wordpressはメンテナンスモードに切り替えておきます。

旧サーバーのWEBに公開しているコンテンツをまるごとtarしてしまいます ついでにetcもやってしまっても良いと思います。(いちいち旧サーバーに接続して見に行かなくてもいいので

それを新サーバーへコピーします。 (すでに新サーバーではsshの鍵設定を行っていますので、一度ローカルに落として再度scpなどでアップロードします)

5-2. apacheの利用のための設定

こちらも旧サーバーの設定を流しこむだけで良かったと思ったのですが、さすがにubuntu 12.04 -> ubuntu 14.04では難しそうだったので、手で設定しなおし。

conf.d が conf-enabled, conf-aveables と言ったa2en/dis**コマンドで操作できる形態に変わったようです。aveables内に以前のconf.dに書いた内容を入れて利用するで行けると思われます。ちょっと心配だったので手書きで移行しました。

sites-aveables の設定も注意が必要です。アクセス権限のディレクティブが変わっています。

apache 2.2では Order…で許可拒否などの優先順位設定をした後に具体的な許可設定をしていますが、2.4ではRequireに変わっています。(正確にはmod_access_compatを有効にすることでOrderディレクティブが利用可能)

参考は

サーバー移転のお知らせにも追記しました、wordpressのパーマリンクの構造を変更している場合はmod_rewiteの有効化が必要ですのでそれも行うこと。

また.htaccessの利用も有効にできるように、allowoverride の設定も入れておくこと。特定のディレクトリに対してAllにすればいいかと。

5-3. MySQLのデータベースを作成

MySQLについては、Wordpressで紹介されているやり方をそのまま利用しました。

データベースのバックアップ - WordPress Codex 日本語版

mysqlで利用するデータベースの文字コードをUTF-8にするのもお忘れなく。

[client]
default-character-set=utf8>
[mysqld]
skip-character-set-client-handshake
character-set-server = utf8
collation-server = utf8_general_ci
init-connect = SET NAMES utf8

wordpressで利用するデータベースとMySQLのユーザーを作成します。以前の内容と同じにすること。

もしくはwordpressのコンテンツ内にあるwp-config.phpのdb関連の設定に合わせる。

DBを復元し終えると、DBのドメインはそのままなので、新サーバー側のIPでアクセスしてもリダイレクトされてしましますが、wp-config.phpに以下の2行をファイルの2行目(1行目はphpコードの宣言なので)に挿入して起きます

define('WP_HOME','http://example.com');
define('WP_SITEURL','http://example.com');

動作確認できたら次へ

5-4. DNSのAレコードを変更

この辺はどのDNSサービスやサーバーを使うかによるので割愛。 自分はValuedomainでして、該当のAレコードを変更してDNSの浸透を待ちました。大体20分程度かかりましたが、Valuedomainなら5〜30分かかると説明されています。

その他

  • 一応のetckeeper+gitを入れてetcのリビジョン管理
  • etckeeperのデフォルトはbzrなので、/etc/etckeeper/etckeeper.conf の設定を換えておく
  • mosh入れて
  • byobuを動かす

といったことをしたぐらいです。

いつも自鯖で動かしているスクリプトをこちらで動かしても良さそうです。 あとバックアップも自動的に自鯖側に送りたいですね。その部分はAWS S3を使っても良いのかもしれませんが。

というわけで、サーバー移転時に行った作業まとめでした。次にやる時はWordpressから卒業したい。

About Me

買ったり作ったり考えたり試したの日々の記録です