WordPressを手動でアップグレード

WordPressはアップグレードが頻繁で、1年ちょっとしか経っていないのに随分バージョンが進んでしまいました。自動アップグレードはサーバー設定の問題で正常に終了しなかったので、手動アップグレードの方法を調べていましたが、公式ページの方法ではうまくいかなかったので四苦八苦しました。
今日その方法がわかって、3.4.1から3.8に無事アップグレードできました。
バックアップとプラグイン停止
1.WordPressのファイルとデータベースをバックアップする
2.プラグインをすべて停止する
WordPress のコアファイル差し替え
1.WordPressの最新版をダウンロードする
2.wordpress/wp-content/ と wp-config.php 以外を置き換える
3.wordpress/wp-content/languages/ を置き換える
ファイルは上書きしました。
WordPress をアップグレードする
1./wp-admin/update-core.php へアクセスする
データベースの更新画面がでるのでそのまま進める。公式ページでは update.php になっているので、ここが違っているのかも。
2.必要なプラグインを起動する
分かってしまえばあっという間に完了できました。これからは苦労せずに済みそうです。
参考ページ
WordPress を手動でアップグレードするチュートリアル

WordPress 3.2.1 インストール手順

WordPressをインストールしました。今日は本体のみで後日スマートフォン対応しようと思います。
WordPress 3.2.1 インストール手順
WordPress日本語ページから最新版のファイルをダウンロードします。今日現在は「3.2.1」です。
EC-CUBEと同様、今回の構成は次のとおり
CentOS 5.5
PHP 5.2.11
MySQL 5.0.77
ダウンロードした圧縮ファイルを解凍し、中の「wp-config-sample.php」を開き、データベースの接続情報 (データベース名、ユーザー名、パスワード) を変更し、このファイルの名前を「wp-config.php」に変更して保存します。
そして、すべてのファイルをサーバーにアップロードします。
ここで先にデータベースを作成しておきます。(一部伏字にしています)

# mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 127
Server version: 5.0.77 Source distribution
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.
mysql> CREATE DATABASE wp_lists;
Query OK, 1 row affected (0.00 sec)
mysql> GRANT ALL PRIVILEGES ON wp_lists.* to *****@localhost identified by ‘*****’;
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> exit

ブラウザから「wp-admin/install.php」にアクセスします。
WordPress 3.2.1 インストール手順
「サイトのタイトル」と「メールアドレス」を入力し、パスワードは空白にして自動生成させます。
WordPress 3.2.1 インストール手順
次に進むと、「ユーザー名」と「パスワード」が表示されますので、忘れずにメモします。
WordPress 3.2.1 インストール手順
管理ログイン画面が表示されました。
WordPress 3.2.1 インストール手順
ログインすると、問題なくインストールされたようです。
WordPress 3.2.1 インストール手順
サイトのサンプルページも問題ありません。
ここまで来たら、データベースが初期化されないようにinstall.phpは削除しておきます。

EC-CUBE 郵便番号DB登録エラー

EC-CUBE 2.11.2をインストールしてみたが、管理画面の郵便番号DB登録がエラーになった。
EC-CUBE 郵便番号DB登録
システムエラーが発生しました。
EC-CUBE 郵便番号DB登録
どういうふうにエラーを調べようかとネット検索していると、「システム設定」-「パラメーター設定」にある「DEBUG_MODE」を「true」に変更して、画面上にデバッグを表示するようだ。
EC-CUBE 郵便番号DB登録
「data/downloads/KEN_ALL_utf-8.CSV」がないと言っているが、そもそもそんなファイルはない。
コピーして文字エンコードを変更して作ればいいのだろうと、ついでに最新版の辞書をダウンロードしてアップロードした。
郵便番号データダウンロード
EC-CUBE 郵便番号DB登録
画面が出てきたので、自動登録でインストール。
EC-CUBE 郵便番号DB登録
時間がかかりそうだ・・・
EC-CUBE 郵便番号DB登録
10分ほどかかって100%になった途端に画面が真っ白になった。戻らないのか?
EC-CUBE 郵便番号DB登録
再度、メニューから郵便番号DB登録を選択すると、12万行入ったようだ。
これで「自動住所入力」ができるようなったのだけど、なぜか自宅の「929-0335」は登録がないと言われる・・・・データベースにはあるのにね、なぜ?

EC-CUBE 2.11インストール手順

「EC-CUBE」というのは日本企業が開発されているオンラインショップ構築のオープンソースです。
EC-CUBE (株式会社ロックオン)
「2.11」バージョンでスマートフォン対応もしたということで、インストールしてみました。2.4のインストール手順はたくさんありますが、2.11になってまだ日が浅いためか、詳細なインストール手順がなかったので、とりあえず手探りで入れてみました。
今回の構成は次のとおり
CentOS 5.5
PHP 5.2.11
MySQL 5.0.77
まずはホームページから最新版をダウンロードして解凍し、中の「data」フォルダと「html」フォルダをアップロードします。
ECサイトのルートはhtmlフォルダとなります。ここからはブラウザでアクセスしながら、一方でコマンドを実行していきます。
EC-CUBE 2.11.2インストール
最初からエラーメッセージが表示されました。
/home/fsadmin/jsampo/public/eccube/html/../data/cache/ にユーザ書込み権限(777等)を付与して下さい。
2.4バージョンでも書込み権限の必要なフォルダはありましたが、変更されている可能性もありますので、順番に行きます。
data/cacheフォルダに書込み権限を付与します。

# cd /home/fsadmin/jsampo/public/eccube/data
# chmod 777 -R cache

ブラウザをリロード
EC-CUBE 2.11.2インストール
またエラーメッセージが表示されました。

Warning: mkdir() [function.mkdir]: 許可がありません in /home/fsadmin/jsampo/public/eccube/data/class/SC_Initial.php on line 249
Warning: mkdir() [function.mkdir]: 許可がありません in /home/fsadmin/jsampo/public/eccube/data/class/SC_Initial.php on line 253
Warning: mkdir() [function.mkdir]: 許可がありません in /home/fsadmin/jsampo/public/eccube/data/class/SC_Initial.php on line 257
Warning: mkdir() [function.mkdir]: 許可がありません in /home/fsadmin/jsampo/public/eccube/data/class/SC_Initial.php on line 261
/home/fsadmin/jsampo/public/eccube/html/install/tempにユーザ書込み権限(777, 707等)を付与して下さい。

簡単なほうから、html/tempフォルダに書込み権限を付与します。

# cd /home/fsadmin/jsampo/public/eccube/html/install
# chmod 707 -R temp

上のエラーはフォルダ作成権限がないというものですが、data/Smarty/templates_cに書き込み権限がないということなので付与する。

# cd /home/fsadmin/jsampo/public/eccube/data/Smarty
# chmod 777 -R templates_c

EC-CUBE 2.11.2インストール
ようやくインストールの開始画面が表示されました。
EC-CUBE 2.11.2インストール
チェック結果が表示されました。さらに権限エラーがたくさん出ています。
フォルダには書込み、実行権限を、中のファイルには書込み権限を付与します。
中のファイルまですべて表示されているので長いですが、要約すると次のフォルダが対象です。
html
html/user_data 以下
html/upload 以下
data/class 以下
data/Smarty/templates 以下
data/downloads 以下
data/upload/csv
data/cache 以下
コマンドにすると次のようになります。

# cd /home/fsadmin/jsampo/public/eccube/html/user_data
# chmod 606 __default.php
# chmod 707 css
# chmod 606 css/common.css
# chmod 707 -R include
# chmod 707 -R packages
# chmod 606 packages/admin/css/*.css
# chmod 606 packages/admin/img/basis/*.gif
# chmod 606 packages/admin/img/button/*
# chmod 606 packages/admin/img/common/*
# chmod 606 packages/admin/img/contents/*
# chmod 606 packages/admin/img/header/*
# chmod 606 packages/admin/jquery.multiselect2side/js/jquery.multiselect2side.js
# chmod 606 packages/admin/jquery.multiselect2side/jmultiselect2side.html
# chmod 606 packages/admin/jquery.multiselect2side/jmultiselect2side.html
# chmod 606 packages/admin/js/*
# chmod 606 packages/default/css/*
# chmod 606 packages/default/img/ajax/*
# chmod 606 packages/default/img/background/*
# chmod 606 packages/default/img/banner/*
# chmod 606 packages/default/img/button/*
# chmod 606 packages/default/img/common/*
# chmod 606 packages/default/img/icon/*
# chmod 606 packages/default/img/picture/*
# chmod 606 packages/default/img/title/*
# chmod 606 packages/default/sql/*
# chmod 606 packages/mobile/img/header/*
# chmod 606 packages/sphone/css/*.css
# chmod 606 packages/sphone/css/images/*
# chmod 606 packages/sphone/img/button/*
# chmod 606 packages/sphone/img/common/*
# chmod 606 packages/sphone/img/header/*
# chmod 606 packages/sphone/img/icon/*
# chmod 606 packages/sphone/js/*.js
# chmod 606 packages/sphone/js/images/*
# chmod 606 packages/sphone/js/jquery.facebox/*
# chmod 707 -R plugins
# chmod 606 plugins/*.xml
# chmod 606 plugins/google_analytics/*.php
# chmod 606 plugins/google_analytics/admin/*
# chmod 606 plugins/google_analytics/classes/pages/*
# chmod 606 plugins/google_analytics/sql/*
# chmod 606 plugins/google_analytics/tpl/*.tpl
# chmod 606 plugins/google_analytics/tpl/admin/*.tpl
# chmod 606 plugins/recommend/*.php
# chmod 606 plugins/recommend/admin/*
# chmod 606 plugins/recommend/classes/*
# chmod 606 plugins/recommend/img/*
# chmod 606 plugins/recommend/sql/*
# chmod 606 plugins/recommend/tpl/*.tpl
# chmod 606 plugins/recommend/tpl/admin/*.tpl
# chmod 707 -R templates
# cd ..
# chmod 707 -R upload
# chmod 606 upload/save_image/*
# cd ../data
# chmod 707 -R class
# chmod 606 class/*.php
# chmod 606 class/batch/*
# chmod 606 class/db/*.php
# chmod 606 class/db/dbfactory/*
# chmod 606 class/graph/*
# chmod 606 class/helper/*
# chmod 606 class/module/*
# chmod 606 class/pages/*.php
# chmod 606 class/pages/forgot/*
# chmod 606 class/pages/admin/*.php
# chmod 606 class/pages/admin/basis/*
# chmod 606 class/pages/admin/contents/*
# chmod 606 class/pages/admin/customer/*
# chmod 606 class/pages/admin/design/*
# chmod 606 class/pages/admin/mail/*
# chmod 606 class/pages/admin/order/*
# chmod 606 class/pages/admin/ownersstore/*
# chmod 606 class/pages/admin/plugin/*
# chmod 606 class/pages/admin/products/*
# chmod 606 class/pages/admin/system/*
# chmod 606 class/pages/admin/total/*
# chmod 606 class/pages/cart/*
# chmod 606 class/pages/contact/*
# chmod 606 class/pages/entry/*
# chmod 606 class/pages/error/*
# chmod 606 class/pages/forgot/*
# chmod 606 class/pages/frontparts/*.php
# chmod 606 class/pages/frontparts/bloc/*
# chmod 606 class/pages/guide/*
# chmod 606 class/pages/mypage/*
# chmod 606 class/pages/order/*
# chmod 606 class/pages/preview/*
# chmod 606 class/pages/products/*
# chmod 606 class/pages/regist/*
# chmod 606 class/pages/rss/*
# chmod 606 class/pages/shopping/*
# chmod 606 class/pages/unsupported/*
# chmod 606 class/pages/upgrade/*.php
# chmod 606 class/pages/upgrade/helper/*
# cd Smarty
# chmod 707 -R config templates
# chmod 606 templates/admin/*.tpl
# chmod 606 templates/admin/adminparts/*
# chmod 606 templates/admin/basis/*
# chmod 606 templates/admin/contents/*
# chmod 606 templates/admin/css/*
# chmod 606 templates/admin/customer/*
# chmod 606 templates/admin/design/*
# chmod 606 templates/admin/mail/*
# chmod 606 templates/admin/order/*
# chmod 606 templates/admin/ownersstore/*
# chmod 606 templates/admin/pdf/*
# chmod 606 templates/admin/plugin/*
# chmod 606 templates/admin/products/*
# chmod 606 templates/admin/system/*
# chmod 606 templates/admin/total/*
# chmod 606 templates/default/*.tpl
# chmod 606 templates/default/abouts/*
# chmod 606 templates/default/cart/*
# chmod 606 templates/default/contact/*
# chmod 606 templates/default/entry/*
# chmod 606 templates/default/forgot/*
# chmod 606 templates/default/frontparts/*.tpl
# chmod 606 templates/default/frontparts/bloc/*
# chmod 606 templates/default/guide/*
# chmod 606 templates/default/mail_templates/*
# chmod 606 templates/default/mypage/*
# chmod 606 templates/default/order/*
# chmod 606 templates/default/products/*
# chmod 606 templates/default/regist/*
# chmod 606 templates/default/rss/*
# chmod 606 templates/default/shopping/*
# chmod 606 templates/mobile/*.tpl
# chmod 606 templates/mobile/cart/*
# chmod 606 templates/mobile/contact/*
# chmod 606 templates/mobile/entry/*
# chmod 606 templates/mobile/forgot/*
# chmod 606 templates/mobile/frontparts/bloc/*
# chmod 606 templates/mobile/guide/*
# chmod 606 templates/mobile/mail_templates/*
# chmod 606 templates/mobile/mypage/*
# chmod 606 templates/mobile/order/*
# chmod 606 templates/mobile/products/*
# chmod 606 templates/mobile/regist/*
# chmod 606 templates/mobile/shopping/*
# chmod 606 templates/mobile/unsupported/*
# chmod 606 templates/sphone/*.tpl
# chmod 606 templates/sphone/abouts/*
# chmod 606 templates/sphone/cart/*
# chmod 606 templates/sphone/contact/*
# chmod 606 templates/sphone/entry/*
# chmod 606 templates/sphone/forgot/*
# chmod 606 templates/sphone/frontparts/*.tpl
# chmod 606 templates/sphone/frontparts/bloc/*
# chmod 606 templates/sphone/guide/*
# chmod 606 templates/sphone/mypage/*
# chmod 606 templates/sphone/order/*
# chmod 606 templates/sphone/products/*
# chmod 606 templates/sphone/regist/*
# chmod 606 templates/sphone/shopping/*
# cd ../downloads
# chmod 707 backup module tmp update
# chmod 606 KEN_ALL.CSV
# cd ../..
# chmod 707 data/upload/csv
# chmod 707 html
# chmod 606 data/cache/*

ここまで長いとすべて707でも良かったかな。
EC-CUBE 2.11.2インストール
やっと正常だって言われました・・・

>> ○:アクセス権限は正常です。

EC-CUBE 2.11.2インストール
画像がコピーされました。
EC-CUBE 2.11.2インストール
ECサイトの設定を入力します。
EC-CUBE 2.11.2インストール
データベースの設定を入力します。
データベースは「PostgreSQL」と「MySQL」から選択できます。次に進む前にデータベースを作成します。DBユーザはテーブルを作成する権限が必要です。

# mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 127
Server version: 5.0.77 Source distribution
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.
mysql> CREATE DATABASE jsampo_eccube_db;
Query OK, 1 row affected (0.00 sec)
mysql> GRANT ALL PRIVILEGES ON jsampo_eccube_db.* to *****@localhost identified by ‘*****’;
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> exit

EC-CUBE 2.11.2インストール
ログインに成功すると、データベースの初期化画面が表示されます。
EC-CUBE 2.11.2インストール
テーブルや初期データを作成します。
EC-CUBE 2.11.2インストール
サイト情報が表示されましたが、上にエラーがまた出ました。

Warning: fopen(/home/fsadmin/jsampo/public/eccube/data/class/../config/config.php) [function.fopen]: failed to open stream: 許可がありません in /home/fsadmin/jsampo/public/eccube/html/install/index.php on line 989

今まで入力していた設定情報のファイルを作成できないようです。
data/configに書込み権限を付与します。

# chmod 707 /home/fsadmin/jsampo/public/eccube/data/config

EC-CUBE 2.11.2インストール
前に戻って、正常に表示されました。
※前に戻ったときは「データベースの初期化処理を行わない」にチェックします。
EC-CUBE 2.11.2インストール
ここまで3時間手探りでやってきたインストールもようやく終わりです。
EC-CUBE 2.11.2インストール
と管理画面を表示すると・・・

>> /install/index.php は、インストール完了後にファイルを削除してください。

まだ最後の作業が残っていましたね。
html/install/index.phpを削除します。

# rm -f /home/fsadmin/jsampo/public/eccube/html/install/index.php

インストール設定はdata/config/config.phpになりますので、すべての設定が終わった後でURLを変更する場合は、直接変更できます。

phpBB3のインストール手順

社内でメッセージを共有し、かつメール送信する人を選べるアプリはないか?ということで探していたところ、「phpBB」に行き当たったのでとりあえずインストールしてみた。よって、その手順を残しておく。
phpBBとしては「PHPBB.HELP J」が日本語サイトしては有名なようだが、バージョン2で情報が古い。しかし参考になる部分もあるので一通り確認した。
PHPBB.HELP J
http://all.netgamers.jp/index.html
「公式サイト」はもちろん英語。しかし、ダウンロードはここから探す。
http://www.phpbb.com/
1.「Downloads」から以下の4ファイルをダウンロードする。
「Full Packeage」から本体をダウンロード。今日現在の最新版は「3.0.7-PL1」
http://www.phpbb.com/downloads/olympus.php
「日本語」表示用として「LANGUAGE」「SUBSILVER2」「PROSILVER」をダウンロード。後者2つは掲示板の表示スタイル。
http://www.phpbb.com/languages/
2.ダウンロードしたファイルを解凍する。
「phpBB-3.0.7-PL1.zip」を解凍して、「phpBB3」フォルダができる。
「lang_ja.zip」を解凍して、先の「phpBB3\language」フォルダに入れる。
「prosilver_ja.zip」を解凍して、先の「phpBB3\styles」フォルダに入れる。
「subsilver2_ja.zip」を解凍して、先の「phpBB3\styles」フォルダに入れる。
3.FTPアプリで「「phpBB3」フォルダ」をサーバーにアップロードする。
4.アップロードしたファイル・フォルダの所有者を変更する。
# chown apache. /(install folder)/phpBB3/config.php
# chown -R apache. /(install folder)/phpBB3/images/avatars/upload/
# chown -R apache. /(install folder)/phpBB3/cache/
# chown -R apache. /(install folder)/phpBB3/files/
# chown -R apache. /(install folder)/phpBB3/store/
5.ここからはブラウザで続きの作業を。URLは自分のに変更して実行する。
実行ファイルはphpBB2のときと変更されているので注意!
http://(yourURL)/install/index.php
6.はじめに
phpBB3のインストール手順
最初から日本語で表示された。
7.「インストール」タブを選択する。
phpBB3のインストール手順
phpBB3 がサポートするデータベースは
・MySQL 3.23 以上 ( MySQLi も可)
・PostgreSQL 7.3+
・SQLite 2.8.2+
・Firebird 2.1+
・MS SQL Server 2000 以上 (直接または ODBC 経由)
・Oracle
8.インストールの診断
phpBB3のインストール手順
「データベースのサポート」以外はOKになるようにします。
9.データベース設定
phpBB3のインストール手順
データベースをコマンドで作成してから、その情報をここに入力します。
必要な情報は
・ホスト名
・データベース名
・ユーザー名
・パスワード
10.データベースへの接続
phpBB3のインストール手順
成功したら次に進みます。
11.管理人設定
phpBB3のインストール手順
管理者情報を入力します。必要な情報は、
・ユーザー名
・パスワード
・メールアドレス
12.管理人設定のチェック
phpBB3のインストール手順
成功したら次に進みます。
13.コンフィグファイル
phpBB3のインストール手順
成功したら次に進みます。
14.詳細な環境設定
phpBB3のインストール手順
「メール設定」と「サーバ設定」を変更できるが、管理画面であとでも変更できるのでそのまま進みます。
15.データベーステーブルの作成エラー
phpBB3のインストール手順
「データベーステーブルの作成」ステップでエラーが出ると、このように表示されます。この場合はデータベースへのCREATE TABLE権限がなかったため。
一時的に全権をデータベースユーザーに与えて、インストール後に元(SELECT、INSERT、UPDATE、DELETEのみ)に戻します。
16.データベーステーブルの作成
phpBB3のインストール手順
成功したら次に進みます。
17.最終ステージ
phpBB3のインストール手順
すべて終わったら、「ログイン」ボタンでログインしてみます。
18.インストールからログイン
phpBB3のインストール手順
管理画面へログインします。
19.掲示板トップ
phpBB3のインストール手順
管理画面の右上の「掲示板トップ」リンクでこの画面が表示される。
ここからどうやって管理画面へ戻るのか迷ったが、管理者で掲示板にログイン後に、Copyright下の「Administration Control Panel」リンクからもう一度ログインする。
20.掲示板の環境
phpBB3のインストール手順
管理画面でとりあえず修正が必要なのは、「掲示板の環境」である。
・サイト名
・サイトの説明
・掲示板のタイムゾーン
この3つは修正しておこう。
phpBB3のインストール手順
タイムゾーンは「[UTC + 9]日本標準時、韓国標準時、チタ標準時」を選択する。
21.ユーザー登録設定
phpBB3のインストール手順
掲示板への自由参加を許さないのであれば、「アカウントの有効化」を「Admin」に変更し、「一見さん卒業までの投稿数」を「0」に変更する。
以上である。どう使うかはおいおい紹介する。

バックアップはFTPで!

データファイルのバックアップをどうしようか?と考えていました。
主な要望は以下
・homeディレクトリ毎すべてのファイルをバックアップしたい
・バックアップ先はLinkStation(バッファロー製)
・使えるプロトコルは「FTP」
LinuxサーバーからLinuxサーバーへのバックアップであれば「rsync」を使用できるが、相手がFTPしか使えないのでどうするか?
FTPコマンドでは1ファイルずつ操作するので、増えていくファイルに対応するのは至難の業ですね。
そこで、何かないかとさがしていたところ、見つけたのは「lftp」です。rsyncが流行するまで使用されたことがあるようですが、幸いCentOSには標準で入っている(追加のモジュールが必要です)ようです。
以下、設定手順
必要なモジュールをアップデートする
# yum install lftp
lftp
perl-String-CRC32
rootフォルダにシェルスクリプトを作成する
# vi daily_backup.sh

#!/bin/sh
# FTP SYNC
lftp -u ユーザ名,パスワード -e “mirror –reverse –only-newer /home /disk1/backup” ホスト名 << END quit END --- 基本的なコマンドは lftp -u ユーザ名,パスワード ホスト名 となる。ホスト名はIPアドレスでよい。 「mirror コピー元,コピー先」でフォルダの同期が行えるが標準はダウンロードになる。今回はバックアップのLinkStationにアップロードしたいので、「--reverse」スイッチを使用する。またバックアップ節減のため新規ファイルのみ対象とするため、さらに「--only-newer」スイッチを付加する。 lftpコマンドは自身で終了しないので、最後に「quit」を入力する。 シェルの権限変更 # chmod 700 daily_backup.sh 毎日2時に実行する # vi /etc/crontab --- 0 2 * * * root /root/daily_backup.sh --- # service crond restart これでFTPで同期処理できるようになった。 参考サイト: lftpで行う手軽なバックアップ

Virtual Server 2005 R2上のDovecotが落ちる・・・

Virtual Server 2005 R2上にCentOS5.5をインストールして、PostfixとDovecotでメールサーバーを組みました。
が・・・・・Dovecotが頻繁に落ちるのです。
dovecot: pop3-login: Time just moved backwards by 5 seconds. I’ll sleep now until we’re back in present. http://wiki.dovecot.org/TimeMovedBackwards
dovecot: auth(default): Time just moved backwards by 4 seconds. I’ll sleep now until we’re back in present. http://wiki.dovecot.org/TimeMovedBackwards
dovecot: Time just moved backwards by 6 seconds. This might cause a lot of problems, so I’ll just kill myself now. http://wiki.dovecot.org/TimeMovedBackwards
こんなエラーメッセージが続きます。
意味は「時間が○秒戻ったので私(Dovecot)は停止します」って、勝手に死ぬなよー
Virtual Server上に入れたCentOSはクロックの割り込みがうまく行かず、時間がすぐに大幅に狂ってしまいます。
そこでNTPサービスをインストールしましたが、時間が狂いすぎるのか同期できず、仕方なしにバッチで強制的に合わせていました。
# vi /etc/crontab

*/10 * * * * root ntpdate 219.164.211.137 > /dev/null 2>&1

しかし、エラーメッセージにある「http://wiki.dovecot.org/TimeMovedBackwards」を見てみると、このntpdateコマンドがいけないようですね。
急な同期がダメなのは次のホームページが参考になります。
http://www.ys-network.info/?p=996
このページに死んだDovecotを監視するバッチがあったのでセットします。
# vi /root/dovecot_check_restart.sh

#!/bin/sh
HOST=’localhost’
#PORT=110
PORT=143
#HP=@$HOST:$PORT
HP=:$PORT
echo ‘Checking to see if Dovecot is up…’
if ( lsof -Pni $HP -s TCP:LISTEN 2>&1 >/dev/null ); then
echo ‘Dovecot is up’;
else
echo ‘Dovecot is down, restarting…’;
/etc/init.d/dovecot restart
logger -p mail.info dovecot_check_restart.sh restarting Dovecot
fi

# chmod 700 dovecot_check_restart.sh
# vi /etc/crontab

* * * * * root /root/dovecot_check_restart.sh 2>&1 > /dev/null

# service crond restart
これで自動復帰するようになったDovecotですが、実際に接続して使用するとやはり途中で切断されることがしばしば・・・・
さらに調べていると「Virtual Machine Additions For Linux 2.0」で親ホストと同期するのがいいみたい
ということで
参考サイト
http://tnt-blog.at.webry.info/200801/article_3.html
http://www.microsoft.com/downloadS/details.aspx?FamilyID=bf12642f-77dc-4d45-ae4e-e1b05e0a2674&displaylang=en
まずはダウンロードした「VMAdditionsForLinux_32Bit.msi」を親ホスト(Windows Server 2003 R2)にインストールします。
インストールしたフォルダ内のISOファイル(C:\Program Files\Microsoft Virtual Server\Virtual MachineAdditions\VMAdditionsForLinux.iso)をCentOS5.5のCD-ROMにマウントします。
ここからは内部コマンドです。
# mount /dev/cdrom
mount: /etc/fstab や /etc/mtab 内に /dev/hdc を見つけられません
このコマンドだとエラーになりました。
# mkdir /mnt/cdrom
# mount /dev/cdrom /mnt/cdrom/
mount: ブロックデバイス /dev/cdrom は書き込み禁止です、読込み専用でマウントします
CDROM領域を作成してマウントすると読込み専用でマウントされました。
# cd /mnt/cdrom/
[root@fsmail cdrom]# ls
install.sh vmadd-kernel-module-RHEL-2.0-1.i386.rpm
vmadd-full-2.0-1.i386.rpm vmadd-scsi-2.0-1.i386.rpm
vmadd-full-RHEL-2.0-1.i386.rpm vmadd-shutdown-2.0-1.i386.rpm
vmadd-heartbeat-2.0-1.i386.rpm vmadd-timesync-2.0-1.i386.rpm
vmadd-kernel-module-2.0-1.i386.rpm vmadd-x11-2.0-1.i386.rpm
多くのRPMパッケージが入っていますね。
[root@fsmail cdrom]# ./install.sh
シェルがあったので実行してみましたが・・・・何も起きませんでした。
そこで1つずつインストール。依存関係のあったkernel-devel をUPDATE
# yum install kernel-devel
kernel-devel i686 2.6.18-194.11.1.el5 updates 5.4 M
次の順で4つのRPMパッケージをインストールしました。
# rpm -ivh vmadd-kernel-module-RHEL-2.0-1.i386.rpm
# rpm -ivh vmadd-heartbeat-2.0-1.i386.rpm
# rpm -ivh vmadd-shutdown-2.0-1.i386.rpm
# rpm -ivh vmadd-timesync-2.0-1.i386.rpm
残念…..CentOS5.5には入らないようです。
これが入ればそのまま使用と思いましたが、諦めます・・・

Cronでサービスの死活監視

最近仕事でVPSにWeb、メール(Postfix、Dovecot)、Webメール、メーリングリスト(Mailman)とインストールしたのだが・・・
本番が始まると突然のサービス停止に時々見舞われて、極めて不安定な状態です。
どうもメーリングリストの設定なのか相性なのか、ここが起因になって他のサービスが停止するようです。
ということで、死活監視を行うことになったのですが、今回はCronのみで死活監視を行うことに挑戦しました。
cronの編集は「# vi /etc/crontab」を前提としています。
Webの死活監視
0 * * * * root wget -O – (URL) > /dev/null 2>&1 || echo `date +\%Y/\%m/\%d_\%H:\%M:\%S` > /dev/null | tee -a /var/log/service_watch.log | service httpd restart > /dev/null | tee -a /var/log/service_watch.log
毎時0分に起動します。Wgetコマンドにより(URL)に指定したコンテンツを取得、取得できなかった場合は、ログファイル(/var/log/service_watch.log)に時刻とサービス再起動状態を記録します。「tee」コマンドの「-a」はファイルに追記するオプションです。
smtpの死活監視
1,11,21,31,41,51 * * * * root (sleep 2;echo “quit”) | `telnet 127.0.0.1 25 >& smtp_status`;if [ `grep -c ‘220’ smtp_status` != 1 ]; then service postfix restart; logger -t smtp “crond check – smtp service restart”; fi; > /dev/null 2>&1
1分から10分おきに実行します。quit入力を2秒後にセットし、ローカルの25番ポートに接続します。正常に接続できれば、エコーの中に「220」が入るので、それがない場合は接続できなかったと判断して、Postfixの再起動をします。ログは標準のmessageログに指定したメッセージ(crond check – smtp service restart)で書き込まれます。
pop3の死活監視
2,12,22,32,42,52 * * * * root (sleep 2;echo “quit”) | `telnet 127.0.0.1 110 >& pop3_status`;if [ `grep -c ‘Welcome’ pop3_status` != 1 ]; then service dovecot restart; logger -t pop3 “crond check – dovecot service restart”; fi; > /dev/null 2>&1
2分から10分おきに実行します。quit入力を2行後にセットし、ローカルの110番ポートに接続します。正常に接続できれば、エコーの中に「Welcome」(独自のバナーメッセージ)が入るので、それがない場合に接続できなかったと判断して、Dovecotの再起動をします。ログは標準のmessageログに指定したメッセージ(crond check – dovecot service restart)で書き込まれます。
メーリングリストはサービスが起動していても、キューが詰まる現象があったので、1時間ごとに強制的に再起動させるようにしました。
10 * * * * root service mailman restart > /dev/null 2>&1

Apache アクセスログを目的別に分けて出力する方法

携帯サイトで、「Flash待ち受け」「画像待ち受け」「デコメテンプレート」の3種類のダウンロード回数をカウントするサイトを作成したときの話。
それぞれのダウンロード回数をアクセスログの行数(つまり画面に表示した時点でダウンロード)で判断することになった。
その適用方法を紹介します。
# vi /etc/httpd/conf/httpd.conf


#
# For a single logfile with access, agent, and referer information
# (Combined Logfile Format), use the following directive:
#
SetEnvIf Request_URI “decome\.dmt” decome
SetEnvIf Request_URI “decome\.hmt” decome
SetEnvIf Request_URI “decome\.khm” decome
SetEnvIf Request_URI “flash0\.swf” flash
SetEnvIf Request_URI “waiting0\.gif” waiting
CustomLog logs/decome1_log combined env=decome
CustomLog logs/flash_log combined env=flash
CustomLog logs/waiting_log combined env=waiting
CustomLog logs/access_log combined             
→mod_setenvif を使用して該当のファイル名がアクセスログに記録されるタイミングに、各個別ファイルと「access_log」に記録されるようにします。一番後ろにつけた名前(env)によって振分をおこないます。

・・・
CustomLog “| /usr/sbin/rotatelogs /home/fs/www/accesslog/access_log.%Y%m%d 86400 540” combined
CustomLog “| /usr/sbin/rotatelogs /home/fs/www/accesslog/decome0_log.%Y%m%d 86400 540” combined env=decome
CustomLog “| /usr/sbin/rotatelogs /home/fs/www/accesslog/flash_log.%Y%m%d 86400 540” combined env=flash
CustomLog “| /usr/sbin/rotatelogs /home/fs/www/accesslog/waiting_log.%Y%m%d 86400 540” combined env=waiting

→バーチャルホストを使用している場合は、ここにも「CustomLog 」を追加します。最後に「env」を忘れると、うまく振分られないことがありますので、忘れずにつけましょう。


後はできたファイルの行数を数えれば各ダウンロード回数となります。
(注)Basic認証をかけた場合は1回のアクセスで2行追加される場合があります。

NTPサーバの設定

RTX1100の設定不足でNTP同期できなかった問題が解決したところで、NTPサーバの設定をまとめておきます。
OS:CentOS 5.5 最小インストール
NTPサーバ:ビジネスぷらら
プライマリ:ntp2.plala.or.jp
セカンダリ:ntp1.plala.or.jp
NTPをインストールします。
# yum install ntp
今日現在インストールされるバージョンは「4.2.2p1-9.el5.centos.2.1」となります。
設定ファイルを編集します。
# vi /etc/ntp.conf
既存のIPv4、IPv6用の問い合わせをコメントアウトし、すべての外部からの問い合わせの拒否を追加します。
# Permit time synchronization with our time source, but do not
# permit the source to query or modify the service on this system.
#restrict default kod nomodify notrap nopeer noquery
#restrict -6 default kod nomodify notrap nopeer noquery
restrict default ignore

IPv6用のループバックアクセスをコメントアウトします。
# Permit all access over the loopback interface. This could
# be tightened as well, but to do so would effect some of
# the administrative functions.
restrict 127.0.0.1
#restrict -6 ::1

今回使用するビジネスぷららのNTPサーバを追加します。
# Hosts on local network are less restricted.
#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
restrict 219.164.211.137 mask 255.255.255.255 nomodify notrap noquery
restrict 219.164.211.129 mask 255.255.255.255 nomodify notrap noquery

既存のNTPサーバをコメントアウトし、ビジネスぷららのNTPサーバを追加します。
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
#server 0.centos.pool.ntp.org
#server 1.centos.pool.ntp.org
#server 2.centos.pool.ntp.org
server ntp2.plala.or.jp
server ntp1.plala.or.jp

最後にローカルで同期するのを停止します。
# Undisciplined Local Clock. This is a fake driver intended for backup
# and when no outside source of synchronized time is available.
#server 127.127.1.0 # local clock
#fudge 127.127.1.0 stratum 10

自動起動するようにデーモンを設定します。
# chkconfig –level 3 ntpd on
デーモンを起動する
# service ntpd start
10分後ぐらいに同期を確認します。
# ntpq -p
remote refid st t when poll reach delay offset jitter
=============================================================
+ntp2.plala.or.j 202.234.233.109 4 u 30 64 377 14.117 23.350 7.381
*ntp1.plala.or.j 202.234.233.109 4 u 33 64 377 13.983 29.240 3.461
先頭に「*」が付いたNTPが現在の同期サーバーとして、「+」が付いたNTPが予備サーバーとして正常に同期したことを示しています。
現在の時刻を確認して終了です。
# date