さくらのスタンダードから VPS へ移行

はじめに

サイト運営のため さくらのレンタルサーバ スタンダード を利用してきたのですが、使い始めるとサーバー上にいろいろデータを置きたくなってきて、使用を開始してから2ヶ月ほどで 10GB の容量がほとんどなくなってしまいました。ちょうど初めに支払った2ヶ月分が経過しようとしていたので、この機会に さくらの VPS (1G) へと移行してみました。HDD は 100GB 使用でき、ルート権限が得られるところもうれしい点です。また、カスタムOS も手軽にインストールでき、ガイドに従い Debian 6 (v.6.0.5, 2012/05/23 現在) に入れ替えました。ハードウェアの簡単な情報は以下の通りです。

$ sudo lshw -short
H/W path          Device      Class      Description
====================================================
                              system     KVM
/0                            bus        Motherboard
/0/0                          memory     96KiB BIOS
/0/401                        processor  Intel(R) Xeon(R) CPU           E5645
/0/402                        processor  CPU
/0/1000                       memory     1GiB System Memory
/0/1000/0                     memory     1GiB DIMM RAM
/0/100                        bridge     440FX - 82441FX PMC [Natoma]
/0/100/1                      bridge     82371SB PIIX3 ISA [Natoma/Triton II]
/0/100/1.1        scsi1       storage    82371SB PIIX3 IDE [Natoma/Triton II]
/0/100/1.1/0.0.0  /dev/cdrom  disk       SCSI CD-ROM
/0/100/1.2                    bus        82371SB PIIX3 USB [Natoma/Triton II]
/0/100/1.3                    bridge     82371AB/EB/MB PIIX4 ACPI
/0/100/2                      display    Technical Corp.
/0/100/3          eth0        network    82540EM Gigabit Ethernet Controller
/0/100/4                      storage    Virtio block device
/0/100/5                      memory     RAM memory

人気の VPS ということで、設定に関しては Web 上にたくさん情報がありますので、それらのガイドに従いました。以下にいくつかお世話になったリンク先をメモしておきます。以下にメモする内容は、参照したリンク先の補足メモですので、ご参考にされる場合はその点ご注意下さい。

なお、支払方法をクレジットで登録すると最初の2週間は無償で利用できますが、以下の制限があります。

  • OP25B設定: メール送信用のポート番号となる外向きの25番ポートを閉じた設定
  • 転送量制限: アップロードのデータ転送帯域を 2Mbps に制限
  • ネームサーバ: 無償提供のネームサーバは利用不可

初期設定

SSH

  • ポート番号変更
  • root ログイン非許可
  • 公開鍵認証

公開鍵を取得するために、クライアントマシンで、

$ ssh-keygen

を実行します。鍵ファイルの名前とパスフレーズをたずねられますが、ファイル名は id_rsa とし、パスフレーズはある程度複雑なものを入力しておきます。これで公開鍵 id_rsa.pub と秘密鍵 id_rsa が生成されます。秘密鍵のパーミッションを変更しておきます。

$ chmod 600 ~/.ssh/id_rsa

次にサーバーに id_rsa.pub をアップロードして、以下のようにリネームし、パーミッションを変更しておきます。

$ mv id_rsa.pub ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys

これで、

$ ssh -i ~/.ssh/id_rsa USER@yoursite.com

でログインできるようになります (ログイン時にパスフレーズが必要)。

~/.ssh/config ファイルを以下のように作成しておくと、キー情報などを省略できます。

Host yourserver
  HostName yoursite.com
  Port xxx
  User yourname
  IdentityFile ~/.ssh/yourname/id_rsa

作成後、

$ chmod 600 ~/.ssh/config

を実行しておきます。これで、

$ ssh yourserver

といった省略形でログインできるようになります。

ローカルでリモートサーバーのファイルを編集する際 Emacs の tramp を使うとを非常に便利です。以下の設定でリモートのファイルを sudo 権限で編集することもできます。

(require 'tramp)
(setq tramp-default-method "ssh")
(add-to-list 'tramp-default-proxies-alist
                '("yourserver" "\\`root\\'" "/ssh:yourname@%h:"))

この設定を読み込むと、

/sudo:yourserver:/etc/apache2/httpd.conf

などルート権限が必要なファイルの編集が可能となります。

ファイアーウォール

  • iptables の設定

データ移動

rsync

旧サーバーのデータが backup ディレクトリにあるとして、

$ rsync -rtlzvogpHAX -e "ssh -p xxx" --rsync-path="sudo rsync" backup USER@your_new_site.com:/var/www/

「ssh -p xxx」の「xxx」はポート番号、「USER」はユーザー名。

なお、サーバー側で sudo 権限で rsync を実行するために /etc/sudoers (# visudo で編集) の末尾に以下を加えました (同じく「USER」はユーザー名)。

USER ALL=NOPASSWD:/usr/bin/rsync

mysql

新しいサーバーで mysql を導入して my.cnf の設定を済ませておきます。

  • export

旧サーバーで、

$ mysqldump データベース名 -u root -p パスワード > ダンプファイル名.sql
  • import

新サーバーで、

$ mysql -u root -p データベース名 < ダンプファイル名.sql

Apache2 + SSL

OpenSSL

Web サーバを SSL に対応させ、通信経路を暗号化します。

  • openssl.conf の編集
  • 秘密鍵の作成
  • SSL設定ファイルの編集

StartSSL

ひとまず丁寧に解説された参照先のみメモしておきます (→ http://futuremix.org/2009/02/startssl)

【追記 2012/05/30】

StartSSL を導入して見ました。 → さくら VPS で無料 SSL 証明書 StartSSL を使う

WordPress

wp-config.php

wp-config.php を適宜書き換えます。

define('DB_NAME', 'NAME');
define('DB_USER', 'USER');
define('DB_PASSWORD', 'PASSWORD');
define('DB_HOST', 'localhost');

「NAME」「USER」「PASSWORD」はそれぞれの環境に合わせ変更します。

パーマリンク

パーマリンクを旧サーバーの設定のまま (日付と記事名) にしておくと 404 エラーが出ました。「ダッシュボード」「設定」「パーマリンク設定」「一般的な設定」で、「日付と投稿名」になっている設定を、一度「デフォルト」にしてから再度「日付と投稿名」にしました。.htaccess に以下の内容が書き込まれエラーがなくなりました。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /wordpress/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wordpress/index.php [L]
</IfModule>

ただし、Rewrite 機能を利用するには、WordPressをインストールしたディレクトリに対して「AllowOverride」に “All” か “FileInfo” が設定されてある必要があるようです (cf. .htaccess ファイル)。

SSL (https) の設定

プラグイン「Admin SSL」を導入します。「Secure my site with SSL」にチェックをいれます。

追加する URL (Additional URLs) に追加したい特定のURLを指定します。ここで追加したページには Facebook や Twitter などの共有ボタンは表示させないようにします。

wp-comments-post.php
wp-admin/
contact

無視する URL (Ignore Urls) に無視したい特定のURLを指定します。

xmlrpc.php

「変更を保存」します。

FTP

主に WordPress の自動アップデート機能のため設定しました。

vsftpd インストール

ftps の設定

$ sudo vi /etc/vsftpd.conf
ssl_enable=YES
force_local_data_ssl=YES
force_local_logins_ssl=YES

ftps に対応していないクライアントからの接続を許可する場合は Explicit モード にして force_local_data_ssl と force_local_logins_ssl を NO にします。

これで WordPress のプラグインを ftps で自動アップデートしようとしたところ wp-content/upgrade に書き込めないというエラーがでました。

$ sudo chown -R www-data:www-data /var/www/blog

を実行しました。

アクセス制限

cgi-bin

cgi-bin にアクセス制限をかけるには、例によって .htaccess によるベーシック認証を設定するのですが、すこしハマりました。

cgi-bin に .htaccess を置き、中身は、

AuthUserFile    /path/to/.htpasswd
AuthGroupFile   /dev/null
AuthName        "Private Area"
AuthType        Basic
Require valid-user

と書きました。

/etc/apache2/sites-available/default をもとに /etc/apache2/sites-available/mysite.com を作成し、cgi-bin ディレクトリに関する設定を以下のように変更しました。

# ... (略)
<Directory "/usr/lib/cgi-bin">
AllowOverride Limit AuthConfig
Options None
Order allow,deny
Allow from all
</Directory>
# ... (略)

/etc/apache2/sites-enabled//etc/apache2/sites-available/mysite.com への symlink を作成するため、以下のコマンドを実行します。

# a2ensite mysite.com

最後に apache2 を再起動します。

# /etc/init.d/apache2 restart

Debian 系では Apache の設定ファイル apache2.conf から /etc/apache2/sites-enabled/ 以下に置かれたすべてのファイルが Include されるようです。また /etc/apache2/httpd.conf は空ファイルで、こちらも大本の apach2.conf で Include されるようです。

メールサーバー

仮登録中だと先に触れましたようにOP25Bになっています (cf. ご利用上の注意)。

postfix + dovecot

Thunderbird

クライアントマシンでのメーラ Thunderbird の設定は次のようにしました。

Hostname Port SSL Authentication
Incoming IMAP mail.yoursite.com 993 SSL/TLS Normal password
Outcoming SMTP mail.yoursite.com 587 STARTTLS Encrypted password

旧サーバー解約

解約申請は、毎月20日に締め切りなので注意が必要です。私はさくらスタンダードを使用して2ヶ月ほどで、データもそれほどありませんでしたが、それでも初期設定を含め VPS への移行は一日数時間作業して、2、3日ほどかかりました。

コメントを残す