カテゴリー
WordPress

本家のお世話-#20。(WordPress3.3へアップデート)

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

 WordPress3.3日本語版がリリースされたのでアップデートをしようと思う。

 まずは,ドキュメントルート直下のWordPress3.2.1のファイルをバックアップする。
 ついでだから,データベースもバックアップしておこう。12/05の自鯖帰宅後DNS設定URL転送設定で手こずっていろいろそのままになっているが,そのうちの一つがphpMyAdminの設定。データベースのバックアップには使うから,この件もここで書いておこう。

  1. phpMyAdmin.confファイルを作り,/Apache2.2/conf/extra においてやる。中身は下記のようにする。
       Alias /phpMyAdmin "G:/phpMyAdmin/"
       <Directory "G:/phpMyAdmin">
         Options None
         AllowOverride None
         Order Allow,Deny
         Allow from 192.168.xxx.xxx  <<---- 我が家の場合はサーバ機からだけ許可。    </Directory>    <Directory "G:/phpmyadmin/libraries">      Order Allow,Deny    </Directory> httpd.confを開き,Supplemental configuration の区画に以下の2行を追加。    # phpMyAdmin settings    Include conf/extra/phpMyAdmin.conf
  2. phpMyAdmin-3.4.8-english.zipをダウンロードし展開する。
  3. 展開するとphpMyAdmin-3.4.8-englishフォルダが2重にできるが,中のほうのフォルダ名をphpMyAdmin に変更。
  4. config.sample.inc.phpをリネームしてconfig.inc.phpを作成。config.inc.phpを開き,以下の行の”にパスワードを設定する。なんでもよい。
       $cfg[‘blowfish_secret’] = ”
     フォルダphpMyAdmin を丸ごとG:/phpMyAdmin に移動する。ここで,Apacheを再起動する。新たにconfファイルを追加したので。
  5.  phpMyAdmin configuration storage の設定が必要な場合は,phpMyAdmin configuration storagephpMyAdmin 環境保管領域を参考にしてもらいたい。
  6. ブラウザで /phpMyAdmin/ にアクセスし,データベースをバックアップ。

 ここまで,下準備が済んだら,サイトネットワーク管理者になり,「ダッシュボード」>>「ツール」のページに行き,今すぐアップデートのボタンをポチッと。

 最上部に「更新していただきありがとうございます ! ネットワークの更新ページへ移動して、すべてのサイトをアップグレードしてください。」というメッセージが出たので仰せに従い移動して,ネットワークの更新ボタンをクリック。
 「さまざまなファイルを追加できるアップローダーをひとつのメディアアイコンで開くことができるようになりました。また、ドラッグ & ドロップでアップロードが簡単になりました。」ということで,メディアアイコンが1つになった。
 というか,なんかメニュー関係があちこち変わっているんだね。WordPress 3.3「Sonny」に開発者関係でもいろいろあったんで,使っているプラグインとかで動かないものがあったらどうしようと思っていたけど,今のところ不具合には気づかない。ホッ。

カテゴリー
everyday life

本家のお世話-#19。(DiCEの設定)

投稿アップデート情報  追記(12/10)  追記2(12/13)

追記2(12/13):
 追記というのが初めに来るのは日本語としてはおかしいが,以下の記事を書いたときには,私の中で今回の不具合の原因に対して大きな誤解があったので,以下の記事を読んでいただく前に追記部分を読んでおいてもらうために,この位置に入れておきます。

 結論から言うと,今回の不具合の原因はDNS設定URL転送設定のミスでした。この辺まだまだよくわかっていないので,もう少しよく勉強しないと次回も落とし穴に落ちそうです。
 今回,こんがらがった一つの理由は,プロバイダに貸与されたグローバルアドレスがルータをいじらないのに変わるという事象が含まれていたためです。留守中に変化していたんです。我が家ではルータに触るのは私だけなので,接続が切れる事態が発生してるとしか思えなかったのです。しかし,これはどうもたまたまルータに何らかの不具合が生じたためのようで,今回の主たる不具合とは無関係でした。
 というわけで,DiCEのPING機能も無関係だったので,初期設定に戻しました。
——————————————— 追記2 ここまで

 ひゃー,参った。しかし,多分これで解決だと思うので,記事にしておく。

 自鯖帰宅後,シバケンさんjuneさんから,「この頃見えたり見えなかったりですね」というコメントをいただいた。特に,juneさんには404の出た画像も送っていただいて,そこから真剣に調べ始めたのだが,多分,DNS転送の設定間違いか,ルータの設定だろうと思っていた。もっとも,ルータの設定は前に自鯖をやっていた9月までのものに戻しただけだったんだが。

 しかし,どうもそうではないらしい。5日以降なかなか家にいなかったので,自分自身も外からネットにアクセスすることが多かったのだが,このとき試しに自鯖にアクセスするとつながらないことがよくあった。家に帰って,サーバ機のDiCEを弄ってやるとつながるので,この辺だろうと見当をつけた。あっ,言い忘れていたが,VALUE-DOMAINのDDNSサービスを使うために,DiCE for Windows Version 1.59 と Plug-in Updater をインストールして,使っている。

 うちのプロバイダは,BBIQ。他のプロバイダも同じかどうかわからないが,固定IPでなくなってからは,ルータ(BHR-4RV)の設定を常時接続かつKeepAlive有効にしていても,しばらくすると接続が切られるようだ。でこれが,外部からのブログへのアクセスでは,再接続されない。ピンポイントでうちのルータのグローバルアドレスに接続すればいいのかもしれないが,固定IPを捨ててしまっているので一度接続が切れるとIPが変わる。したがって,それ自体がなんだかわからないから無理。

 「BHR-4RV DiCE」でググってみたら,「リモートアクセスモデル」ルータにおいてというのがあったので,これだと思って読んだんだが,違った。BHR-4RVはいくつかもともと対応しているDDNSサービスがあるが,この中にVALUE-DOMAINのは入っていないので別の方法を考えないといけない。そもそもDiCEの「オプション」>>「環境設定」>>「IPアドレス監視」の「IPアドレス検出方法」は自動でちゃんと機能していた。

 こうなると問題は「どうやってBBIQが接続を切るのを止めるか」ということになる。これはDiCEの「オプション」>>「環境設定」>>「PING機能」の「定期的に送信する(回線切断を防止など)」を選んでやるのだろうと見当をつけたが,送信先のホストが分からない。
 いろいろ試してみた。www.qtnet.co.jpとかwww.bbiq.jpとかね。うまくいかないので,結局,コンソール(=コマンド プロンプト)からtracertを使ってみた。結果,右図のように,我が家のグローバルアドレスは変わっても,赤丸の中にあらわれるIPアドレスは変わらないから,ここに向かってPINGを飛ばすことにした。
PINGの設定は変えていないが,BBIQのサポートの言うところでは,これは関係ないはずとのこと。(12/10追記) PING機能は「使用しない」に戻した。(12/13追記)

 これでうまくいけばいいんだが。明日の朝いちばんで,例のLOOXから自鯖にアクセスしてみよう。それでつながるようなら,O.K.ということだね。

追記(12/10): この間メールでしておいた問合せへの返事が,今日BBIQからあった。接続の状況を調べてもらったのだが,切れてはいないらしい。
 特にはっきりしているのは,昨夜21時台から現在のこの時間(現在19時)まで,間違いなく連続接続とのこと。にも拘わらず,juneさんから,(12:44 404 wwwc [X] ) という連絡があったし,私自身も昼によそからアクセスしたときに404エラーが出た。ということになると,接続のせいではないのかもしれない。
 今日,404エラーが出たときは,ブラウザをリロードすると表示されるということがあって,ますます,回線のせいではなさそう。うーん。思案投げ首。

カテゴリー
WordPress

本家のお世話-#18。(Contentsの移動)

 さて,自鯖の帰宅(!!)もいよいよ最後の部分になる。移転そのものは,一応,5日の23:00に終了したんだけど,まだちょこちょこと手直しはありそうです。

 ブログの引っ越しにあたって,今回ひとまず,WordPressデフォルトのエクスポート・インポートを使ってみた。ちゃんと移ったんだよ。でもね,やってみてからよく見ると,テーマやら,リンクやらの再設定がすべて手動になるということに気づいた。少し,努力してはみたが,これは,大変。やる気が失せる。

 で,結局,phpMyAdminを使ってデータベースごと移動することにした。なんでコンソール(=コマンド プロンプト)からコマンドラインでやらないかというと,文字コードUTF-8のデータベースをどうしてもうまく移せなかった経験があって,トラウマになっているからだ。なんか方法はあるのかもしれないが,phpMyAdminという便利なものが作られているので今回もこれを使った。

 いゃー,ほんとに簡単に移るよ。ただし,sqlファイルのサイズが,一括だと8MB近くもあったので,移動の間だけ,php.iniの下記の行を8Mにしておいた。これは自鯖だとほんと簡単。レンタルだと,sqlファイルのほうを分割しないといけない。当然ながら,終わったら元に戻す。php.iniの書き換えはhttpd.exeをRestartしないとだめなのでこの点も注意。
   upload_max_filesize = 8M

 sqlファイル以外のプラグインとかテーマとか画像などのファイルは,旧サイトから新サイトの対応するディレクトリにコピーすればいい。今回は,全く同じ形式のサイトの移転だから,何にも考えなくていい。楽ちん。
 移した後で直したのは,確かWordPress File Monitor Plus の「調査ルートディレクトリ:」関連のところだけ。

 で,本日気づいたこと。DDNSになったら,WordPressからの通知メールが届かなくなっていた。今日,外出から戻って「o6asan’s soliloquy-part2 」を見たら,シバケンさんのコメントが入っていた。外出先で,メールチェックはしたのにと思って調べたら,通知メールが来なくなっている。そういえば,固定IP契約をしたのはメールサーバを自前で持つためだった。今回,自前のメールについてはXREAのサービスを使うつもりで,それでいいと思っていたんだけど,ここにも響くのかー。どうしようと思ってググったら,つい最近同じことで困っていた方の記事を見つけた。「WordPressからの通知メールが届かない」 ドンピシャじゃん。「WP Mail SMTP」をインストールした。

 テストメールを送ってみたら,エラーが出る。
   The SMTP debugging output is shown below:
   SMTP -> ERROR: Failed to connect to server:
   Unable to find the socket transport “ssl” –
   did you forget to enable it when you configured PHP? (5)
   SMTP Error: Could not connect to SMTP host.
だって。あはーん。php.iniの下記の部分をアンコメントして,httpd.exeをRestartしたら,テストメールが通った。
   extension=php_openssl.dll

 多分これで,O.K. 今回,終了間際になって,だんだん書き方が雑になってきたって気がする。書き落としで,次回,自分が困らないかなぁと危惧している(苦笑)。

カテゴリー
Windows

本家のお世話-#17。(WordPressの再導入)

 「本家のお世話-14。本家のお世話-16。」はレンタルのホスティングサービスだと,会社側が提供する部分になる。もちろん,本当にサーバをレンタルしようと思ったら,やらなければいけないことは他にもたくさんあって,まだまだ先があるわけだが……

 しかし,我が家のサーバは単なる自分用サーバだから,このあたりでWordPressの再導入に入る。ここから先はレンタルでは,ユーザが扱う部分になる。WordPressのファイルをどこどこに移動するとか複写するとか書いてある場合は,レンタルサーバで ftp client を使って当該場所にアップロードするのと同等である。

  1.  wordpress-3.2.1-ja.zip をダウンロードして展開。
  2.  展開してできたwordpressフォルダの中身をドキュメントルートに移動する。このWordPressはあとでネットワーク化してマルチサイトとして使うので,専用のwordpressフォルダは作らない。
  3.  WordPressのマルチサイトではrewriteの機能を使うので,httpd.confを開いて下記の行をアンコメントする。
       LoadModule rewrite_module modules/mod_rewrite.so
  4.  ローカルのサーバ機上で独自ドメインを使用するために, C:WINDOWSsystem32driversetc のhostsファイルに次の1行(サーバ機のローカルIPアドレスと自鯖で使う独自ドメイン)を追加する。
       192.168.xxx.xxx   example.com
  5. Apacheを起動してから,ブラウザで下記にアクセスして,WordPressの設定を行う。   http://example.com/
    •  [設定ファイルを作成する]をクリック。
    •  [次に進みましょう!]をクリック。
    •  以下の項目を適切に設定したのち,[作成する]をクリック。基本的には,青枠の3つだけを変更すればよい。
      データベース名 wordpress WP を稼動させたいデータベースの名前。
      ユーザー名 example MySQL のユーザー名
      パスワード ******** MySQL のパスワード
      データベースのホスト名 localhost localhost のままで動かない場合、ウェブホストからこの情報を得る必要があります。
      テーブル接頭辞 wp_ 1つのデータベースで複数の WordPress を動かすときに変更します。
    •  [インストール実行]をクリック。
    •  以下の項目を適切に設定したのち,[WordPressをインストール]をクリック。この場合も,基本的には,青枠の3つだけを変更すればよい。
      サイトのタイトル ○○○○  
      ユーザー名 ×××× ユーザー名に使えるのは,半角英数字,スペース,下線,ハイフン,ピリオド,アットマーク。
      パスワード 使いたいものがあれば設定する。2回入力。 ここを空欄にすると自動的にパスワードが生成される。
      メールアドレス 管理用のメールアドレス 間違いのないように
      このサイトが Google や Technorati などの検索エンジンに表示されるのを許可する。 ワードプレス導入時に,テスト状態からインターネット上にあるときは,チェックを外しておいたほうがいい。テストが終わった時点で,ダッシュボードから変更できる。  
    •  [ログイン]をクリック。
    •  ログイン画面が表示されるが,本当にログインする前に,wp-config.php を開けて
      /* 編集が必要なのはここまでです ! WordPress でブログをお楽しみください。 */
      のすぐ上の行に下記を追加。このときに,この編集に間違ってもWindowsのメモ帳は使わないこと!!
         define(‘WP_ALLOW_MULTISITE’, true);
    •  先ほど設定したユーザ名とパスワードをフォームに記入し,青い[ログイン]ボタンをクリック。
    •  左のサイドバーのツールから,[ネットワークの設定]を選んでクリック。
    •  サブディレクトリ型をチェックし,ネットワークのタイトルを自分が望むものにして,メールアドレスに間違いがないか確認したのち,[インストール]をクリック。
    •  「ネットワークを有効化中」のページの記載に従い,1.2.3.の項目を間違いなく行う。
       ただし,ネットワークの作成-#3。で経験したことをもとに,作成した.htaccessにおいて
         # uploaded files
         RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L]
      を RewriteEngine On のすぐ下の行に移動しておく。
       その後,下にある[ログイン]リンクをクリックして,ログインし直す。うまくログインできたら,ひとまずログアウトする。
カテゴリー
Windows

本家のお世話-#16。(MySQLの再導入)

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

 MySQLを再導入する。MySQL Community Serverに行って mysql-5.5.18-win32.msi を落として,インストール。

  • Welcome to the MySQL Server 5.5 Setup Wizard の下の[Next]をクリック。
  • I accept the terms in the License Agreement にチェックを入れて,[Next]をクリック。
  • Custom をクリックしたのち,Location の MySQL Server 5.5 の部分を MySQL Server に変更し,[Next]をクリック。<<---この辺は好き好き。ここは,デフォに戻した。これを弄るとスクリプト関係でいろいろ弄らなくてはいけないところが出てきて,私のスキルでは対応しきれないようなので。
  • Ready to install MySQL Server 5.5 の下の[Install]をクリック。
  • MySQL Enterprise の下の[Next]をクリック。
  • The MySQL Enterprise Monitor Service の下の[Next]をクリック。
  • Launch the MySQL Instance Configuration Wizard のチェックは入れたままで,[Finish]をクリック。
  • Welcome to the MySQL Server Instance Configuration Wizard 1.0.17.0 の下の[Next]をクリック。
  • Detailed Configuration にチェックを入れたままで,[Next]をクリック。
  • Server Machine にチェックを入れて,[Next]をクリック。
  • Transactional Database Only にチェックを入れて,[Next]をクリック。
  • InnoDB Tablespace Settings は,そのまま[Next]をクリック。
  • Decision Support (DSS)/OLAP にチェックを入れたままで,[Next]をクリック。
  • Add firewall exception for this port にチェックを追加して,[Next]をクリック。
  • Best Support For Multilingualism にチェックを入れて,[Next]をクリック。
  • Include Bin Directory in Windows PATH にチェックを追加して,[Next]をクリック。
  • root のパスワードを設定しConfirmして,[Next]をクリック。リモートアクセスは許可しない。<<---この辺は自鯖のコンセプトで違う。
  • 次の画面で[Execute]をクリックすると,Configuration がスタートする。
  • Configration file created.
    Windows service MySQL installed.
    Service started successfully.
    Security settings applied.

    Press [Finish] to close the Wizard.

  • 上のメッセージが表示されれば成功,[Finish]をクリック。他のメッセージが出たら,各自対処すること。

追記(12/04):
 書き忘れたこと。
 MySQLには,いくつかPerlスクリプトのツールが付属しているのだが,これの1行目をWindowsのパスに合わせておかないと使えないのでここでやっておく。
 サイト用のデータベースとユーザの作成もここでやっておく。

  •  スタートメニューのショートカットから,「MySQL 5.5 Command Line Client」を起動。
  •  MySQLをインストール時に設定したrootのパスワードでログイン。
  •  WordPress用のデータベースとユーザを作る。
     create database wordpress;
     grant SELECT,INSERT,UPDATE,DELETE on *.* to example@localhost IDENTIFIED by ‘passphrase’;
     grant all privileges on *.* to example@localhost IDENTIFIED by ‘passphrase’;
     grant all privileges on wordpress.* to example@localhost IDENTIFIED by ‘passphrase’;
     flush privileges;

追記2(12/14):
 インストール時の「Add firewall exception for this port」なんだけれども,データベースにアクセスするのをサーバ機からだけにし,しかもWEBサーバもSQLサーバも同一LAN上にあるならば(自鯖の場合こういうことも多いと思う),チェックする必要はない。つまり,3306ポートを開放する必要はない。

 一概には,上記のように言えないようだ。サーバ本体として使っているPC上のファイアーウォールソフトの種類によっては,不具合が生じることもあるようだ。インストール時の3306ポート設定は,開放が無難。

カテゴリー
Windows

本家のお世話-#15。(Perl・PHPの再導入)

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

  1.  さて,Perlの再導入。ActiveStateからActivePerl-5.14.2.1402-MSWin32-x86-295342.msi を落としてきた。すべてデフォルトでインストール。
     完了したら,コンソール(=コマンド プロンプト)を開き,
       >perl -v
     これで,バージョン情報などが表示されれば,正常。パスも通っていることがわかる。

     Apacheのhttpd.confを開けて以下を変更。
       AddHandler cgi-script .cgi をアンコメントし,.pl を追加。

     printenv.plを/Apache2.2/cgi-bin から G:/WEB/cgi-bin にコピーし,これの一行目を#!(ドライブ文字):/Perl/bin/Perlに書き換える。
     Apacheを起動して,ブラウザから, http://localhost/cgi-bin/printenv.plにアクセス。環境変数の一覧が表示されれば,Perl再導入完了。

     printenv.plはcgi-binフォルダから削除しておく。←セキュリティのため。
     

  2.  次は,PHPの再導入。
     サーバソフトが,Apache2系なので,PHP For WindowsからThread Safe版の php-5.3.8-Win32-VC9-x86.zip を落としてきて,ファイルを展開する。Thread Safe / Non Thread Safe の注意事項は,展開ファイル内のinstall.txtに書いてある。また,5.3.6からVC6でコンパイルされたものがなくなったので,現在の最新バージョン5.3.8についても,Apache.org版では使えない。 —->> 本家のお世話-#14。参照のこと。
     フォルダ名をphp-5.3.8-Win32-VC9-x86からPHPに変更し,Apacheと同じドライブにフォルダごと移動。ファイル名 php.ini-production を php.ini に変更して,カスタマイズ。
     書かれていることの大部分についてなるほどと思ったので,mbstring関連のカスタマイズ内容を「PHPの文字化けを本気で解決する」を参考に,少し変更した。うちの場合は,文字セットがUTF-8であるのははっきりしているので,detect_order は我が家用の順序になっている。

      デフォルト カスタム
    1 ;default_charset = "iso-8859-1" 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 ;date.timezone = date.timezone ="Asia/Tokyo"
    10 ;sendmail_from = me@example.com sendmail_from = 自分のメールアドレス
    11 ;mbstring.language = Japanese mbstring.language = Japanese
    12 ;mbstring.internal_encoding = EUC-JP mbstring.internal_encoding = UTF-8
    13 ;mbstring.http_input = auto mbstring.http_input = pass
    14 ;mbstring.http_output = SJIS mbstring.http_output = pass
    15 ;mbstring.encoding_translation = Off mbstring.encoding_translation = Off
    16 ;mbstring.detect_order = auto mbstring.detect_order = UTF-8,ASCII,SJIS,EUC-JP,JIS
    17 ;mbstring.substitute_character = none mbstring.substitute_character = none

     今回は再導入なので既に済んでいるが,初めての場合は,(ドライブ文字):PHP にパスを通すのを忘れないこと。

     モジュール版での使用を可能にするために,httpd.confを開けて,
    DSO Supportの区画に,LoadModule php5_module "C:/PHP/php5apache2_2.dll" を追加。LoadModule はアルファベット順に並んでいるのでそのつもりで追加すればよい。

     <IfModule mime_module> 区画の最後に,以下の2行を追加。
       AddType application/x-httpd-php .php
       AddType application/x-httpd-php-source .phps

     </IfModule>の後に,php.iniの場所を指定してやるために以下を挿入。
       <IfModule mod_php5.c>
         AddType application/x-httpd-php .php
         PHPIniDir "(ドライブ文字):/PHP"
       </IfModule>

     ここで一応,コンソール(=コマンド プロンプト)を開き,
       >php -v
     これで,バージョン情報などが表示されれば,正常。パスも通っていることがわかる。
     

  3.  php.ini のカスタマイズで,extension=php_curl.dll をアンコメントしたので,cURL も再導入する。
     cURL for Win32 platformに行って,curl-7.23.1-devel-mingw32.zip を落としてきて展開。
     cURL for Win32 platformには,ずらっとさまざまなファイルが並んでいるので,初めてのときは,http://curl.haxx.se/download.htmlに行ってDownload Wizard を使ったほうが無難だと思う。
     
     展開したファイルの中から,curl.exeを(ドライブ文字):/PHPに移動。libeay32.dllは(ドライブ文字):/PHP 中に,よりタイムスタンプの新しいものがすでにあったので,一応そのまま。後で不都合が起こったら,curl-7.23.1-devel-mingw32.zip に含まれてたのに替えることにしようと思う。この2ファイルの置き場所は,パスの通ったところならほかのところでも構わない。
     
  4.  <?php phpinfo() ?> を記入したtest.phpを作ってドキュメントルートに置き,Apacheを起動して http://localhost/test.php にアクセス。phpinfoが表示されれば,導入完了。

     test.phpはドキュメントルートから削除し,php.ini で,次の書き換えをしておく。←セキュリティのため。
       disable_functions =  —–>>  disable_functions ="shell_exec, suexec, passthru, phpinfo"

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

カテゴリー
Windows

本家のお世話-#14。(Apacheの再導入)

投稿アップデート情報  追記(12/20)  追記2(12/25)  追記3(2012/1/2) …… 追記6(8/11)

 本家のお世話-#13。で導入したZoneAlarm10だけど,むかーし使っていたのとだいぶUIが変わっていて,どうも使いにくいなぁ。

まぁ,ボヤキは置いておいて,Apacheの再導入から始める。PHP5.3.6以降の関係があるので,ApacheはApache Loungeに行って,httpd-2.2.21-win32-x86-ssl.zipを落としてきた。apache.org版と違い,Apache Lounge版はMSIじゃなくてzip。今回は前のファイルをきれいさっぱり削除したので,地道に一からやらないといけない。ただし,Microsoft Visual C++ 2008 SP1 再頒布可能パッケージ (x86)のインストールは,済んでいる。

  1. まず,httpd-2.2.21-win32-x86-ssl.zipを展開する。
  2. こののち,apache.org版使用にもどることがあるかもしれないので,フォルダ名をorg版に合わせて,置き場所もProgram Filesにする。<<—この辺は好き好き。
  3. httpd.confのカスタマイズ。
    • ServerRootを2.でファイルを置いた場所に変更。
    •    <IfModule mpm_winnt_module>
      Win32DisableAcceptEx
      </IfModule>
      はどうしようかな。
      後で
      [warn] (OS 64)指定されたネットワーク名は利用できません。
      [warn] (OS 121)セマフォがタイムアウトしました。
      が出たときに追加するかなと思いつつも,一応入れておく。
    • ServerAdmin のメールアドレスを自分のものに変更。
    • ServerName をlocalhost:80に変更。
    • DocumentRoot を”G:/WEB/example” に変更。
    • DocumentRoot に合わせて,<Directory “G:/WEB/example”> に変更。
    • インデックスファイルを置き忘れたときに,ディレクトリ内がさらされることのないように,Options Indexes FollowSymLinks をOptions FollowSymLinks に変更。
    • .htaccessが使えるように AllowOverride None を AllowOverride directive-type に変更。directive-typeに使えるキーワードについては,AllowOverride ディレクティブを参照のこと。
    • DirectoryIndex に index.php を追加。
    • ScriptAlias を “G:/WEB/cgi-bin/” に変更。
    • ScriptAlias に合わせて,<Directory “G:/WEB/cgi-bin”> に変更。
  4. 一応,手動でApacheのテストラン。コンソール(=コマンド プロンプト)を開き,httpd.exe のあるディレクトリに移動。
    >httpd.exe

    ところが,コンソール上に[notice] Disabled use of AcceptEx() WinSock2 APIが表示され,以下のように同じエラーがWindowsのイベントログにも出る。
    ————————————————————————————————————————-
    イベントの種類: エラー
    イベント ソース: Apache Service
    イベント カテゴリ: なし
    イベント ID: 3299
    日付:     xxxx/xx/xx
    時刻:     xx:xx:xx
    ユーザー:   N/A
    コンピュータ: xx
    説明:
    The Apache service named reported the following error:
    >>> [xxx xxx xx xx:xx:xx xxxx] [notice] Disabled use of AcceptEx() WinSock2 API

    詳細な情報は、http://go.microsoft.com/fwlink/events.asp の [ヘルプとサポート センター] を参照してください。
    ————————————————————————————————————————-
    これは,Apacheとしては[notice]なんで,confのカスタマイズのときに入れたWin32DisableAcceptExが効いていれば起動時のログに出るのとイベントログにエラーが出るのは正常だけれども,イベントログにエラーで出るそれでクラッシュするのが変。で,下記のようにコメントアウトして,Apacheを再起動してみた。
    #<IfModule mpm_winnt_module>
    #Win32DisableAcceptEx
    #</IfModule>

    また,エラー。今度はソケットが使えない旨のエラーで,イベントログにもエラーとして記録されている。
    ————————————————————————————————————————-
    イベントの種類: エラー
    イベント ソース: Apache Service
    イベント カテゴリ: なし
    イベント ID: 3299
    日付:     xxxx/xx/xx
    時刻:     xx:xx:xx
    ユーザー:   N/A
    コンピュータ: xx
    説明:
    The Apache service named reported the following error:
    >>> (OS 10048)通常、各ソケット アドレスに対してプロトコル、ネットワーク アドレス、またはポートのどれか 1 つのみを使用できます。 : make_sock: could not bind to address 0.0.0.0:80

    詳細な情報は、http://go.microsoft.com/fwlink/events.asp の [ヘルプとサポート センター] を参照してください。
    ————————————————————————————————————————-

    いろいろ調べてみたら,どうもWinSockがおかしいみたい。というわけで,「Windows Server 2003、Windows XP、および Windows Vista で Winsock2 の破損を確認して回復する方法」というページを参考にやってみた。まずは,コンソールから netsh winsock reset を打ってみたんだけど,どうもよくならない。
    で次は,Microsoft Fix it 50203を使ってみたが,よくならない。結局,「手順 1: 破損したレジストリ キーを削除する」「手順 2: TCP/IP をインストールする」までやったら,ようやくノーエラーで起動できるようになった。
    何が原因かよくわからないが,WinSockのリセットでは「ウイルス対策、ファイアウォール、プロキシ クライアントなどに悪影響が生じるおそれがあります。」という記載があるから,逆も真なりで,ファイアウォールをZoneAlarm10にしたことが引き起こしたことかもしれない。

    ところで,初めのほうのDisabled use of AcceptEx() WinSock2 APIのエラーがイベントログに残ることについては,Winsockの破損とは,関係ないかもしれない。kazenokakasiさんが「Apache2.2.17で変更有り。」という記事を書いておられるのに,ググっているときに気づいた。  今日気づいたのだが,kazenokakasiさんのところは直リン禁止ということらしい。リンクからでは記事が読めなかった。ブラウザのアドレスバーにhttp://sitifukuzin.com/blog/?p=6021を記入して跳んでほしい。  追記4(2/15)
     今のWindows上のApacheには,
    <IfModule mpm_winnt_module>
    Win32DisableAcceptEx
    </IfModule>
    はいらないみたいだね。
    (12/25 消し線追加)

  5. 無事起動するようになったので,サービスとして登録する。コンソールでhttpd.exe のあるディレクトリに移動し,
    >httpd.exe -k install
    Windowsのサービス一覧でちゃんと登録されていることを確認。ApacheMonitorのショートカットを,スタートメニューのスタートアップに追加する。
    (注) Apacheのサービスの状況はタスクトレイのApacheMonitorのアイコンで確認できる。Start/Restart/Stop もここからできる。
  6. まあ,一応, http://localhost/ は確認しておいたほうがいい。もちろんドキュメントルートに index.html を作って入れておかないと,下記が表示されちゃうよ。
    Forbidden
    You don’t have permission to access / on this server.

書き忘れたが,httpd.confで使用している /WEB/example , /WEB/cgi-bin なんかは,該当場所に作っておかないと,Apacheがディレクトリがないよと言ってくるので,注意。

追記(12/20): 大事なことを書き忘れていた。
本家のお世話-#13。で導入したZoneAlarm10なんだが,重大な不具合があって使うのを止めた。どんな不具合かというと,Apacheを停止するとWindowsが勝手に再起動するというものだ。だいたい,一般クライアント用のファイアーウォールソフトをサーバ用に使おうというところに無理があるのはわかっているが,ウィルスバスターといいZoneAlarm10のFree版といい,ベンダ側はクライアント用のものはサーバ用としては使わせない方向で動いているようだ。ネットのマルウェアがどんどん進化しているせいだろうか。

ZoneAlarm10の使用を止める前に一応努力はしてみた。
apacheのメーリングリストでは,
linux の watchdog の機能と同じようなものが ZoneAlarm Free 10 にもついているのではないか。
という示唆をいただいた。検証してみると,Apacheが正常に停止せずpidファイルが残った場合は再起動が起こらないので,ZoneAlarm Free 10 にも同様の機能がついてそうだという感触を得た。他に,違うファイアウォールソフトを使った方がいい,あるいは,ZoneAlarmのサポートに聞いてみたほうがいいという意見もいただいた。使おうとしていた ZoneAlarm10 がFree版だったので,問い合わせは躊躇していたのだが,http://forums.zonealarm.com/ で調べてみたら,Zone Alarm Apache shut down conflictという書き込みがあった。それに対するモデレータの回答があって「サーバソフトのサポートはしていないので,他のセキュリティソフトを探してください」というものだった。

ということなので,ZoneAlarm10 Free Firewall をサーバのファイアーウォールとして使うことは断念した。

追記2(12/25):
今朝のログに
[warn] (OS 64)指定されたネットワーク名は利用できません。
[warn] (OS 121)セマフォがタイムアウトしました。
が出ていたので,やはり
<IfModule mpm_winnt_module>
Win32DisableAcceptEx
</IfModule>
を復活することにした。

  追記6(2013/8/11):
中途半端な場所に追記(汗)。
現時点でも,下記なしだと頻繁にハングが起こる。メッセージは,
「(OS 64)指定されたネットワーク名は利用できません。」
Apache2.4から,Win32DisableAcceptExの代わりにAcceptFilter Noneを使うことになったので,
<IfModule mpm_winnt_module>
AcceptFilter http none
</IfModule>
を入れている。

追記3(2012/1/2):
検索キーワードで「httpd-2.2.21-win32-x86-ssl.zipがダウンロードできない」というのがあって,なんだろうなとLoungeを見に行ったら,Apache 2.3.16 Release Candidateなんぞがあって,大分ページの雰囲気が変わっているし,表記が,httpd-2.2.21-win32-x86-ssl.zipじゃなくて,httpd-2.2.21-win32.zipになっている。「初めて落とすときは悩むよな」ということで,追記。
名称としてhttpd-2.2.21-win32-x86-ssl.zipはなくなっているので,代わりとしてはApache 2.2.21 Stableのhttpd-2.2.21-win32.zipを落とせばO.K.です。

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