「サーバメンテナンス中」のお知らせをサーバ機とは別のWindowsXP + Apacheパソコンで表示できるようにしました。

by 管理者
9月 22日 2011 年

企業ではサーバのメンテナンスをするため、サーバの電源を切ったりネットワークから切り離したりするときは、別のサーバにユーザからのリクエストを転送し、「サーバメンテナンス中」のお知らせを表示して目的のホームページがメンテナンス中で閲覧出来ないことをアナウンスし、同時に検索エンジンにHTTPレスポンス503を返します。

そこで、今回これと同等のことを実現するため、別のWindowsXPパソコンに「サーバメンテナンス中」のお知らせを表示させます。

その際、「サーバメンテナンス中」を出すためのOSとWEBサーバはVMwarePlayer上のWindowsXPとApacheとし、ポータブルハードディスクにバックアップを取っておいて、サーバメンテナンスをする時にWndowsパソコンにコピーして動かすようにします。

このようにすれば、2台あるWindowsパソコンのうち使っていない方のパソコンを使えば良いし、第一Windowsパソコンの調子が悪くなってApacheが立ち上がらなくなったとか,Windowsパソコンを再セットアップしたら、一緒にWEBサーバも消えてしまった等のトラブルを防ぐ事が出来ます。

※ プロバイダのサーバにホームページを持つことができればこんな面倒なことをしなくて良いのですが、それができないところなので こんなことをやっております。あまり深く追求しないで下さい。

 

手順は以下のとおり

1.VMware Playerのインストール

・WindowsパソコンにVMwarePlayerを以下からダウンロードしてインストールする。

https://www.vmware.com/jp/tryvmware/?p=player&lp=1

・VMwarePlayer上にWindowsXPをインストールします。

・セットアップしたWindowsXPが稼動中のWebサーバと同一セグメントになるように、ネットワークアダプタの設定をブリッジ接続にします。

 

 

・IPアドレスを設定します。(サーバが稼働中なので、サーバとは別のIPアドレスでセットアップする。)

 

 

・セットアップが完了すると、WindowsXP上でWindowsXPが動くことになります。
※ 下の画面を見ると、WindowsXP画面の上にもう一枚WindowsXPが出ているのが分かります。

 

 

2.Apacheのインストール

・Apacheを以下からダウンロードし、VMwarePlayer上のWindowsXPにインストールします。

http://httpd.apache.org/download.cgi

 

 

・同意してNext

 

 

・運用しているドメインの名称、メールアドレスを入力します。

 

 

・Typicalを選択します。

 

 

3.PHPのインストール

・PHPを以下からダウンロードし、VMwarePlayer上のWindowsXPにインストールします。

http://windows.php.net/download/

※ Apache2.2Moduleが含まれているものを選択します。探したところ、VC9でコンパイルしたものには入っていませんでした。今回ダウンロードしたのは赤枠で囲ったものです。

 

 

・同意してNext

 

 

・インストール先を確認してNext

 

 

・Apache2.2.x Moduleを選択してNext

 

 

・確認してNext

 

 

・Multi-Byte Stringを選択してNext
※ 日本語はマルチバイトなので必須

 

4.Apacheのコンフィグレーション

・Cドライブにフォルダ"C:\WWW\htdocs"を作成します。
・C:\Program Files\Apache Software Foundation\Apache2.2\conf\httpd.confを開きます。

 

 

・PHPのモジュールの格納場所をhttpd.confに追加します。
PHPIniDir "C:\Program Files\PHP\"
LoadModule php5_module "C:/Program Files/PHP/php5apache2_2.dll"

 

・.htaccessでリダイレクトするため、先頭の#を外します。
LoadModule rewrite_module modules/mod_rewrite.so

 

・ドキュメントルートを変更します。
DocumentRoot "C:/WWW/htdocs"に変更します。
※ デフォルトは階層が深くて使い難いので変更します。

 

・ドキュメントルートの属性を変更します。
# This should be changed to whatever you set DocumentRoot to.
#
<Directory "C:/WWW/htdocs"> ← "C:/WWW/htdocs"に変更
#
# Possible values for the Options directive are "None", "All",
# or any combination of:
#   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important.  Please see
# http://httpd.apache.org/docs/2.2/mod/core.html#options
# for more information.
#
Options Indexes FollowSymLinks ExecCGI   ← ExecCGIの追加

#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#   Options FileInfo AuthConfig Limit
#
AllowOverride all ← Noneからallに変更

#
# Controls who can get stuff from this server.
#
Order allow,deny
Allow from all

</Directory>

 

・cgiの拡張子を紐づけます。
AddHandler cgi-script .cgi
AddType application/x-httpd-php .php

 

・#を外して以下の関連ファイルを読み込みます。
# Multi-language error messages
Include conf/extra/httpd-multilang-errordoc.conf

# Fancy directory listings
Include conf/extra/httpd-autoindex.conf

# Language settings
Include conf/extra/httpd-languages.conf

 

・mime.typesの修正
C:\Program Files\Apache Software Foundation\Apache2.2\conf\mime.typesを開きます。

最終行に以下を追加します。
application/x-httpd-php php
application/x-httpd-php-source phps

 

・httpd-languages.conf の修正
C:\Program Files\Apache Software Foundation\Apache2.2\conf\extra¥httpd-languages.confを開きます。

以下を追加します。
DefaultLanguage ja

 

・デフォルトの文字コードを変更します。
AddDefaultCharset shift_jis

 

5.PHPのコンフィグレーション

・C:\Program Files\PHP\php.inifを開きます。

・画面にエラー表示するようにします。
display_errors = On

 

・デフォルトの文字コードを指定します。
default_charset = "Shift_JIS"

・日本語などマルチバイト文字を使うため、以下を追加します。
extension=php_mbstring.dll
extension_dir=C:\Program Files\PHP\ext

 

・各自の環境に合せて日本語処理の設定を行います。
[mbstring]
; language for internal character representation.
mbstring.language = Japanese

 

; internal/script encoding.
; Some encoding cannot work as internal encoding.
; (e.g. SJIS, BIG5, ISO-2022-*)
mbstring.internal_encoding = UTF-8

 

; http input encoding.
mbstring.http_input = pass

 

; http output encoding. mb_output_handler must be
; registered as output buffer to function
mbstring.http_output = pass

 

; enable automatic encoding translation according to
; mbstring.internal_encoding setting. Input chars are
; converted to internal encoding by setting this to On.
; Note: Do _not_ use automatic encoding translation for
;       portable libs/applications.
mbstring.encoding_translation = Off

 

; automatic encoding detection order.
; auto means
mbstring.detect_order = auto

 

; substitute_character used when character cannot be converted
; one from another
mbstring.substitute_character = none;

 

; overload(replace) single byte functions by mbstring functions.
; mail(), ereg(), etc are overloaded by mb_send_mail(), mb_ereg(),
; etc. Possible values are 0,1,2,4 or combination of them.
; For example, 7 for overload everything.
; 0: No overload
; 1: Overload mail() function
; 2: Overload str*() functions
; 4: Overload ereg*() functions
mbstring.func_overload = 0

 

; enable strict encoding detection.
;mbstring.strict_detection = Off

 

 

5.Apacheの再起動

Apacheを再起動します。

 

6.「サーバメンテナンス中」画面の作成と設定

・htaccessの作成

以下の内容でC:\www\htdocsに.htaccessを作成します
RewriteEngine on
RewriteRule ^503/ - [L]
RewriteRule ^.*$ 503/503.php
Options -Indexes

 

・503フォルダの作成
C:\www\htdocs¥503フォルダを作成します。

 

・以下の内容でC:\www\htdocs¥503に503.phpを作成します
<?php
header ("HTTP/1.0 503 Service Temporarily Unavailable");
include(dirname(__FILE__) . "./maintenance.html");
?>

 

・C:\www\htdocs¥503に「サーバメンテナンス中」ページを作成します。

※ 「サーバメンテナンス中」画面の作成と設定に関して、http://labs.unoh.net/2007/07/post_93.htmlを参考にしました。

7.確認

ブラウザを立ち上げて、http://IPアドレスで「サーバメンテナンス中」画面が表示されます。

 

サーバメンテナンスで、サーバをネットワークから切り離してしまうときは、サーバのIPアドレスをVMware上のWindowsXPのIPアドレスに設定してやればよい、

もし、サーバをネットワークに参加させたままサーバメンテナンスするときは、ルータのコンフィグレーションファイル開いてメンテナンス中のサーバのIPアドレスをVMware上にセットアップしたWindowsXPのIPアドレスに変更してやればよい。

ということです。

細かいところはずいぶんと端折ってしまいましたが、緊急避難で使う機能なので、これで良しとします。

この記事へのトラックバックURL