@pagesのサーバー,復旧。

投稿アップデート情報  追記(5/1)

 なんかね,「Broken Link Checker」が,4/27 @23:15 付けで
     http://atpages.jp/admin/login.php について,「サーバーが見つかりません」
を出してててさ,juneさんとこのサブブログも,SoRAさんところもつながらなくて,ググッたら, @PAGES お問い合わせフォーム というのがあった。

 さらに,今日にいたり,「【重要】【@PAGES】接続障害に関するお詫びとご対応状況のお知らせ」というメールが来た。@15:19になっている。上記の@PAGES お問い合わせフォームにおいては,「【緊急4】(復旧)2012年04月28日 接続障害に関するお詫びとご対応状況のお知らせ(19時現在)」というのが,増えてるが,誰が何をやらかしたんだろう。詳しい経緯は,いまだに不明。

 我が家みたいな自宅サーバじゃないから,有料会員の賠償とか大変だろうなあ。ご愁傷様です。

 今は,我が家のサブや知人関係は,すでにアクセス可能。全部戻ったのかな。しかし,いまのところすごく不安定みたいだ。@21:40

追記(5/1):
 以下のようなメールが来た。
————————————————————————————————————————————–
Subject: 【@Pages】接続障害復旧のお知らせ
From: “[@PAGES]” <atpages@xxxxxxxx.com>
Date: 2012/05/01 17:49
To: o6asan@xxxxxx.com

いつも@Pagesをご利用いただきありがとうございます。
26日からatpages.jpドメインのすべてのサーバに対する接続障害が発生し、
ユーザの皆様には多大なご迷惑をおかけしましたことをお詫び申し上げます。

━━ 目 次 ━━━━━━━━━━━
1.障害と現在の対応状況について
2.atpage.jpについて
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1.障害と現在の対応状況について
ドメイン管理会社から連絡があり、ネームサーバーの登録を復活するという旨の
返信をいただきました。

弊社で確認したところ、atpages.jpドメインでの接続について
一部回復を確認しており、今後順次回復していくと予定しております。

なお、ドメイン管理会社より停止理由を頂いておりますが、継続し
協議を行い、再発防止に努める予定です。

2.atpage.jpについて
本日より、5月末までの間、atpage.jpへ接続された場合には、
atpages.jpへ転送するように設定を行います。
6月以降につきましては、転送処理は行いませんので、
atpages.jpをご利用いただきますようお願いたします。

この度はご不便をおかけし、誠に申し訳ございません。
重ねてお詫び申し上げます。

今後とも@Pagesをどうぞよろしくお願い致します。
————————————————————————————————————————————–
 しかし,何が原因だったのだろうね。サーバのソフトやハードの不具合による接続障害って言うのはよくあるけど,今回は,atpages.jpに対するネーム・サーバの割り当てが消えてる状態だったからねぇ。誰かがものすごーいドジをやらかしたとしか思えないんだが。

 今回のwho isの状態を見たときにすぐに思い出したのは,レジストラの延長を忘れて顧客のSITEが全部使えなくなったって言うどっかのホスティングサービスの話だったが,今に至るもネット上にそんな話は沸いてないから,違うんだろう。ますます謎だ。しかし,大型連休前で,サービス側もクライアント側も,担当者は焦ったろうなぁ。上にも書いたが,本当にご愁傷様です。何とかなったようで,よかったなぁ。

覚え書-#9。

投稿アップデート情報  追記(4/28)  追記2(5/2)

 前稿のように PHP 5.4.1 にしてしまったので,事後報告になるが,ここ4・5日あたふたしていたことを書いておく。

 Apache 2.2.x までは
     [notice] Parent: child process exited with status 3221225477 — Restarting.
だった error_log のメッセージが Apache 2.4.x では
     AH00428: Parent: child process exited with status 3221225477 — Restarting.
になったので, AH00428 でググッて
     Apache randomly stop responding [Solved]を見つけた。そこで,4/23 @18:13,
     AcceptFilter http none   すでに使用中
     EnableSendfile Off   出力ファイルのメモリバッファをapacheからWinに移行。
     EnableMMAP off   出力ファイルのメモリバッファをapacheからWinに移行。
conf に2行を追加してみたが,クラッシュがいっそう激しくなり,@22:28 に仕方なく元に戻した。その後,さらに5.4.0RC8を使っていた。こっちのが,少しましだったので。

 やはりページの処理に無理のかかっているときに落ちる気がするのだが,ページが増えてきたせいもあるだろうか。今のところキャッシュの考慮はまったくやっていないのだが,したら違うだろうか。

 ググッていたら,http://mikenekoworks.com/?p=1512 に
     PHP5.4がセグメンテーションフォルトしまくるんでAPCを3.1.10に更新したら幸せになった。
というのがあった。もちろんLINUXの話だろうし,今回のとは無関係かもしれないが,もしかして APCとかmemcacheとか使ってやったら,私も幸せになれるかしらん。

 まぁ,落ち着いたら,APCとかmemcache の導入も考えてみることにしよう。

追記(4/28):
 以下の構成で安定したよー,ぱちぱち。

  • WindowsXP HE SP3 (x86) 無理やりSP3をあててる
  • Apache 2.4.2 (VC9) (x86) Apache Loungeから
  • MySQL 5.5.23 (x86)
  • ActivePerl 5.14.2.1402 (x86)
  • PHP 5.4.1 (Thread Safe) (VC9) (x86)

追記2(5/2):
 今朝,8時半ごろ, crash + restart が起きた。5日強で1回だから,劇的に減った。ありがちなメモリリークとかも調べてみないといけないかな。

本家のお世話-#32。(PHP5.4.1へアップデート)

投稿アップデート情報  追記(4/28)  追記2(5/2)  追記3(2013/2/14)

 ここのところ,いろいろやってきたが,何をやってもphp5ts.dllがらみのcrashが解決しない。
 気づかないうちに,PHP5.4.1がリリースされていたので,この際,これに変えてみることにした。

 ≪注意≫ 細かい設定は,5.4.0 と同じ。(本家のお世話-#28。参照)

 php.iniについては,5.4.0のものを流用。ただし,;extension=php_sqlite.dll の1行がなくなっているので,このextensionをアンコメントしている場合は,注意が必要。もっとも,削除された拡張モジュールにPECLに移行という但し書きがあったから,残っていたこと自体が,単なる消し忘れだったのかもしれない。
 あと,忘れずに php5apache2_4.dll を展開してできたファイル群に追加すること。<<---- 自戒を込めて。  さて,今差し替えました。crashがなくなるよう祈ってまーす。(4/27 @0:33) 追記(4/28):  php-5.4.1-Win32-VC9-x86.zip に差し替え後,1度もcrashが起きていない。今までは,1日に少ない日でも4回は crash + restart が起きていたから,もう大丈夫ってことだろう。やはり,PHPのバイナリのほうの問題だったみたいだねえ。  現在のサーバの構成は,以下のとおり。

  • WindowsXP HE SP3 (x86) 無理やりSP3をあててる
  • Apache 2.4.2 (VC9) (x86) Apache Loungeから
  • MySQL 5.5.23 (x86)
  • ActivePerl 5.14.2.1402 (x86)
  • PHP 5.4.1 (Thread Safe) (VC9) (x86)

追記2(5/2):
 今朝,8時半ごろ, crash + restart が起きた。5日強で1回だから,劇的に減った。ありがちなメモリリークとかも調べてみないといけないかな。

追記3(2013/2/14):
 php5apache2_4.dll でググって来られる方がおられるようなので,追記。 PHP5.4.10 から php5apache2_4.dll も PHP のオフィシャルバイナリに同梱されるようになりました。

記事にしたほうがよかったかも。(で,Apache 2.4.2)

投稿アップデート情報  追記(4/28)  追記2(5/2)

 今朝,りりさんからコメントをもらって,書いた返事がバカ長くなってしまって,表題のように思った次第。

 Apache Lounge でバージョン 2.4.2 が出たときにステイブル バイナリだということで導入したけど,ちょっと早まったかなと思っていた。Bug #61577の件もあるし,「Apache、セキュリティを修正した最新安定版「Apache HTTP Server 2.4.2」リリース」なんていうのもあるし。

 上のリンクでの 2.4.2 は org での話。この間から,Lounge と org では末尾が一つずれていた。ここで触れられている「Windows版では「AcceptFilter None」の実装が変更されたため、mod_sslとの非互換性が発生している」という件に関しては,Apache 2.4.2 Win32 & Win64 availableの「SSL issue.」の書き込みと,SSL connection error… AcceptFilterを見て,大丈夫だろうと踏んだわけ。実際,その辺に関しては,
     <IfModule mpm_winnt_module>
       AcceptFilter http none
     </IfModule>
を入れて以来,あまり問題なく動いているように見える。

 それで,今日そんなこんなで Lounge の zip を見てたら本家のお世話-#28。で書いたのとリリース日が違うことに気づいた(VC10版も,VC9版も,20 Apr ’12 になっている。UTCで,です。)。
 さっそく落として比べてみたら,ファイルも変わっている。これで, org との枝番のずれは解消されたのかなと思ったが,Changelog Apache 2.4を見る限り,変わったのは,OpenSSL from 1.0.1 to 1.0.1a だけなので,そういうわけでもないみたい。しかし,困るよ。名前は変わらず,こっそりファイルの実体だけが変わってちゃ。

 今日も,crash 4回なので,ちょっと,20日版に差し替えてみます。あまり意味はなさそうだけど。
 org 版 2.4.2 の Lounge版というわけではないみたいだし。(@17:44 入替完了)

追記(4/28):
 結局,上記のApache の差し替えは, crash + restart には無関係だった。
 しかし,PHP 5.4.1 がリリースされたので差し替えたら,その後crashがなくなった。今までは,1日に少ない日でも4回は crash + restart が起きていたから,もう大丈夫ってことだろう。やはり,PHPのバイナリのほうの問題だったみたいだねえ。
 現在のサーバの構成は,以下のとおり。

  • WindowsXP HE SP3 (x86) 無理やりSP3をあててる
  • Apache 2.4.2 (VC9) (x86) Apache Loungeから
  • MySQL 5.5.23 (x86)
  • ActivePerl 5.14.2.1402 (x86)
  • PHP 5.4.1 (Thread Safe) (VC9) (x86)

追記2(5/2):
 今朝,8時半ごろ, crash + restart が起きた。5日強で1回だから,劇的に減った。ありがちなメモリリークとかも調べてみないといけないかな。

本家のお世話-#31。(WordPress3.3.2へアップデート&他)

投稿アップデート情報  追記(4/28)  追記2(5/2)

 WordPress 3.3.2 日本語版が出たので,淡い期待を抱きつつ,アップデートしてみた。淡い期待というのは,
Apache2.4.2とPHP5.4.0で起こっているクラッシュ&再起動に,何かいい影響はないだろうかという淡い期待である。時期的には,もう少し経たないと,新しいPHP仕様への完全対応は無理かもしれないとは思っている。WordPress 3.4に期待すべきかも知れない。

 「本家のお世話-#23。」に書いたように,親サイトの言語設定のせいかブログの「WordPress Updates」のページに日本語版が出てこないので,手動でアップデートした(4.22 @10:11)。今回,ファイル構成に特に変更はないようだ。

 ところで,相変わらずテンポラリ・サーバのままで運用している。

 juneさんから伺った HP Insight Diagnostics を調べてみたら,ちゃんとPC内にリンク先が書いたユーティリティがあったのでチェックしてみたが,異常は見つからなかった。もっとも,これが調べてくれるのは,システムの構成に出てくるデバイスレベルなので,電源の状態とかは分からない。しかしねぇ,どうもいろいろやってみたけど,サーバソフトを動かしていないとかなり負荷をかけても電源落ちはおきなかったから,ハードよりもこっち起因がメインだな。

 ところで,テンポラリ・サーバ上で以下のテストをやっている。
 Apache2.4.2+PHP5.3.10 の構成で2日。(2012.04.17 @1:23から2012.04.19 @1:23まで)
   エラー発生アプリケーション httpd.exe、バージョン 2.4.2.0、エラー発生モジュール php5ts.dll、バージョン 5.3.10.0、
が2度起こった。

 バクジラでなんか不可思議なことが起こり,その後,まともになったと言っていたApache2.4.2+PHP5.4.0RC8 の構成で2日。(2012.04.19 @1:23から2012.04.21 @1:23まで)
   エラー発生アプリケーション httpd.exe、バージョン 2.4.2.0、エラー発生モジュール php5ts.dll、バージョン 5.4.0.0、
が1度起こった。

 Apache2.4.2+PHP5.4.0 の構成で,(2012.04.21 @8:42から)なんだが,2012.04.22 @11:32までですでに4回のクラッシュが起きている。間にRC8を入れてみた効果は何もないようだ。もうちょっとこのままで運用してみるつもり。

 実際に,もともとのサーバ機に戻すときは,掃除もしっかりやっておかないとネ!! 「まだ,やってないのかっ」て,まだなんです(汗)。

追記(4/28):
 以下の構成で安定したよー,ぱちぱち。

  • WindowsXP HE SP3 (x86) 無理やりSP3をあててる
  • Apache 2.4.2 (VC9) (x86) Apache Loungeから
  • MySQL 5.5.23 (x86)
  • ActivePerl 5.14.2.1402 (x86)
  • PHP 5.4.1 (Thread Safe) (VC9) (x86)

 ということで,もともとのサーバ機に戻すことを考えなくては(爆)。

追記2(5/2):
 今朝,8時半ごろ, crash + restart が起きた。5日強で1回だから,劇的に減った。ありがちなメモリリークとかも調べてみないといけないかな。

本家のお世話-#30。(自宅サーバダウン)

投稿アップデート情報  追記(4/28)  追記2(5/2)

 本日サーバがダウンしてまして,今復旧しました。もっとも,もともとのサーバ機は,原因不明(今のところ)の不調で使用できないため,テンポラリ・サーバとして,もらい物PCで書いたLaVieC PC-LC5505Dを使っています。若干レスポンスが違うかもしれません。aguse越えでアクセスできましたので,外部からのアクセスもO.K.だと思います。

 ところで,困るのはもともとのサーバ機です。起動後しばらくすると,電源が勝手に落ちてしまいます。ルータ・イベントビューア・Apache,いずれのログにもめぼしいエラーが出ていません。ハードですかね。

 前稿のように,Apache2.4+PHP5.4にアップグレードしたのですが,それ以来,php5ts.dllクラッシュ起因のApache再起動に悩まされてきました。昨日,帰宅してみたら,電源が落ちていて,イベントのログにびっくりするぐらいのApacheの再起動が記録されていました。昨日から泊りがけの来客があって,あまり長く触れなかったので,もう一度起動してそのままにしておきました。

 夜寝るときに見たら,また落ちてたんで,Apache2.2+PHP5.3に戻して寝たのですが,朝にはまた落ちていました。なんか,感触としては,電源ユニットあたりの問題じゃないかと思っているのですが……
 もともとのサーバ機は,HPのサーバ専用機ではありますが,中古だし,製造から考えると7・8年たつんです。そろそろ,寿命だったところにWeb Server application の過負荷が引き金になっちゃったのではないかと。あくまで,完全な憶測です。もうちょっとしっかり調べて見なくてはいけません。しかし,どっと疲れているところです。

追記(4/28):
 以下の構成で安定したよー,ぱちぱち。

  • WindowsXP HE SP3 (x86) 無理やりSP3をあててる
  • Apache 2.4.2 (VC9) (x86) Apache Loungeから
  • MySQL 5.5.23 (x86)
  • ActivePerl 5.14.2.1402 (x86)
  • PHP 5.4.1 (Thread Safe) (VC9) (x86)

 ということで,もともとのサーバ機に戻すことを考えなくては(爆)。

追記2(5/2):
 今朝,8時半ごろ, crash + restart が起きた。5日強で1回だから,劇的に減った。ありがちなメモリリークとかも調べてみないといけないかな。

本家のお世話-#29。(Apache2.4.2へアップグレード-#2)

投稿アップデート情報  追記  追記2(4/14)  追記3(4/28)  追記4(5/2)

 続きをすぐにアップしようと思っていたんだが,ホークスの試合があって遅くなってしまった(汗)。近頃,Twitterのタイムライン片手に試合を見るというさみしいことをやっているのだが,今日は久しぶりにTwitterを読まずに済んだ。やっぱり,リアルな同席者のほうがいいな(爆)。

 さて,サーバに関してはここからが本番(汗)。

 現在,自鯖の各ソフトのバージョンは

  • WindowsXP Pro SP3(x86) -
  • Apache2.2.22 ✓
  • MySQL5.5.22 -
  • ActivePerl-5.14.2.1402 -
  • PHP5.3.10 ✓

なので,バージョンアップするのは,✓をつけた Apache と PHP ということになる。

 まずは現状をバックアップ。

  • 万一の場合を考えて,Apache2.2.22 ,PHP5.3.10 のフォルダを丸ごとコピー。
  • 同様に,ドキュメントルート内とcgi-bin内のファイルをを丸ごとコピー。
  • phpMyAdmin で WordPressのデータベースを保存。

 Apache2.2.22 ,PHP5.3.10を完全に削除する。どちらも手動インストールなので,削除も手動で行う。

  • Apacheサーバ停止。
  • フォルダ Apache Software Foundation(Apache2.2.22)とPHP(PHP5.3.10)を完全に削除。
  • 今回は,Apacheサーバの場所が変わるので,サービスとして登録してあるApacheを
    httpd.exe -k uninstall
    で削除。

 Apache2.4.2 ,PHP5.4.0 を導入する。

  • 仮構築で作ったApache24,PHPフォルダを丸ごとC:直下にコピーする。
  • コマンドプロンプトから,Apache24/bin に移動し,httpd.exe[Enter] で一応テストラン。
  • 同様に,httpd.exe -k install[Enter] でサービスとして登録。
  • 使い勝手のために,ApacheMonitor.exe のショートカットを作り,スタートアップフォルダに入れる。ショートカットからサーバを停止する。
  • WordPress でmod_rewriteを使っているので,Apacheのhttpd.conf を開け,
    LoadModule rewrite_module modules/mod_rewrite.so
    をアンコメント。
  • 先ほど保存したlogファイルを Apache24/logs にコピーする。
  • Apacheサーバ起動。

 どうも,動きが遅くときどきエラーが出るので,「プログラムの追加と削除」からMicrosoft Visual C++ 2008 関係をすべて削除し,改めてダウンロードしたMicrosoft Visual C++ 2008 SP1 再頒布可能パッケージ (x86)をインストールし,MicroSoft Updateからパッチを当てた。パッケージのバージョンによってエラーが出ることもあるらしいので。

 「案ずるより産むがやすし」とか(笑),なんか無事に構築完了。もっとも,PHP5.4.0が問題なく動くかどうかは,しばらく動かしてみないとわからないので,当面評価は保留だな。

追記:
 errorlogに下記が出ていた。
     (OS 64)指定されたネットワーク名は利用できません。
     : AH00341: winnt_accept: Asynchronous AcceptEx failed.
 この場合,2.2.22までは httpd.conf に
     <IfModule mpm_winnt_module>
       Win32DisableAcceptEx
     </IfModule>
を入れていたところなので,Win32DisableAcceptEx 後継の AcceptFilter を使い,
     <IfModule mpm_winnt_module>
       AcceptFilter http none
     </IfModule>
を入れてみて,様子見。

 Apache2.2.22+PHP5.4.0 のときと比べるとものすごく頻度が減ったが,やはり,
     szAppName : httpd.exe   szAppVer : 2.4.2.0   szModName : php5ts.dll
     szModVer : 5.4.0.0   offset : 000e890f
が起こっている。いろいろググってみた結果,Bug #61577 php5ts.dll crashes when specific extensions are loaded を発見。ドンピシャの記事なんだが,今のところ本当にバグかどうか異論もあるようだし,解決法も見つかっていないみたい。php_mbstring.dll,php_gd2.dll,php_curl.dll が3つそろうとという検証を2人がしているようなので,いよいよのときは,php_curl.dllを無効にしてみるかな。
 ただ,頻度は激減したので,これについてもしばらく様子見の予定。

追記2(4/14):
 php5ts.dllのクラッシュによる再起動があまりに激しいので,Apache2.2+PHP5.3に戻した。しかし,次稿のようなことになって,頭が痛い。

追記3(4/28):
 以下の構成で安定したよー,ぱちぱち。

  • WindowsXP HE SP3 (x86) 無理やりSP3をあててる
  • Apache 2.4.2 (VC9) (x86) Apache Loungeから
  • MySQL 5.5.23 (x86)
  • ActivePerl 5.14.2.1402 (x86)
  • PHP 5.4.1 (Thread Safe) (VC9) (x86)

追記4(5/2):
 今朝,8時半ごろ, crash + restart が起きた。5日強で1回だから,劇的に減った。ありがちなメモリリークとかも調べてみないといけないかな。

本家のお世話-#28。(Apache2.4.2へアップグレード-#1)

投稿アップデート情報  追記3(4/28)  追記4(5/2)  追記5(11/10)  追記6(2013/1/3)

 Apache Loungeで,Apache2.4.x系ステイブルが出た(VC10版は,6 Apr ’12 だけど,VC9版は,7 Apr ’12 になっている。UTCで,です。)ので,早速アップグレードに取り組んでみることにした。ただし,さすがに稼働中のサーバ上では危なすぎるので,ひとまず,ローカルに仮構築。

 完了後は,以下のようになる。

  • WindowsXP Pro SP3(x86)
  • Apache2.4
  • MySQL5.5
  • ActivePerl5
  • PHP5.4

 ≪注意≫ ローカルの構築なので,アップロード作業がすっぽり抜けている。ここを参考に実際のサーバをリモート場所に構築しようと思う方は,ファイルの書き換え後の更新アップロードを忘れないようにしてください。

 さて,Apache2.4.x系のインストールから。

  1. httpd-2.4.2-win32.zip と httpd-2.4.2-win32-VC9.zip のどっちを使うかなと思ったが,後者はMicrosoft Visual C++ 2010 SP1 再頒布可能パッケージ (x86)をインストールしなくていいようなので,こちらを使うことにする。httpd-2.4.2-win32-VC9.zipをダウンロード。
  2. httpd-2.4.2-win32-VC9.zip を展開する。展開ファイル中のReadMe.txtに,「Upgrading to 2.4 from 2.2Overview of new features in Apache HTTP Server 2.4を参照せよ」とあったので,一応見に行った。
    Microsoft Visual C++ 2008 SP1 再頒布可能パッケージ (x86)のインストールは必須であるが,今回の環境においては既に済んでいる。
  3. httpd.conf のカスタマイズから行う。
    • ServerRoot は,Program Files下に変更せず,デフォルトのまま(つまり,c:/Apache24)。自鯖は,WindowsXPなので問題ないが,Windows7あたりでは,UAC(User Account Control)の関係でいろいろと不具合を聞くので,この際今後のことを考えて,デフォルトのままの設定で行こうと思う。
    • ServerAdmin <管理者のメールアドレス> に変更。
    • ServerName <DNS name>:80
    • カスタマイズには関係ないが,以下のところに注意。Apacheのインストールが初めてなら何も思わないだろうが,ここはRun-Time Configuration の変更に伴って書き方の変わったところのひとつだ。ただし,旧の書き方をしている場合でもmod_access_compatによって,下位互換が実現されるらしい。モジュールのところを見ると,
      LoadModule access_compat_module modules/mod_access_compat.so
      はデフォルトで有効になっており,モジュール群のうち一番初めにロードされるようになっている。

      新しい書き方は,以下の通り。
           <Directory />
             AllowOverride none
             Require all denied
           </Directory>

      Apache2.2では,以下のようになっていた。
           <Directory />
             Options FollowSymLinks
             AllowOverride None
             Order deny,allow
             Deny from all
           </Directory>

    • DocumentRoot “c:/Apache24/htdocs”  —>>  DocumentRoot “G:/WEB/example”
      <Directory “c:/Apache24/htdocs”>  —>>  <Directory “G:/WEB/example”>
    • Options Indexes FollowSymLinks  —>>  Options FollowSymLinks
    • AllowOverride None  —>>  AllowOverride directive-type
      directive-typeに使えるキーワードについては,AllowOverride ディレクティブを参照のこと。
    • 自鯖の場合は,rotatelogsを使って,ログを取っているので,
      ErrorLog “logs/error.log”  —>>  ErrorLog “|bin/rotatelogs -l -f logs/error.%Y-%m-%d 86400”
      アクセスログに関しては,AWStatsの関係上commonではなくcombinedを使うので,
      CustomLog “logs/access.log” common  —>>  コメントアウト
      CustomLog “logs/access.log” combined  —>>  アンコメント
      し,さらに,
      CustomLog “logs/access.log” combined  —>>  CustomLog “|bin/rotatelogs -l -f logs/access.%Y.%m.%d 86400” combined env=!no_log
      no_logについては,「本家のお世話-#4。」参照。

      ちょっと下に書いてあるが,テストランの結果,|bin/rotatelog は |bin/rotatelog.exe でないと動かないことが判明。使う場合は必ず拡張子をつけてください。

    • これも,カスタマイズとは関係ないが,
      # Configure mod_proxy_html to understand HTML4/XHTML1
      <IfModule proxy_html_module>
      Include conf/extra/proxy-html.conf
      </IfModule>
      が追加されている。
  4. ディレクトリ Apache24 を,そっくり C:直下に移動する。
  5. コマンドプロンプトを起動し,Apache24\bin に移動して,テストラン。httpd.exe[Enter]
    (OS 2)指定されたファイルが見つかりません。 : AH00089: Couldn’t start ErrorLog p
    rocess ‘bin/rotatelogs /var/logs/errorlog.%Y-%m-%d-%H_%M_%S 5M’.
    AH00015: Unable to open logs
    というエラーが出る。パイプがうまく働いていないのかと思って,
    ErrorLog “C:/Apache24/bin/rotatelogs -l -f C:/Apache24/logs/error.%Y-%m-%d 86400”
    にしてみた。今度は,
    AppName: httpd.exe AppVer: 2.4.2.0 ModName: msvcr90.dll
    ModVer: 9.0.30729.6161 Offset: 0003bdbc
    が出る。いろいろ試してみて,正解はなんと rotatelogs.exe だった。つまり,2.2.22 までは拡張子なしで通っていたのだが,2.4.2 では .exe まで書かないとダメってこと。
    つまり,  ErrorLog “|bin/rotatelogs.exe -l -f logs/error.%Y-%m-%d 86400″  でO.K.
    えーーーーーーーーっ。こんなにハマったのに!!(号泣)
  6. 気を取り直して,サービスとして登録。
    httpd.exe -k install
    使い勝手のために,ApacheMonitor.exe のショートカットを作り,スタートアップフォルダに入れておく。
  7. ドキュメントルートに,Apache24/htdocs にある index.html をコピーし,ブラウザから,http://localhost/ を確認,無事「It works!」が表示された。

 MySQL5.5 をインストールする。

  1. MySQL Community Server から,mysql-5.5.22-win32.msi をダウンロード。
    えーっと,今気が付いたんだが,「JavaScript 有効」にしておくと「» No thanks, just take me to the downloads!」というリンクが表示され,これをクリックすると,各ミラーがわかるって形なのねぇー。いつものPCは,「JavaScript 無効」なので知らなんだ。
  2. インストール方法は,mysql-5.5.18-win32.msi と全く同じ。(MySQLの再導入を参照)

 次に,ActivePerl 5 をインストールする。

  1. ActivePerl-5.14.2.1402-MSWin32-x86-295342.msiをダウンロードする。
    途中に,チェックボックスがあるがすべてデフォルトのままでインストール。
  2. コマンドラインから, perl.exe -v[Enter]で,バージョンなどが表示されれば,インストール成功。pathも通っている。
  3. Apache の httpd.conf を開き,
    ScriptAlias /cgi-bin/ “c:/Apache24/cgi-bin/”  —>>  ScriptAlias /cgi-bin/ “G:/WEB/cgi-bin/”
    <Directory “c:/Apache24/cgi-bin”>  —>>  <Directory “G:/WEB/cgi-bin”>
    この後のところも,Run-Time Configuration の変更に伴い書き方が変わっている。
    cgi-bin 以外のディレクトリで CGI スクリプトを使う気がある場合は, #AddHandler cgi-script .cgi をアンコメントし,場合によっては .pl を追加するなどする必要がある。
    自鯖では,そのつもりがないのでデフォルトのまま。
  4. G:/WEB/cgi-bin に,Apache24/cgi-bin にある printenv.pl をコピーし,テキストエディタで1行目を perl.exe の場所に書き換える。
    #!D:/programs/perl/bin/perl.exe  —>>  #!c:/perl/bin/perl.exe
  5. Apacheを再起動後,ブラウザから,http://localhost/cgi-bin/printenv.pl を確認。環境が表示されれば,成功。 printenv.pl は削除しておく。

 さて,PHP5.4のインストールに入る。Apache2.4.xとの連携はうまくいくだろうか。ここのブログを読んでくれてる方はご存知の通り,アップデートに失敗したまま,放置プレイである。もっとも,うまく動いてくれるかどうかのチェックは,仮構築では無理な気がする。本鯖の場合も,短時間の稼働ではエラーは出なかったし。

  1. http://windows.php.net/ からphp-5.4.0-Win32-VC9-x86.zipをダウンロードし,ファイルを展開する。
  2. 展開ファイル内の php.ini-production を php.ini にリネームし,下表のようにカスタマイズ。
      デフォルト カスタム
    1 ;default_charset = "UTF-8" default_charset = "UTF-8"
    2 ; extension_dir = "ext" extension_dir = "(ドライブ文字):\PHP\ext\"
    3 allow_url_fopen = On allow_url_fopen = Off
    4 ;extension=php_curl.dll extension=php_curl.dll
    5 ;extension=php_gd2.dll extension=php_gd2.dll
    6 ;extension=php_mbstring.dll extension=php_mbstring.dll
    7 ;extension=php_mysql.dll extension=php_mysql.dll
    8 ;extension=php_mysqli.dll extension=php_mysqli.dll
    9 ;extension=php_openssl.dll extension=php_openssl.dll
    10 ;date.timezone = date.timezone ="Asia/Tokyo"
    11 ;sendmail_from = me@example.com sendmail_from = 自分のメールアドレス
    12 ;mbstring.language = Japanese mbstring.language = Japanese
    13 ;mbstring.internal_encoding = EUC-JP mbstring.internal_encoding = UTF-8
    14 ;mbstring.http_input = auto mbstring.http_input = pass
    15 ;mbstring.http_output = SJIS mbstring.http_output = pass
    16 ;mbstring.encoding_translation = Off mbstring.encoding_translation = Off
    17 ;mbstring.detect_order = auto mbstring.detect_order = UTF-8,ASCII,SJIS,EUC-JP,JIS
    18 ;mbstring.substitute_character = none mbstring.substitute_character = none

    14-18 に関しては,デフォルトのままでも動くと思う。特に,17に関しては,自鯖の環境でこうしているので,参考にされる場合は各自対処してください。

  3. 展開時のフォルダ名を PHP にリネームし,そっくり C:直下に移動する。
  4. Apacheが2.4.x になったので,php5apache2_x.dll が変更になる。Apache Lounge から php5apache2_4.dll-php-5.4-win32.zip をダウンロードし,展開後,出来たディレクトリ内の php5apache2_4.dll を PHP 直下に移動する。
         PHP5.4.10 から php5apache2_4.dll も PHP のオフィシャルバイナリに
         同梱されるようになった(12/28追記)
  5. php5apache2_4.dll に同梱の ReadMe.txt に従い,Apache の httpd.conf の LoadModule の一番最後に
    LoadModule php5_module “c:/php/php5apache2_4.dll”
    を追加。PHP のインストールディレクトリ名について,大文字,小文字が入り乱れているが,Windowsは大小を区別しないので,無問題。気になる場合は,自分のインストール環境にそろえてください。
    AddHandler application/x-httpd-php .php
    PHPIniDir “C:/PHP”
    については,httpd.conf の末尾に以下の形で追加。
         <IfModule mod_php5.c>
           AddHandler application/x-httpd-php .php
           PHPIniDir “C:/PHP”
         </IfModule>
    AddType application/x-httpd-php .php だったのが, AddHandler application/x-httpd-php .php となっている。今まで,AddType と AddHandler の違いなんて考えたこともなく,どこかで見かけた通りに設定してきたが, AddTypeAddHandler を読んでみると, AddHandler の方が妥当なようだ。
    <IfModule mod_php5.c> と </IfModule> で挟むのは,Apache モジュール mod_so の書き方が変わっていないので,あったほうがいいかなという程度。
  6. Apache の httpd.conf の
    DirectoryIndex index.html  —>>  DirectoryIndex index.php index.html
  7. テキストエディタで,<?php phpinfo() ?> を記入した test.php を作り,ドキュメントルートにコピー。Apacheを再起動後,ブラウザから http://localhost/test.php を確認し,phpinfo() ページが表示されれば,インストール完了。
    ドキュメントルートの test.php は削除し,php.ini の
    ;disable_functions =  —>>  disable_functions =”shell_exec, suexec, passthru, phpinfo”
    に変更後,Apacheを再起動。

 一応,仮構築はできた。あとは,本番ですな。(ドキドキ)

早速の追記:
 書き忘れです。PHPのパスを通していないが,Apacheから使うだけなら通さなくても問題ない。
 と書いたのだが,近頃ググっていて,パスがらみのトラブルを見たので,WinVista・7・8やWinサーバ系だと違うのかもしれない(12/27追記)。

追記(4/12):
 次稿に書いたが,
     (OS 64)指定されたネットワーク名は利用できません。
     : AH00341: winnt_accept: Asynchronous AcceptEx failed.
に対して,
     <IfModule mpm_winnt_module>
       AcceptFilter http none
     </IfModule>
を入れてから,調子がいいように思える。

追記2(4/14):
 php5ts.dllのクラッシュによる再起動があまりに激しいので,Apache2.2+PHP5.3に戻した。しかし,次々稿のようなことになって,頭が痛い。

追記3(4/28):
 以下の構成で安定したよー,ぱちぱち。

  • WindowsXP HE SP3 (x86) 無理やりSP3をあててる
  • Apache 2.4.2 (VC9) (x86) Apache Loungeから
  • MySQL 5.5.23 (x86)
  • ActivePerl 5.14.2.1402 (x86)
  • PHP 5.4.1 (Thread Safe) (VC9) (x86)

追記4(5/2):
 今朝,8時半ごろ, crash + restart が起きた。5日強で1回だから,劇的に減った。ありがちなメモリリークとかも調べてみないといけないかな。

追記5(11/10):
 PHPの設定について,extra-confを作る話を「覚え書-#12。」に書いたので,そっちも見てください。

追記6(2013/1/3):
 VC11 でビルドの Apache 2.4.6 win32 binary について新記事を書いた。

Windows7 HP 64bit SP1+CentOS6のデュアルブート-#2。

—–さて,《本編》です。—–

 CentOSの理研ミラーに行き,CentOS-6.2-x86_64-bin-DVD1.isoとCentOS-6.2-x86_64-bin-DVD2.isoをダウンロード。ダウンロードファイルの破損などがないか確認後―ハッシュとかを調べておけばいいかな―DVD-Rに焼く。これをDVSM-PC58U2Vを使って起動し,Let’s note J10にインストール。事前にBiosに入って,「起動オプション優先度」の#1を「USB光学ドライブ」にしておくこと。後で,「yum update」をするので,あらかじめランケーブルはつないでおく。

  1. 表示されたメニューの内,「Install or upgrade an existing system」を選んで[Enter]。
  2. メディアテストは時間がかかるので,スキップ。
  3. anacondaが走り出したので,これ以降は,「Shift+PrintScreen」でスクリーンショットが撮れる。 画像はpng形式で「/root/anaconda-screenshots/」ディレクトリに保存される。「Next」ボタンをクリック(図1参照)。
  4. 既定の言語(Japanese(日本語))を選んだのち,「Next」ボタンをクリック(図2参照)。
  5. 既定のキーボード(日本語)を選んだのち,「次」ボタンをクリック(図3参照)。
  6. Basic Storage Devicesを選んだのち,「次」ボタンをクリック(図4参照)。
  7. 自宅のランに参加させるので,ホスト名(デフォルトはlocalhost.localdomain)を設定し,左下の「Configure Network」ボタンをクリックして,以下の設定をする(図5参照)。
    有線の「System eth0」を「編集」ボタンをクリックし,「IPv4のセッティング」をクリックする。
       方式:手動
       アドレス:192.168.xxx.xxx
         <<-- 本機用のアドレス(サーバのアドレス:例192.168.1.2)    ネットマスク:255.255.255.xxx      <<-- 自宅ランのネットマスク(例255.255.255.0)
       ゲートウェイ:192.168.xxx.xxx
         <<-- 自宅ランのゲートウェイ(ルータのアドレス:例192.168.1.1)    DNSサーバ:192.168.xxx.xxx      <<-- 自宅ランのDNSサーバ(ルータのアドレス:例192.168.1.1) 「適用」「閉じる」ボタンをクリックして,元画面に戻り,「次」ボタンをクリック。
  8. タイムゾーンは東京のまま,左下の「システムクロックでUTCを使用」のチェックを外し,「次」ボタンをクリック(図6参照)。
  9. rootパスワードの設定後,「次」ボタンをクリック。
  10. 「Use Free Space」を選び,左下の「パーティションのレイアウトをレビューまたは修正する」にチェックをしたのち,「次」ボタンをクリック(図7参照)。
  11. 特に変更する点はないので,「次」ボタンをクリック(図8参照)。
  12. 「Write changes to disk」ボタンをクリック(図9参照)。
  13. 「デバイスの変更」ボタンをクリックして,ブートローダーのインストール場所を「ブートパーティションの最初のセクタ – /dev/sda6」に変更して,「OK」ボタンをクリックして,元画面に戻ったのち,「次」ボタンをクリック(図10参照)。
  14. インストールオプションから,「Minimal Desktop」「後でカスタマイズ」を選び,「次」ボタンをクリック(図11参照)。
  15. HDDへのインストールが始まり,少し時間がかかる。
  16. インストール終了後,DVDが排出され再起動を促す画面が表示される(図12参照)。ブートローダーを/dev/sda6にインストールしたので,このままではCentOSの起動はできない。DVDを再挿入して,「再起動」ボタンをクリック。
    一般的には,これでもう一度DVDからブートしてくれるらしいのだが,J10ではMACHINE CHECK ERRORというのが表示され,起動アクションが繰り返されたので,DVDを抜いてみたら,Window7が起動した。MBRがそのままなので当たり前だが……
    いずれにしても,このままでは,CentOSを起動できないので,まともに起動したWiondows7を使ってシャットダウン。

 
 実は,上の段階でかなり長いこと悩んだ。何が悪いのかわからなかった。CentOSを再起動しようとしているのに,それが見つからないので何か変なことになるのだろうが,どうしてこんな症状なんだろ。

 ところで,上記の手順で注意すべきところは,10.の「パーティションのレイアウトをレビューまたは修正する」にチェックをするだ。これをしないと,ブートローダーのインストール場所のオプションが出てこないで,MBRに上書きされてしまう。要注意!!!!

 さて,改めてDVDから起動する。

  1. 表示されたメニューの内,「Rescue installed system」を選んで[Enter]。
  2. 既定の言語(English)を選んだのち,「OK」。
    選択肢にJapaneseもあるが,どうせ2バイト文字は表示できないので,選んでも意味なし。
  3. 既定のキーボード(jp106)を選んだのち,「OK」。
  4. レスキュー イメージのあるメディア(ここでは,CD/DVD)を選んだのち,「OK」。
  5. Setup Networkingでは,「No」。
  6. Rescueでは,「Continue」。
  7. 「システムは,/mnt/sysimageとしてマウントされた。root environment でやりたいときは,chroot /mnt/sysimage を使って」などと書かれた確認ダイアログが出るので,「OK」。
  8. 再度「システムは,/mnt/sysimageとしてマウントされた」という確認ダイアログが出るので,「OK」。
  9. Start shell を選んで,「OK」。
  10. bash-4.1# が出たら,dfコマンドを打ってファイルシステムの現状を調べる。
    Filesystem 1K-blocks Used Available Use%  Mounted on
    /dev 1981576 220 1981356 1%  /dev
    none 256000 132616 123384 52%  /tmp
    /dev/loop0 132224 132224 0 100%  /mnt/runtime
    /dev/mapper/vg_o6asan-lv_root
    24484236 2364000 20876488 11%  /mnt/sysimage
    /dev/sda6 495844 32897 437347 7%  /mnt/sysimage/boot
    /dev 1981576 220 1981356 1%  /mnt/sysimage/dev
    /dev/tmpfs 1981576 0 1981576 0%  /mnt/sysimage/dev/shm

    我が家のは,こんな状態だった。

  11. ddコマンドで,GRUBをインストールしたパーティション(ここでは,/dev/sda6)のブートイメージを作成する。Ⅴ.Linux の起動 (by grub)によると,grubの分割方法は 2分割 (stage1 + stage2)と 3分割 (stage1 + stage1.5 + stage2)があるが,Linux と同時に (CD から) インストールした grub では、通常 2分割でインストールされるらしい。というわけで,今回のような場合に作るブートイメージとしては,stage1だけをコピーすればいいらしい。したがって,bs=512,count=1ということになる。
       dd if=/dev/sda6 of=CentOS6.img bs=512 count=1
  12. 256MBのUSBフラッシュメモリを挿す。fdiskコマンドにlオプションをつけて,パーティション情報を一覧表示する。
         fdisk -l
    一番下に,/dev/sdb 262MB というのが表示され,その下に,/dev/sdb1 があるのが分かる。ここに,CentOS6.img をコピーする。
    USBフラッシュメモリ用のマウントポイントを作成する。
         mkdir /mnt/usbfm
    次にマウントするが,先ほどのfdiskにより,ファイルシステムが,W95 FAT32 であることが分かっているので,[ファイルシステム]=-t vfat,[デバイス]=/dev/sdb1,先ほど作った[マウントポイント]=/mnt/usbfm 。したがって,下記でマウントできる。
         mount -t vfat /dev/sdb1 /mnt/usbfm
    cpコマンドで,CentOS6.imgを/mnt/usbfmにコピーする。
         cp CentOS6.img /mnt/usbfm
    lsコマンドに-lオプションをつけて,ファイルがコピーされたこととサイズなどを,確認する。
    USBフラッシュメモリをアンマウントして,抜く。
         umount /mnt/usbfm
    Shellをexitし,DVDを取り出したのち,Rebootを選んで,「OK」。

    コマンドを調べるのには,Linuxコマンド百科辞典が便利です。<<--- お世話になっております。m(_"_)m  

  13. Windows7が起動したら,USBフラッシュメモリからCentOS6.imgをDドライブにコピーし(Cドライブでも別にかまいません),cmd.exeを「管理者として実行」で起動する。
  14. bcdedit /? として調べてみると,createが関係ありそうなので,bcdedit /? /create で確認すると,例に
    bcdedit /create /d “Windows Vista” /application osloader
    というのがある。これを手直しすればいいと思われるが,<apptype>として,
    BOOTSECTOR,OSLOADER,RESUME,STARTUP があるので,この中では,多分,BOOTSECTORだろうと思い,
    bcdedit /create /d “CentOS 6” /application BOOTSECTOR
    として,エントリを作ってみた。
    「エントリ {bcbcfa1a-0646-11e4-8a98-a6d104c38882} は正常に作成されました。」というのが出る。
  15. bcdedit /enum {bcbcfa1a-0646-11e4-8a98-a6d104c38882} で確認してみると,
         identifier     {bcbcfa1a-0646-11e4-8a98-a6d104c38882}
         description     CentOS 6
    だけができている。
    Windows VistaとLinuxを共存させるには(Windows Vista編)を見る限り,オプションとして最低限必要なものは,deviceとpathなようなので,
         bcdedit /set {bcbcfa1a-0646-11e4-8a98-a6d104c38882} device partition=D:
         bcdedit /set {bcbcfa1a-0646-11e4-8a98-a6d104c38882} path \CentOS6.img
    を実行。
    最後に,
         bcdedit /displayorder {bcbcfa1a-0646-11e4-8a98-a6d104c38882} /addlast
    でブートマネージャーの表示順序の最後に追加。
  16. bcdedit[Enter]でリストを確認してみたら,確かに最後に追加されている。
  17. さて,再起動してみるかな。おー,起きましたね。
    では,改めて,Windows7にログインして,新しいブートイメージのバックアップもとっておきますか。
  18. 保存   bcdedit /export F:\Dual\bcd
    確認   bcdedit /store F:\Dual\bcd

 
 こんなとこかな。起こしてみると,Grubの起動一覧にWindows7が入ったまま(上の図10のところで削除しときゃよかった)とかが気になるが,その辺の修正は後回しにしておいて,ひとまず,Windows7のBOOTMGRを使ってのデュアルブートという所期の目的は達成した。yum update も済んだし,めでたし,めでたし。

《蛇足》
 ところで,サーバ練習機なのに「Minimal Desktop」をインストールしたのは,サーバ関係のプログラムについては,後でカスタマイズしていった方が,何を入れるかがはっきりしていいだろうと思ったからで,Desktopにしたのは,Windowsで根っからのGUIっ子になっているから,X が入っていないと不安なのだ(爆)。