カテゴリー別アーカイブ: CentOS

apacheの設定

レンタルサーバにて運営しているこのブログ。
時々応答しなくなったり、すごい時間がかかるようになることがある。
気になったらapacheの再起動をしてたんだけど、設定を見直した。

調べてみると、プロセスがメモリを食い続けていることが原因で応答が遅くなるケースがあるとか。
早速自分のサーバでもチェックしてみた。

$ ps aux | grep httpd
root       887  0.0  0.1  65448   844 pts/0    R+   22:42   0:00 grep httpd
apache    9335  0.0  1.1 395752  6140 ?        S    May22   0:01 /usr/sbin/httpd
apache    9343  0.0  5.0 403980 26512 ?        S    May20   0:05 /usr/sbin/httpd
apache    9345  0.0  6.4 398860 33896 ?        S    May20   0:04 /usr/sbin/httpd
apache    9347  0.0  5.7 397852 30260 ?        S    May20   0:05 /usr/sbin/httpd
apache    9349  0.0  3.7 398860 19904 ?        S    May20   0:05 /usr/sbin/httpd
apache    9350  0.0  3.9 401948 20872 ?        S    May20   0:05 /usr/sbin/httpd
apache   12695  0.0  3.0 397852 16064 ?        S    May20   0:05 /usr/sbin/httpd
apache   12698  0.0  6.9 398876 36256 ?        S    May20   0:06 /usr/sbin/httpd
apache   15303  0.0  7.4 405004 38920 ?        S    May20   0:05 /usr/sbin/httpd
apache   18743  0.0  1.4 394728  7500 ?        S    May23   0:01 /usr/sbin/httpd
apache   18745  0.0  0.9 399884  5152 ?        S    May23   0:01 /usr/sbin/httpd
apache   18746  0.0  1.2 397852  6576 ?        S    May23   0:01 /usr/sbin/httpd
apache   18747  0.0  4.5 397832 23708 ?        S    May23   0:01 /usr/sbin/httpd
apache   18750  0.0  4.9 399944 26200 ?        S    May23   0:01 /usr/sbin/httpd
apache   18752  0.0  7.0 396784 37124 ?        S    May23   0:01 /usr/sbin/httpd
apache   18754  0.0  1.6 396792  8540 ?        S    May23   0:02 /usr/sbin/httpd
apache   18755  0.0  6.8 398876 35828 ?        S    May23   0:01 /usr/sbin/httpd
apache   18756  0.0  1.0 396872  5364 ?        S    May23   0:01 /usr/sbin/httpd
apache   18757  0.0  0.8 393712  4644 ?        S    May23   0:01 /usr/sbin/httpd
apache   18758  0.0  6.5 398860 34460 ?        S    May23   0:00 /usr/sbin/httpd
root     30188  0.0  0.6 355816  3288 ?        Ss   May19   0:00 /usr/sbin/httpd

めちゃくちゃプロセスが起動してる。
試しに再起動。これも時間がかかった。しかもなんかメッセージ出てるし。

# /etc/rc.d/init.d/httpd restart
httpd を停止中:                                            [  OK  ]
httpd を起動中: httpd: Could not reliably determine the server's fully qualified domain name, using 163.43.164.119 for ServerName
                                                           [  OK  ]

ここでもう一度プロセスをチェックしてみる。

[root@rad-xen-vweb7 ~]# ps aux | grep httpd
root       987  0.3  2.8 355064 14768 ?        Ss   22:48   0:00 /usr/sbin/httpd
apache     989  0.0  1.3 356088  7264 ?        S    22:48   0:00 /usr/sbin/httpd
apache     990  0.0  1.3 356088  7264 ?        S    22:48   0:00 /usr/sbin/httpd
apache     991  0.0  1.3 356088  7264 ?        S    22:48   0:00 /usr/sbin/httpd
apache     992  0.0  1.3 356088  7264 ?        S    22:48   0:00 /usr/sbin/httpd
apache     993  0.0  1.3 356088  7264 ?        S    22:48   0:00 /usr/sbin/httpd
apache     994  0.0  1.3 356088  7264 ?        S    22:48   0:00 /usr/sbin/httpd
apache     995  0.0  1.3 356088  7264 ?        S    22:48   0:00 /usr/sbin/httpd
apache     996  0.0  1.3 356088  7264 ?        S    22:48   0:00 /usr/sbin/httpd

おお、かなり使用量減ってる。

ってことで、設定を見直すことにした。
httpd.confを修正すればいいみたい。
で、暫定の設定がこれ。

# prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# ServerLimit: maximum value for MaxClients for the lifetime of the server
# MaxClients: maximum number of server processes allowed to start
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule prefork.c>
StartServers       6
MinSpareServers    6
MaxSpareServers    6
ServerLimit      100
MaxClients       100
MaxRequestsPerChild  1024
</IfModule>

これでしばらく様子を見てみます。

ちなみに設定、再起動後のプロセスはこうなってました。

# ps aux | grep httpd
root      1160  0.4  2.7 355064 14680 ?        Ss   23:05   0:00 /usr/sbin/httpd
apache    1161  0.0  1.3 355064  7204 ?        S    23:05   0:00 /usr/sbin/httpd
apache    1162  0.0  1.3 355064  7204 ?        S    23:05   0:00 /usr/sbin/httpd
apache    1163  0.0  1.3 355064  7204 ?        S    23:05   0:00 /usr/sbin/httpd
apache    1165  0.0  1.3 355064  7204 ?        S    23:05   0:00 /usr/sbin/httpd
apache    1166  0.0  1.3 355064  7204 ?        S    23:05   0:00 /usr/sbin/httpd
apache    1167  0.0  1.3 355064  7204 ?        S    23:05   0:00 /usr/sbin/httpd
root      1169  0.0  0.1  65448   840 pts/0    R+   23:06   0:00 grep httpd

ちゃんと起動時のプロセスが6個になってる。

PHPのアップデート

レンタルサーバー(CentOS5.8)にデフォルトでインストールされていたPHP5.1.6。
最新のWordPressを利用するには5.2.4以降のインストールが必要。
以下の手順でPHPのバージョンを変更した。

# yum erase php
# yum erase php-common

次に以下のコマンドでPHP5.3をインストール。

# yum install php53
# yum install php53-*

その後apacheを再起動。

# /etc/rc.d/init.d/httpd restart

WordPressの移行メモ

自宅サーバーにて運営していたブログですが、家庭の事情でネットが切断されることが多かったり、DDNSがうまく動作してくれないことがたまにあったりで、使いたいときに使えないことが多かったので、この度レンタルサーバーを借りて、そちらに移転することにしました。

1.レンタルサーバーの申し込み

レンタルサーバーはSaaSesという所のVPSサービス、Osukiniサーバーを選びました。
2012年4月30日までは初期費用0円キャンペーン中だったので一番安い月450円のLTプランを選びました。
OSはCentOS 64bitを選びました。

SaaSes

2.WordPressのコアファイルを抜き出す

旧サーバーのWordPressのコアファイルはApacheのドキュメントルート下のwordpressディレクトリに配置してました。
このディレクトリごと、新サーバーのApacheドキュメントルート下にごっそりと移植します。
僕はあまり小難しいことはできないのでSFTPを使って、いったん作業しているローカルにフォルダをコピーした後、またSFTPで新サーバーにコピーして、ドキュメントルート下に配置しました。

3.MySQLよりWordPressのデータベースを移植する

このデータベースの移植に昨夜インストールしたphpMyAdminを利用しました。
まず旧サーバーのデータベースをエクスポート。


これでデータベースがエクスポートされ、localhost.sqlというファイルがダウンロードできます。
この.sqlファイルは、テーブルのCreate文や、Insert文などのSQLが書かれています。
このダウンロードされたファイルを新サーバーのphpMyAdminでインポートします。

ここで問題が発生。php.iniがデフォルトなので、upload_max_filesizeが2M。
先ほどダウンロードしたlocalhost.sqlは2.9M。アップロードに失敗しました。
なので、php.iniを編集。

# vi /etc/php.ini

以下の部分を編集。

; Maximum allowed size for uploaded files.
; http://www.php.net/manual/en/ini.core.php#ini.upload-max-filesize
; upload_max_filesize = 2M デフォルト値
upload_max_filesize = 4M

Apache2のリスタート

# /etc/rc.d/init.d/httpd restart

これでアップロードでき、新サーバーのMySQLにデータベースを取り込むことができました。

4.PHPのアップデート

データの移行が完了したので、t-wata.com(新サーバー)/wordpress/にアクセスしてみました。
しかし、PHPのバージョンが古いため対応してないとのメッセージが表示されました。
移行するWordpressのバージョンは3.3。
デフォルトでインストールされているPHPのバージョンは5.1.6。

そのため、以下の方法でPHPのバージョンを5.3.3にアップデート。
PHPのアップデート

5.WordPressのデータベースの設定を変更

PHPのアップデートをしたので、再びt-wata.com(新サーバー)/wordpress/にアクセスしてみました。
するとデータベースエラーが発生して、見ることができない。
これはWordPressの設定ファイル無いの、データベースの設定項目の情報が古いままであったことが原因でした。

# vi /var/www/html/wordpress/wp-config.php

以下の部分を編集して、設定。

// ** MySQL 設定 - こちらの情報はホスティング先から入手してください。 ** //
/** WordPress のためのデータベース名 */
define('DB_NAME', '(データベース名)');

/** MySQL データベースのユーザー名 */
define('DB_USER', '(ユーザー名)');

/** MySQL データベースのパスワード */
define('DB_PASSWORD', '(パスワード)');

/** MySQL のホスト名 */
define('DB_HOST', 'localhost');

/** データベースのテーブルを作成する際のデータベースのキャラクターセット */
define('DB_CHARSET', 'utf8');

/** データベースの照合順序 (ほとんどの場合変更する必要はありません) */
define('DB_COLLATE', '');

これで再び、t-wata.com(新サーバー)/wordpress/にアクセスしてみると、無事表示されました。

6.サブディレクトリをルートディレクトリとして表示

今の設定では、ルートディレクトリhttp://t-wata.comにアクセスすると、apacheのデフォルトのindexが表示されてしまうので、設定を変更。
WordPressの設定画面から、サイトアドレスをhttp://t-wata.comになっていることを確認。
そして、wordpressディレクトリ内にあるindex.phpをドキュメントルートにコピー。
コピーしたindex.phpの下記部分をWordPressの設定画面で設定したサイトアドレスに変更して保存。

/** Loads the WordPress Environment and Template */
require('./wordpress/wp-blog-header.php'); //ここを編集

これでhttp://t-wata.comにアクセスすると、トップページが表示されるようになりました。

7.ディレクトリ所有者の変更

wordpressディレクトリの所有者がrootになっていたため、記事を投稿する際に画像のアップロードができませんでした。
そこで以下のコマンドでwordpressディレクトリの所有者を変更。

# chown -R apache:apache wordpress

これで画像もアップロードできるようになりました。

とりあえず、現在の設定はここまで。
今のところ、以前と変わらず動いているようなので、大丈夫かな。