カテゴリー
Windows

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

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

 PHP 5.4.1に変更―04.23(月)―してから,例のcrashは2度起こった。まあ,安定していると言ってもいいだろう。で,May-04 01:09:54 UTC にPHP 5.4.2 がリリースされたので,アップデートしてみた。( @00:30)

 php.iniについては,5.4.1と違いがないので,これをそのまま使う。php5apache2_4.dll をPHPディレクトリに追加するのを忘れないこと。もちろん,Apacheの再スタートもね。

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

カテゴリー
Windows

本家のお世話-#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 のオフィシャルバイナリに同梱されるようになりました。

カテゴリー
Windows

記事にしたほうがよかったかも。(で,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回だから,劇的に減った。ありがちなメモリリークとかも調べてみないといけないかな。

カテゴリー
Windows

本家のお世話-#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回だから,劇的に減った。ありがちなメモリリークとかも調べてみないといけないかな。

カテゴリー
Windows

本家のお世話-#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. コマンドプロンプトを起動し,Apache24bin に移動して,テストラン。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 = "(ドライブ文字):PHPext"
    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 について新記事を書いた。

カテゴリー
Linux

Crusoe,TM5800。

 現時点で,PHP5.4.0へアップデートには成功していないし,httpd 2.4の導入もやっていない。<<– Apache Loungeでステイブルなバイナリがまだ出ていないし,自分でビルドするスキルもないので。

 しかし,PHP5.4.x系には別の問題もある。windows.php.netには,PHP 5.4 series will be the last versions to support Windows XP and Windows 2003. We will not provide binary packages for these Windows versions anymore after PHP 5.4.と書いてある。自鯖のOSはWindowsXP Sp3なので,これのサポート自体が2014年4月8日で終了。WinXPとWin7の関係から言っても,WinXPのライフサイクルがこれ以上延びるというのは考えにくい。というわけで,どっちにしても新しいサーバOSを考えなくてはいけない。この際,WAMP系からLAMP系に替えるかと思って,サーバディストリの人気ランクを調べてみた。
 最近はCentOS(The Community ENTerprise Operating System)の人気が上がってきているみたい。1年あれば,かなりまともに運営できるところまで練習できるかもしれん(汗)。

 早速,CentOSのサイトに行き,CentOS-5.8-i386-bin-DVD-1of2.isoとCentOS-5.8-i386-bin-DVD-2of2.isoを落としてきた。実際には,理研のミラーからダウンロードしたんだが。インストールの練習機が,例のLoox T93B。CPUがCrusoeのTM5800でPAE(Physical Address Extension)をサポートしていないので,最新の6.x系はインストールできない。これについてはQuestions about CentOS 6の3.に書いてあった。
 ところが,あらかたインストールがすんだあたりで「不適切なアーキテクチャ用のパッケージ」がでる。改めてググってみると,CentOSは5からCrusoeのサポートをしていないみたい。しかし,来年以降のリニューアルサーバの練習するのに,CentOS4まで戻るってのもどうなんだろう。

 Ubuntuは10までは動いた記憶があるので,そっちにするかな。みなさん,どう思います?
 えっ,練習機を変えろって。うーん,それが正解かもしれない(爆)。

カテゴリー
everyday life

Apache HTTP Server 2.4.1

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

 ついに,出ましたねぇ,2.4.x系お初のGA(Apache HTTP Server 2.4.1)。

 orgでは,2/21リリース。loungeでは,同じ枝番で2/15になっているが,こっちのほうは,「this is fairly new」となっており,GAではないようだ。

 実際,Apache HTTP Server 2.4.1 Releasedにも,「重要: Windowsユーザへ:Win32DisableAcceptExの代わりにAcceptFilter Noneを使うことになっているが,mod_sslとの同時使用時に問題があるようだ。今のところ,Apache 2.4.1は,まだすべてのWindowsサーバをカバーしているとは言えない。httpd 2.4のステイブルなWindowsバイナリのディストリビューションはまだないが,近いうちに種々の依存関係が解決されて,そちらのほうもベータからGAになるだろう。」という記述がある。

追記(4/11):
 Apache LoungeでステイブルなApache2.4.x系が出たので,新しい記事を本家のお世話-#28。本家のお世話-#29。に書いた。

カテゴリー
Windows

本家のお世話-#26。(Apache2.2.22へアップデート)

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

 待っていたApache Lounge版のApache2.2.22が出た。早速ダウンロード。

 News & Hangoutによると,APR 1.4.6 と zlib 1.2.6 待ちだった模様。Changelog Apache 2.2はこんな感じ。

 いろいろ変わっているんだが,httpd.confで変わっているのは,次の部分だけ。
     ***** Apache2.2.21
      427: # MaxRanges: Maximum number of Ranges in a request before
      428: # returning the entire resource, or 0 for unlimited
      429: # Default setting is to accept 200 Ranges
      430: #MaxRanges 0
     ***** Apache2.2.22
      427: # MaxRanges: Maximum number of Ranges in a request before
      428: # returning the entire resource, or one of the special
      429: # values ‘default’, ‘none’ or ‘unlimited’.
      430: # Default setting is to accept 200 Ranges.
      431: #MaxRanges unlimited
     *****

 httpd.exeをちょっと停止。展開したファイルを現在のものと置き換え。いつもログファイルの保存を忘れるので,注意。httpd.exeを再起動。

 初めてインストールする場合は,本家のお世話-#14。(Apacheの再導入)を参照してください。

追記(4/11):
 Apache導入についての新しい記事を,本家のお世話-#28。本家のお世話-#29。に書いた。

カテゴリー
Windows

本家のお世話-#22。(COMODO Firewallを使う)

 今日,思い出して,本家のお世話-#14。の追記に,ZoneAlarm10 Free Firewall をサーバのファイアーウォールとして使うのを断念したことを書いた。

 で,サーバのファイアウォールをどうするかということになる。本家のお世話-#13。でも書いたように,「ウイルスバスター・クラウド」+「ファイアウォールチューナー」というのはサーバのファイアウォールとしては使いにくい。まぁ,本家のお世話-#14。に書いた不具合がなくても,インストールしてみた ZoneAlarm10 Free Firewall も決して使いやすくはなかったが。

 ああでもないこうでもないとフリーファイアーウォールソフトをあさってみて,結局,COMODO Firewall Free Versionを使うことにした。

 インストールしてみたところインターフェースは割と分かりやすい。インストーラは少しカスタマイズしてインストールした。手順を画像であげておく。



 「COMODO Firewall #1」で[Agree and Install]をクリックすれば,インストールが始まるのだが,その前にボタンの下にあるリンク[Customize Installer]をクリックして,オプションを適宜設定したのち,「COMODO Firewall #1」に戻ってインストールするという手順を取った。使いだしたばかりで,手探り状態のところもあるので,参考にはならないかもしれません。

カテゴリー
everyday life

本家のお世話-#21。(rotatelogsを使う)

投稿アップデート情報  追記(12/17)  …  追記3(12/28)  追記4(2012/4/11)  追記5(2013/1/9)

 本家のお世話-#3。でrotatelogs.exeについての不安を書いたのだが,今回Apache2.2/CHANGES.txtを読んでいたら何となく大丈夫かなと思えたので,rotatelogsを参考にログを記録してみることにした。

 httpd.confの中はこんな感じ。
   CustomLog “|bin/rotatelogs -l -f logs/access.%Y.%m.%d 86400” combined
   ErrorLog “|bin/rotatelogs -l -f logs/error.%Y-%m-%d 86400”
combined を使うのは,AWStats を使うから。

 ということで,AWStatsも再導入する。導入方法については,AWStats7.0へのアップグレード。を参照してほしい。
 AWStatsのデータ更新のために,中に下の3行を記入したbatファイルを作り,タスクスケジューラで毎日0時に前日のアクセスログについて実行してやる。
   @echo off
   perl [絶対パス]awstats.pl -config=o6asan.com -update

追記(12/17):
 「AWStats7.0へのアップグレード。を参照してほしい。」と書いたんだけれども,かのページの「5. ドキュメントルートにawstatsフォルダを作り,その中にcss,icon,classes,jsの4フォルダを移動する。」については,ちょっと注意を要する。
 今回の場合,ドキュメントルートにはWordPress3.3があってしかもマルチサイトとして使われているので,Rewriteが有効になっている。で,Rewriteを使うとなれば,Rewrite有効のディレクトリでは,httpd.confの Options のところには FollowSymLinks かなんかがいるわけだけれど,AWStatsのhttpd_confではOptions Noneになっているから,当然エラーが出る。awstatsフォルダの直下に.htaccessを入れて Options FollowSymLinks にしてやるのも一つの手だけど,どうせ httpd-awstats.conf を作って Alias を切ってやらないといけないから,この際,awstatsフォルダそのものをドキュメントルートの外にしてやることにした。

 それから,「タスクスケジューラで毎日0時」と書いたが,いざまわしてみたらrotatelogs.exeの動きとぶつかってなんか変なので,batは0:05に流してやることにした。結局,あんまり意味がなさそうなので,元に戻した。( <--- 追記2 12/20)  書き忘れたが,logs/access.%Y.%m.%d でログを取っているので,awstats.model.conf のLogFileのところは[絶対パス]logs/access.%YYYY-24.%MM-24.%DD-24 にしてある。前日のアクセスログに対してbatを実行するということ。  久しぶりにStatisticsを見たわけだが,なんと    1. OSの参照がすべて不明になる    2. 検索文字列が一切捕捉されない という不思議なことが起こっていた。しばらくああでもないこうでもないと,confを弄っていたのだが,どうにも埒が明かない。ググってみたがピタリのが見当たらない。しかし,AWStats + Windoes Server 2008 R2 + IIS 7.5というところの現象がよく似ている。環境が違うので何をしたらいいだろうと思ったが,エイヤッということで,ActivePerl-5.14.2.1402-MSWin32-x86-295342.msiからActivePerl-5.12.4.1205-MSWin32-x86-294981.msiにもどしてみた。すると,ビンゴ。
 しかし,何が原因なんだろう。Perlについて全くの素人なので,リリースノートを見てもどこが変わっているのかよくわからん。

追記3(12/28):
 上記の件なんだが,やはり,AWStatsのフォーラムにでも報告しておくべきなのかなとSourceForge.netをうろうろしていたら,http://sourceforge.net/projects/awstats/develop/ にAwstats 7.0 awstats.pl fixes という項目があった。これ,ほんとたまたまというか,お引き合わせとしか思えん。というのが,このページは時系列で最新のが10個だけ載ってるところで,この表題の件は下から2番目だったのだ。この時に気づかなかったら,見つけるのは大変だったと思う。

 ページに行ってみたら,voutersさんという方のパッチがあって,Perlのバージョンは 5.14.2 になっているしということで,なんとなくこのパッチで解決するのではとピンときた。早速, http://vouters.dyndns.org/public/awstats-7.0.pl.diff.tar.gz を落として展開して,中の awstats.pl.diff をゲット。

 patch utility を使うといいみたいに書いてあったので,http://gnuwin32.sourceforge.net/packages/patch.htm に行って patch-2.5.9-7-bin.zip を落としてきた。展開して中の patch.exe で patch –binary -pnum <patchfile をやってみたが,hunk FAILEDがでてうまく当たらない。patch.exe の使い方はよくわからないし,困ったなぁと思ったが,awstats.pl.diffを開いてみたら大した量じゃなかったので,手作業でawstats.pl にあててやった。

 ActivePerl-5.14.2.1402-MSWin32-x86-295342.msi を再インストールしてやって,使ってみたら,「1. OSの参照がすべて不明になる」も「2. 検索文字列が一切捕捉されない」も解消されていた。\(^O^)/

 ところで,rotatelogs.exeはまともに動いてくれてはいるけれど,カスタムログひとつにつき,プロセスが4つできる。rotatelogs.exe2つと,cmd.exe2つ。これがうざいといえばうざいカナ。もっとも,Win版のApacheはhttpd.exeからして2つだから,そんなものなんかなと思っている。動きは別におかしくないし。まっ,メモリがギリギリの場合,このプロセスによる占有は痛いかもしれない。

追記4(2012/4/11):
 Apache導入についての新しい記事を,本家のお世話-#28。本家のお世話-#29。に書いた。

追記5(2013/1/9):
 AWStats7.1へのアップデートを書いた。上で失敗している patch.exe の使い方も書いてあるので,ナンだったらご覧ください。