Table of Contents
はじめに
サイト運営のため さくらのレンタルサーバ スタンダード を利用してきたのですが、使い始めるとサーバー上にいろいろデータを置きたくなってきて、使用を開始してから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
- exim を削除
- SASL2 の設定
- 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日ほどかかりました。