※弊社記事はたぶんにPRが含まれますので
話半分で受け取ってください。

WordPress on CentOS – ApacheとPHPの設定

 CentOS on Slicehostシリーズでは、基本的な設定をするところまでやりましたが、ここからは、WordPressを動作させるために必要な環境を整えるところまでやっていきたいと思います。
 まずは、なにはともあれApache(アパッチ)とPHPのインストールから。

 最近ではlighttpd(ライトティーピーディー)やnginx(エンジンエックス)など、Apacheよりも高速でメモリ消費も少ないサーバウェアがありますが、それらは基本的にCGI駆動のPHPです。今までCGI駆動のPHPで苦労してきた経験があるので、素直にApacheを使う事にします。ドキュメントも多いです。

ApacheとPHPのインストール

 そんなわけで、まずApacheをインストールします。インストールするにはroot権限が必要なので、rootに化けてから、以下のコマンドを叩きます。インストールしますかとか聞かれたら、華麗にy。

yum install httpd mod_ssl

 WordPressはPHPで動くので、PHPもインストールします。

yum install php-common php-gd php-mcrypt php-pear php-memchache php-mhash php-mysql php-xml

Apacheの設定

 Apacheの基本的な設定をします。メモリが256MBの場合、Apacheのデフォルトの設定でPHPを動かすのは厳しいので、ついでに設定をいじってメモリの節約をします。
 Apacheの設定は/etc/httpd/conf/httpd.confにあるので、これを開いて編集します。

vi /etc/httpd/conf/httpd.conf

 まずは、(おそらく設定の最初の方にある)ServerTokensを編集します。デフォルトだと404などのエラーを表示するとき、一緒にApacheのVer.やOSの種類が出るので、これを出ないようにします。セキュリティ的には出さなくて良い情報は出さない、ということらしいです。

ServerTokens Prod

 続いてKeepAliveの設定。詳しいことはよく分かりませんが、設定しておくと早くなる場合があるようです。

KeepAlive On
MaxKeepAliveRequests 50
KeepAliveTimeout 3

 次にpreforkの設定。結果だけ見ると単純ですが、実はこの値の設定が一番大変でした。とりあえず結果だけ言うと、icoroでは以下の設定で安定稼働しています。
 かなり少ない数字ですが、これでも3,000PV/day程度なら余裕で処理出来ます。6,000PV/dayくらいになるとちょっと厳しいかも。

<IfModule prefork.c>
StartServers       1
MinSpareServers    1
MaxSpareServers    2
ServerLimit        6
MaxClients         6
MaxRequestsPerChild  4000
</IfModule>

 つづいてモジュールの設定。使わなそうな機能を削ることでメモリをちょっと節約出来ます。使わないモジュールは「#」をつけてコメントアウトします。何を削るかは人によって違うと思いますが、icoroでは以下のようになってます(たぶん)。

#LoadModule auth_basic_module modules/mod_auth_basic.so
#LoadModule auth_digest_module modules/mod_auth_digest.so
#LoadModule authn_file_module modules/mod_authn_file.so
#LoadModule authn_alias_module modules/mod_authn_alias.so
#LoadModule authn_anon_module modules/mod_authn_anon.so
#LoadModule authn_dbm_module modules/mod_authn_dbm.so
LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authz_host_module modules/mod_authz_host.so
#LoadModule authz_user_module modules/mod_authz_user.so
#LoadModule authz_owner_module modules/mod_authz_owner.so
#LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
#LoadModule authz_dbm_module modules/mod_authz_dbm.so
LoadModule authz_default_module modules/mod_authz_default.so
#LoadModule ldap_module modules/mod_ldap.so
#LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
#LoadModule include_module modules/mod_include.so
LoadModule log_config_module modules/mod_log_config.so
#LoadModule logio_module modules/mod_logio.so
#LoadModule env_module modules/mod_env.so
#LoadModule ext_filter_module modules/mod_ext_filter.so
#LoadModule mime_magic_module modules/mod_mime_magic.so
LoadModule expires_module modules/mod_expires.so
LoadModule deflate_module modules/mod_deflate.so
LoadModule headers_module modules/mod_headers.so
#LoadModule usertrack_module modules/mod_usertrack.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule mime_module modules/mod_mime.so
#LoadModule dav_module modules/mod_dav.so
#LoadModule status_module modules/mod_status.so
LoadModule autoindex_module modules/mod_autoindex.so
#LoadModule info_module modules/mod_info.so
#LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule vhost_alias_module modules/mod_vhost_alias.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule dir_module modules/mod_dir.so
#LoadModule actions_module modules/mod_actions.so
#LoadModule speling_module modules/mod_speling.so
#LoadModule userdir_module modules/mod_userdir.so
LoadModule alias_module modules/mod_alias.so
LoadModule rewrite_module modules/mod_rewrite.so
#LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
#LoadModule proxy_http_module modules/mod_proxy_http.so
#LoadModule proxy_connect_module modules/mod_proxy_connect.so
#LoadModule cache_module modules/mod_cache.so
LoadModule suexec_module modules/mod_suexec.so
#LoadModule disk_cache_module modules/mod_disk_cache.so
#LoadModule file_cache_module modules/mod_file_cache.so
#LoadModule mem_cache_module modules/mod_mem_cache.so
#LoadModule cgi_module modules/mod_cgi.so
#LoadModule version_module modules/mod_version.so

 ちなみに、proxy_moduleをコメントアウトするには、/etc/httpd/conf.d/proxy_ajp.confを開いて、その中にあるproxy_ajp_moduleをコメントアウトしておく必要がありました。
 proxy_ajp_moduleをコメントアウトせずにproxy_moduleをコメントアウトすると、apacheのリロードでエラーが出ます。proxy_ajpモジュールがproxyモジュールを使うようです。

#LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

 サーバの名前やファイルの場所などの設定。

ServerAdmin demo@example.com
ServerName www.example.com:80
DocumentRoot /var/www/html

 「ServerAdmin」はサーバ管理者のメルアドを入力します。Apacheからメールが来たり、エラードキュメントにここに入力したメルアドが表示されたりするようです。

 「ServerName」はFQDN(Fully Qualified Domain Name;完全修飾ドメイン、つまりwwwとかがついてるドメインのこと)を入力します。ポート番号(:80の部分)は省略可(でも入力しておくことが推奨されているみたい)。
 もし、ドメインを持っていない場合は、「localhost」等でも良いかも。ちなみに、Slicehostのマニュアルでは「slice honstnameかFQDNを入力する必要がある」と書いてあります。

All you need to do is enter your Slice hostname or a FQDN:

Slicehost Articles: CentOS – Installing Apache and PHP5

 「DocumentRoot」は、ファイルの置いてある場所。www.example.comにアクセスすると、DocumentRootに設定したファイルが表示されるようになります。

 そんなわけで、設定が完了したら、Apacheを起動します。

/etc/init.d/httpd start

 無事に起動したら、システムを再起動したときに、自動的にApacheが起動するように設定しておきます。

chkconfig httpd on

参考

関連する記事