Serversman EntryでWordPressを使ってみた

Serversman@VPS EntryとWordPress3.2.1

Entry プランで、LAMPな環境を作ること自体、多少無理があるのだが、使用メモリーの軽量化を図って、まずは、動作確認を行ったので、記述しておきたい。

実施したこと

  1. レポジトリの導入
  2. PHP,Mysql,phpMyAdmin周りの調整
  3. mysqldのメモリー消費量の節約
  4. phpへのメモリー割り当ての軽量化

実施にあたっては、Serversman@VPS Entry CentOS-64Bit版 シンプルセットを選択したが、このシンプルセットは、覚悟の上で、”何も入っていない”という条件付きでチャレンジすることにした。
Standardプランで、エンジニアセットを選択すると、もれなく、BlueOnyxな環境との戦いになるのだが、これが、結構な曲者で、PHPのバージョンアップは、苦労すれば、できるのだが、そんな苦労をするよりは、Standardプランを選択して、シンプルセットを組み合わせるというのが、最も軽くて、なかなか良い。
しかし、海外のサーバーで、遅いことは遅いけれども、php 5.2.16 + MySQLデータベースが使え、なおかつ、SSH接続が可能といった、サーバーも存在している。(例:http://www.80code.com/)価格は、480円/月である。
それと、同価格帯のServersman@VPS Entryは、初期費用無し+490円/月と、価格的には値頃感がある。
ただし、保証メモリーが、256MB(最大使用メモリー:1GB)と微妙な設定となっている。
まあ、これで、ファイルサーバー+SSHログインな、環境が手に入るのだから、それは、それで、良いのだが、ホームページ構築といった面では、先のレンタルサーバーのほうが、多少は快適かもしれない。

今回のテーマは、ある程度の制約をすり抜けつつ、果たして、LAMPな環境で、何処までのスペックを維持できるかという物。

・準備編

LAMP環境の整備

・最新のphpを使いたいので、レポジトリの導入

# cd /etc/yum.repos.d
# rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
# wget http://rpms.famillecollet.com/remi-enterprise.repo

これで、epel,remiが揃う。

・php周辺のインストール

# yum install php php-devel php-mbstring php-mysql php-pdo php-mcrypt php-pear php-xml -y --enablerepo=epel,remi

・MySQLのインストール

# yum install -y mysql-server --enablerepo=remi

ここでは、まだ、mysqldを起動させないでおく。
このままだと、mysqldを起動しただけで、保証メモリーである256MBを大幅にオーバーしてしまうので、下手をすると、サーバー過負荷と判断されてしまったり、他のユーザーに大きなメモリー負荷があると、自分のHPが表示されないことも、考えられる。

・メモリー消費量の節約
まずは、phpが使用できるメモリーのリミット値を、/etc/php.iniを編集して、Wordpressの最低保証ができるメモリー量に制限する。

# vi /etc/php.ini
以下の、Resource Limitsセクションの457行目あたりに、memory_limit = 128Mと記載されている箇所があるので、
この値を思い切って、16MB程度にしてしまう。

#####################
#   Resource Limits     #
#####################
; Maximum execution time of each script, in seconds
; http://www.php.net/manual/en/info.configuration.php#ini.max-execution-time
max_execution_time = 30

; Maximum amount of time each script may spend parsing request data. It's a good
; idea to limit this time on productions servers in order to eliminate unexpectedly
; long running scripts.
; Default Value: -1 (Unlimited)
; Development Value: 60 (60 seconds)
; Production Value: 60 (60 seconds)
; http://www.php.net/manual/en/info.configuration.php#ini.max-input-time
max_input_time = 60

; Maximum input variable nesting level
; http://www.php.net/manual/en/info.configuration.php#ini.max-input-nesting-level
;max_input_nesting_level = 64

; Maximum amount of memory a script may consume (128MB)
; http://www.php.net/manual/en/ini.core.php#ini.memory-limit
;memory_limit = 128M
memory_limit = 16M ←ここを変更

次に、mysqldのメモリ使用量の節約
以前まではMySQL5.1では「innodb」がデフォルトでは参照されなかったが、MySQL5.5からはディフォルトのStrageEngineとしてInnoDBを使用することになっているため、大幅なメモリ消費量が発生する。(最悪、起動すらしない。)

・MySQLメモリー使用量の削減

# vi/etc/my.cnf
[mysqld]というセクションへinnodbを使用しないように、skip-innodbを指定する。 
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
以下の2行を追加
skip-innodb 
default-storage-engine=MyISAM

以上の設定が終わったら、いよいよMySQLを起動させる。

# service mysqld start
mysqld を起動中:                                           [  OK  ]

起動が確認できたら、使用メモリーを確認してみる。
[root@svn html]# free -m
             total       used       free     shared    buffers     cached
Mem:          1024        248        775          0          0          0
-/+ buffers/cache:        248        775
Swap:            0          0          0
[root@svn html]# service httpd restart
httpd を停止中:                                            [  OK  ]
httpd を起動中:                                            [  OK  ]
[root@svn html]# free -m
             total       used       free     shared    buffers     cached
Mem:          1024        172        851          0          0          0
-/+ buffers/cache:        172        851
Swap:            0          0          0

環境によっては、上記の値は、若干変化するが、MySQLを起動しただけで、メモリー使用量が制限値に引っかからなくすることが、できると思う。
また、必要に応じて、Serversman@VPSの標準機能であるserversman(WebDAV)を起動しないようにしておくとメモリの節約になる。
以上の確認がとれたら、標準的に、MySQL+PHPを起動しても、問題ないと考えるならば、以下を設定しておく。

・最終設定

サービスの起動設定

# chkconfig --level 345 mysqld on
# chkconfig serversman off
# chkconfig smadmd off

あとは、通常のように、MySQLを使うことができる。
以上、少し、キツイ設定ではあるが、この環境で、WordPress 3.2.1 を、動作させることが可能である。
あくまでも、単に、動作しただけなので、余裕や価値が見いだせれば、この方法を用いて、上位プランの

・Serversman Standard + シンプルセット

あたりが、バランスがとれて良いのは、言うまでもないが。。
果たして、継続的に、きちんと動作したかについては、又の機会に、掲載したいと思う。