さくらのVPS 1.5G、OS UbuntuでWordPressを動かす作業メモ

Ubuntu10.10完全ガイド (INFOREST MOOK PC・GIGA特別集中講座 408)

さくらのVPS 512から、さくらのVPS 1.5Gへ移行した時の作業メモです。

基本的に上から下に向かって作業しています。OSをUbuntuに入れ換えて、WordPressを安定稼働させるのが目標です。

あくまで自分用メモですので、内容の正当性は保証しません。このメモは随時更新されます。参照する場合は参考までにどうぞ。

移行時に下記サイトを参考にさせて頂きました。貴重な情報提供ありがとうございます。

目次

  1. 申し込み
  2. OS再インストール
  3. LAMPセットアップ
  4. ntpセットアップ
  5. mysqlセットアップ
  6. mod_rewrite, mod_expires有効化
  7. Apache設定変更
  8. phpMyAdminのインストール
  9. WordPress用データベースの作成
  10. WordPress用データベースのインポート
  11. WordPressのインストール
  12. ロケールを ja_JP.UTF-8 にする
  13. muninインストール
  14. visitorsインストール
  15. memcacheインストール
  16. WordPressのSSH2接続
  17. muninにMySQL監視を追加(別ページ)
  18. WordPress用のMySQLチューニング(別ページ)

申し込み

さくらのVPS|VPS(仮想専用サーバ)はさくらインターネット」から、「さくらのVPS 1.5G」の利用申請。

2分ほどでVPSが稼働した旨を告げるメールが届く。早い!

OS再インストール

初期OSであるCente OSをUbuntuに差し替える。

VPSコントロールパネル → OS再インストール → カスタムOSインストールへ → Ubuntu 10.04 i386

OSインストールは「SAKURA Internet // サポート – オンラインマニュアル – カスタムOSインストールガイド : Ubuntu 10.04」を見ながらやれば間違いない。

LAMPセットアップ

$ sudo apt-get install lamp-server^

1行打ち込むだけでWebサーバが立ち上がる。便利な時代だね。

ntpセットアップ

ntpインストール後、ntpサーバを変更する。

$ sudo aptitude install ntp
$ sudo vi /etc/ntp.conf
    #file: ntp.conf
    server ntp.jst.mfeed.ad.jp
$ sudo service ntp restart
# ntpが実行されるまで、しばらく待つ
$ ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*ntp2.jst.mfeed. 210.173.176.4    2 u    1   64   77    8.787    1.360   0.296
#行頭が * だったら接続成功

MySQLセットアップ

$ sudo vi /etc/mysql/my.cnf
    #file: my.cnf
    [client]
    default-character-set=utf8  #追加

    [mysqld]
    default-character-set=utf8  #追加
    character-set-server=utf8   #追加

mod_rewrite, mod_expires有効化

mod_rewriteは、URLを書き換えたり、リダイレクトするApacheのモジュール。

mod_expiresは、特定のファイルだけをキャッシュさせるApacheのモジュール。

$ sudo a2enmod rewrite
$ sudo a2enmod expires
$ sudo service apache2 restart

Apache設定変更

Apacheの設定ファイルを書き換える。

$ sudo vi /etc/apache2/sites-available/default
    #file: default
    <VirtualHost *:80>
            ServerName hide10.com
            ServerAdmin webmaster@hide10.com

            DocumentRoot /home/user01/public_html
            <Directory /home/user01/public_html/>
                    Options FollowSymLinks MultiViews
                    AllowOverride all
                    Order allow,deny
                    allow from all
            </Directory>

            ErrorLog /var/log/apache2/error.log

            # Possible values include: debug, info, notice, warn, error, crit,
            # alert, emerg.
            LogLevel warn

            # LogFormat "%h %l %u %t \"%r\" %>s %b %T" common
            SetEnvIf User-Agent "internal dummy connection" dummyconnect
            CustomLog /var/log/apache2/access.log combined env=!dummyconnect
            # CustomLog /var/log/apache2/access.log common

            DeflateFilterNote Input instream
            DeflateFilterNote Output outstream
            DeflateFilterNote Ratio ratio
            LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%) %{User-agent}i' deflate
            CustomLog /var/log/apache2/deflate.log deflate

            ServerSignature Off
    </VirtualHost>
$ sudo /etc/init.d/apache2 restart
$ sudo vi /etc/apache2/apache2.conf
    #file: apatch2.cnf
    KeepAlive On
    MaxKeepAliveRequests 100
    KeepAliveTimeout 15

    <IfModule mpm_prefork_module>
        StartServers          6
        MinSpareServers      25
        MaxSpareServers      30
        MaxClients          100
        MaxRequestsPerChild   2000
    </IfModule>
$ sudo /etc/init.d/apache2 restart

phpMyAdminのインストール

phpMyAdminのインストール。

$ sudo aptitude install phpmyadmin
    #Apache2 → Yes → パスワードx2

特定のIPアドレス以外はアクセスできないようにする。

$ sudo vi /etc/phpmyadmin/apache.conf
    file: apache.conf
    <Directory /usr/share/phpmyadmin>
            Order deny,allow        #追加
            deny from All           #追加
            Allow from IP-ADDRESS   #追加
    </Directory>
$ sudo service apache2 restart

WordPress用データベースの作成

“DB_NAME”, “USER-NAME”, “PASSWORD-USER”は、wp-config.phpに設定する値。

$ mysql -u root -p
    # パスワード入力
mysql> create database DB_NAME;
mysql> create user USER-NAME@localhost identified by 'PASSWORD-USER';
mysql> grant all on DB_NAME.* TO USER-NAME@localhost;
mysql> exit

WordPress用データベースのインポート

うちはDBファイルが25MBもあるので、upload_max_filesizeの設定を変更する。

$ sudo vi /etc/php5/apache2/php.ini
    #file: php.ini
    upload_max_filesize = 30M
    post_max_size = 32M
$ sudo service apache2 restart

memory_limit > post_max_size > upload_max_filesize とする必要があるらしい。

設定変更後、phpMyAdminを利用して、データベースファイルをインポートする。

WordPressのインストール

ゴミを減らすため、新たにインストールし直し、必要なファイルのみ旧サーバからコピーする。

$ wget http://ja.wordpress.org/latest-ja.tar.gz
$ tar zxf latest-ja.tar.gz
$ mv wordpress /home/user01/public_html

wp-config.phpを旧サーバから上書きコピー。

https://api.wordpress.org/secret-key/1.1/salt/ にアクセスして取得したキーに書き換える。

ドメイン移行中は、wp-config.phpに下記設定を追加すると、DBの設定にかかわらず任意のURLで動作する。

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

その他、必要と思われるファイルをコピー。

ロケールを ja_JP.UTF-8 にする

$ sudo apt-get install language-pack-ja
$ sudo locale-gen ja_JP.UTF-8
$ sudo update-locale LANG=ja_JP.UTF-8
$ export LANG=ja_JP.UTF-8

muninインストール

サーバの状態監視ツール munin のインストール。「[Linux][Ubuntu][サーバ] サーバの状態監視ツール munin のインストール – Secondary Storage」を参考にしました。

$ sudo aptitude install munin munin-node
$ sudo vi /etc/munin/munin.conf
    #file: munin.conf
    htmldir /home/user01/public_html/munin
    [hide10.com]
$ cd ~/public_html
$ mkdir munin
$ chown munin:munin munin
$ sudo -u munin vi /home/user01/public_html/munin/.htpasswd
    # http://www.luft.co.jp/cgi/htpasswd.php で作成したパスワードを貼り付ける
    munin:******
$ sudo vi /etc/apache2/conf.d/munin
    #file: munin
    <Directory "/home/user01/public_html/munin">
            Order deny,allow
            deny from all
            AuthUserFile /home/user01/public_html/munin/.htpasswd
            AuthName "munin"
            AuthType Basic
            require valid-user
            Satisfy Any
    </Directory>
$ sudo -u munin munin-cron

visitorsインストール

Apacheのログ解析ツール visitors のインストール。

$ sudo aptitude install visitors
$ mkdir /home/user01/public_html/visitors
$ sudo vi /home/user01/public_html/visitors/.htpasswd
    # http://www.luft.co.jp/cgi/htpasswd.php で作成したパスワードを貼り付ける
    visitors:******
$ sudo vi /etc/apache2/conf.d/visitor
    #file: visitor
    <Directory "/home/user01/public_html/visitors">
            Order deny,allow
            deny from all
            AuthUserFile /home/user01/public_html/visitors/.htpasswd
            AuthName "visitors"
            AuthType Basic
            require valid-user
            Satisfy Any
    </Directory>
$ sudo service apache2 restart

動作テスト。

$ visitors -GKZURDOBXYS -m 50 /var/log/apache2/access.log -P http://www.hide10.com -f /home/user01/public_html/visitors/index.html

logrotateの設定確認。必要なら変更する。

$ cat /etc/logrotate.d/apache2
/var/log/apache2/*.log {
        weekly
        missingok
        rotate 52
        compress
        delaycompress
        notifempty
        create 640 root adm
        sharedscripts
        postrotate
                if [ -f "`. /etc/apache2/envvars ; echo ${APACHE_PID_FILE:-/var/run/apache2.pid}`" ]; then
                        /etc/init.d/apache2 reload > /dev/null
                fi
        endscript
}

cron.dailyに登録。

$ sudo vi /etc/cron.daily/0_visitor
    file: 0_visitor
    #!/bin/sh

    visitors -GKZURDOBXYS -m 50 /var/log/apache2/access.log -P http://www.hide10.com -f /home/user01/public_html/visitors/index.html
$ sudo chmod 755 /etc/cron.daily/0_visitor

memcacheインストール

WordPressを激速に! APC+memcacheで簡単最適化! | それでも地球はまわっている」を参考にmemcacheをインストールする。

$ sudo aptitude install php5-memcache php-apc memcached
$ sudo service apache2 restart

WordPress用プラグイン「WordPress › WP Memcached Manager « WordPress Plugins」をインストールし、「Server IP / Hostname: -> 127.0.0.1」、「Server Port: -> 11211」に接続して動作を確認する。

WordPressのSSH2接続

WordPress: SSH2の暗号鍵を使った自動アップデートを有効にした – Hinemosu」を参考に、SSH2を使ったWordPressアップデートをセットアップする。

$ sudo aptitude install libssh2-ph
$ sudo service apache2 restart

wp-config.phpを編集し、WordPressのアップデート情報入力を省略する。

$ vi /home/user01/public_html/wp-config.php
    #file: wp-config.php
    define('FTP_PUBKEY','/home/user01/.ssh/id_rsa.pub');
    define('FTP_PRIKEY','/home/user01/.ssh/id_rsa');
    define('FTP_USER','user01');
    define('FTP_PASS','');
    define('FTP_HOST','localhost:xxxx');