このサイトのはてなブックマーク数の合計

www を検索 sarabande.info を検索
トップページに戻る

WindowsでWebサーバを構築する

Windows XPでWebサーバの構築を行い、PHP+MySQLの開発環境を整える。開発支援のためにSubvesion・Trac・MediaWikiを導入する。

動作確認環境

同時接続数の制限

Windowsではライセンスにより同時接続数が制限されている。ネットワーク経由の同時接続はWindows XP Home Editionの場合は5でWindows XP Professionalの場合は同時接続数が10である。同時アクセス数を調べるには下記の人力検索はてなの記事を参照。

GnuWin32とcURL

WebアプリケーションはUnix系のOSを前提にしているのでdiff3やtarなどネイティブのWindowsには存在しないコマンドが多く存在する。GnuWin32は大量のUniz系のコマンドツールを一括導入することが出来る。cURLは各種プロトコルをサポートするライブラリでパッケージのダウンロードなどに利用される。PHP関数(PHP: CURL, Client URL Library 関数 - Manual)やMac OS Xにも導入されている。

XAMPP

バーチャルホスト

localhostでサブドメインを利用する場合、次のようにバーチャルホストを設定した。編集が終わったらApacheを再起動する。

httpd-vhosts.conf(C:\xampp\apache\conf\extra)

NameVirtualHost *:80

<VirtualHost *:80>
  DocumentRoot "C:/xampp/htdocs"
  ServerName localhost
</VirtualHost>

my.cnf

my.cnf(C:\xampp\mysql\bin)をテキストエディタで編集する。エクスプローラ上のファイル名はmyとなっていることに注意。エクスプローラから編集に移るためには右クリック→「送る」→「テキストエディタ」。編集が終わったらMySQLを再起動させる。もし再起動をさせようとしても正常に動作をせずクラッシュしてしまう場合は、設定が正しくないので再編集を行う。

キャラクタセット・照合順序

 
default-character-set=utf8
 
[mysqld]
skip-character-set-client-handshake
default-character-set=utf8
 
#character-set-server = latin1
#collation-server = latin1_general_ci
 
[mysqldump]
default-character-set=utf8
 

InnoDB

トランザクションをサポートしているInnoDBストレージエンジンを有効にする。なおデフォルトのストレージエンジンは[http://dev.mysql.com/doc/refman/5.1/ja/myisam-storage-engine.html MyISAM]である。

skip-innodb 
# Uncomment the following if you are using InnoDB tables 
innodb_data_home_dir = C:/xampp/mysql/data/
innodb_data_file_path = ibdata1:10M:autoextend 
innodb_log_group_home_dir = C:/xampp/mysql/data/
innodb_log_arch_dir = C:/xampp/mysql/data/

MySQLで利用できるストレージエンジンは[http://dev.mysql.com/doc/refman/5.1/ja/storage-engine-overview.html MySQL AB :: MySQL 5.1 リファレンスマニュアル :: 13.2 サポートされたストレージエンジン]を参照

php.ini

php.ini(C:\xampp\apache\bin)でディレクティブを変更することでPHPの内部動作を変えることが出来ます。ディレクティブの一覧は[http://www.php.net/manual/ja/ini.php PHP: php.ini ディレクティブ - Manual]で見ることが出来ます。php.iniはC:\xampp\phpにもありますが、こちらはコマンドライン用です。編集が終わったらApacheを再起動させます。

マルチバイトのエンコーディング

PHPで扱うマルチバイト文字のエンコーディングに関するディレクティブを設定します。

mbstring.language = Japanese
mbstring.internal_encoding = UTF-8

mbstring.languageはmbstring で使用される言語設定(NLS)のデフォルト値、mbstring.internal_encodingは内部文字エンコーディングのデフォルト値を表します。マルチバイトのディレクティブの詳細な説明は[http://www.php.net/manual/ja/ref.mbstring.php PHP: マルチバイト文字列関数 (mbstring) - Manual]で見ることが出来ます。文字のエンコーディングは[http://www.php.net/manual/ja/ref.iconv.php iconv]を通しても設定することが出来ます。

Apache 2 on Windows

上記のサイトでWindows用にコンパイルされたApache 2.2系のモジュールが配布されている。

Pythonとmod_python

Python&Python for Windows extensions(pywin32)

http://python.org/download/releases/2.5.1/ よりpython-2.5.1.msiを、http://sourceforge.net/project/showfiles.php?group_id=78018 よりpywin32-210.win32-py2.5.exeをダウンロードしてインストール。

setuptools

[http://peak.telecommunity.com/DevCenter/setuptools setuptools] 様々なPythonライブラリのインストールを簡略化できる。 http://peak.telecommunity.com/dist/ez_setup.py をez_setup.pyとして保存してから

python ez_setup.py

mod_python

http://ftp.riken.jp/net/apache/httpd/modpython/win/3.3.1/

よりmod_python-3.3.1.win32-py2.5-Apache2.2.exeをダウンロードしてインストール。インストーラ中にApacheのインストール先が聞かれたら「C:\xampp\apache」を入力する。Apacheのモジュールとして読み込むためにはhttp.confに

LoadModule python_module modules/mod_python.so

を追記して再起動する。

http://localhost/xampp/phpinfo.php

のapache2handlerの項目でmod_python/3.3.1が表示されていることが確認できる。

Subversion

利用しているApacheのバージョンに対応したSubversionをインストールする必要があります。正しくないバージョンのSubversionのdllファイルでApacheのdllファイルを上書きするとApacheが起動しなくなります。その場合はXAMPPの再インストールからやり直しです。 現時点(2008年1月21日)では公式サイトに配布されているSubversionのインストーラ(バージョン1.4.4)は2.0系対応です。

導入バッチ

XAMPPがC:\xamppにインストールされており。SubvesionをC:\Program Files\Subversionにインストールをする場合、次のコードをinstall.batなどの名前で保存して実行すれば下記の作業が行われる。wgetとunzipが導入されていることを前提とする。インストール作業の間はApacheを停止させておく。 バージョンが上がったら配布元(http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=8100&expandFolder=8100&folderID=8100 )からダウンロード先とファイル名を変更すればよい。

wget http://subversion.tigris.org/files/documents/15/41077/svn-win32-1.4.6.zip
unzip -o svn-win32-1.4.6.zip
rename svn-win32-1.4.6 Subversion
mkdir "C:\Program Files\Subversion"
xcopy /S /E /F /G /H /R /K /Y Subversion "C:\Program Files\Subversion"
cd Subversion\bin
copy /Y mod_authz_svn.so/B + mod_dav_svn.so/B  C:\xampp\apache\modules
copy /Y intl3_svn.dll/B + libapr-1.dll/B + libapriconv-1.dll/B +    libaprutil-1.dll/B + libdb44.dll/B C:\xampp\apache\bin
cd ../../

インストール

C:\Program Files\SubversionにSubversionをインストールするには以下の通り。コマンドでは以下の通り。

wget http://subversion.tigris.org/files/documents/15/41077/svn-win32-1.4.6.zip
unzip -o svn-win32-1.4.6.zip
rename svn-win32-1.4.6 Subversion
mkdir "C:\Program Files\Subversion"
xcopy /S /E /F /G /H /R /K /Y Subversion "C:\Program Files\Subversion"

環境変数の設定

コマンドプロンプトから利用できるように環境変数を設定する。環境変数は「スタート」→「マイコンピュータ」→「システム情報を表示する」→「詳細設定」→「環境変数」→「システム環境変数」から行う。PATHは既に存在するので、既存の変数の後ろに追加する。APR_ICONV_PATHは新規作成する必要がある。編集が終わったら「OK」をクリックして設定を反映させる。

PATH
C:¥Program Files¥Subversion¥bin

APR_ICONV_PATH
C:¥Program Files¥Subversion¥iconv

mod_svnの設定

ファイルのコピー作業の間はApacheを停止させておく。 Subversion\binに含まれるmod_authz_svn.so、mod_dav_svn.soを C:\xampp\apache\modulesに上書きコピーする。 同じくSubversion\binに含まれるintl3_svn.dll、libapr-1.dll、libapriconv-1.dll、libaprutil-1.dll、libdb44.dllをC:\xampp\apache\binに上書きコピーする。コマンドなら以下の通り。

cd Subversion\bin
copy /Y mod_authz_svn.so/B + mod_dav_svn.so/B  C:\xampp\apache\modules
copy /Y intl3_svn.dll/B + libapr-1.dll/B + libapriconv-1.dll/B +    libaprutil-1.dll/B + libdb44.dll/B C:\xampp\apache\bin

最後にApacheにモジュールを読み込ませるためにhttp.confに以下のコードを追加する(コメントを解除する)。

LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

pythonバインディング

http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=8100&expandFolder=8100&folderID=8100 からsvn-python-1.4.6.win32-py2.5.exeをダウンロードしてインストールする。

svn-win32-1.4.6_py25.zipから導入する場合はdllファイルをpydファイルにリネームしてlibsvnフォルダとsvnフォルダをPythonがインストールされているディレクトリ内のLib\site-packagesにコピーするする必要がある。

PythonがC:\Pythonにインストールされている場合は以下のようなバッチで作業を行う ことができる。

wget http://subversion.tigris.org/files/documents/15/41078/svn-win32-1.4.6_py25.zip
unzip -o svn-win32-1.4.6_py25.zip
cd svn-win32-1.4.6\python\libsvn
ren _*.dll *.pyd
cd ../
mkdir C:\Python\Lib\site-packages\libsvn
xcopy /S /E /F /G /H /R /K /Y libsvn C:\Python\Lib\site-packages\libsvn
mkdir C:\Python\Lib\site-packages\svn
xcopy /S /E /F /G /H /R /K /Y svn C:\Python\Lib\site-packages\svn

Apacheによるリポジトリの公開

C:\svn\reposにリポジトリを作成する

md C:\svn<br />
svnadmin create C:\svn\repos

Subversionの慣例に従って、trunk、tags、brachesディレクトリを作成する。

svn mkdir file://localhost/c:/svn/repos/trunk -m "trunkディレクトリを作成"
svn mkdir file://localhost/c:/svn/repos/tags -m "tagsディレクトリを作成"
svn mkdir file://localhost/c:/svn/repos/branches -m "branchesディレクトリを作成"

http.conf(apache\conf)の末尾の方にsvnリポジトリに対するLocationディレクティブを追加する。

http.conf

LoadModule dav_module modules/mod_dav.so
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
<Location /svn>
  DAV svn
  SVNParentPath "c:/svn"
</Location>

Apacheを再起動して次のURLにアクセスする。

http://localhost/svn/repos/

svn.localhostからリポジトリにアクセスできるようにするには以下の通り。mod_dav_svn.soとmod_authz_svn.soはhttp.confで読み込まれていることを前提とする。

httpd-vhosts.conf(apache\conf\extra)


  ServerName svn.localhost
  
    DAV svn
    SVNPath "C:\svn\repos"
  

hosts(C:\WINDOWS\system32\drivers\etc)

127.0.0.1       sf.localhost

Apacheを再起動させたら次のURLにアクセスする。

http://svn.localhost/

ネットワークを通してtrunkに例えばtest.txtを追加してコミットできるか確認するには以下の通り。

svn co htp://localhost/svn/repos/trunk/
cd trunk
echo test > test.txt
svn add test.txt
svn commit -m "added test.txt"

参考 Apache2(Windows版)でSubversionをネットワークに対応 - てんぷらメモ

TortoiseSVN

TortoiseSVNはSubversionのグラフィカルインターフェイスである。32bitであるならば、http://tortoisesvn.net/downloads から本体と言語パックをダウンロードしてインストールして再起動をする。

Winmerge日本語版

WinMerge 日本語版からWinMerge 2.6+-jp-1(リリース版)日本語版 インストーラをクリックしてWinMerge-2.6.0.0-jp-1-Setup.exe.zipを入手。解凍したあと、インストーラを起動させてインストール。インストール時に「TortoiseSVNと連携させる」をチェックする。インストールして再起動したあとに「設定」→「差分ビューワ」を見てWinmergeのパスが設定されていたらOK。UTF-8の日本語ファイルが文字化けしないように「編集」→「設定」→「コードページ」で設定を行う必要がある。筆者の場合は「.html,.rc,.xmlファイルのコードページを検出する」にチェックを入れた。

xdocdiff

xdocdiff -TortoiseSVNでWord, Excel, pdfのdiffを見るツール-からxdocdiff113b.exe を入手。ダブルクリックしてインストーラを起動させてインストールする。

svnserveをサービスとして自動起動させる

svnserveコマンドによって手軽にリポジトリをネットワーク対応にできる。

サービスの登録と自動起動

sc create svnserve binPath= "\"C:\Program Files\Subversion\bin\svnserve.exe\"  --service --root C:\svn\repos" DisplayName= "Subversion Repository" depend= Tcpip start= auto

等号の後に空白を一つ入れることを忘れない。この設定後OSの起動時にsvnserveも自動起動するようになる。

サービスの起動

sc start svnserve

サービスの停止

sc stop svnserve

サービスの削除

sc delete svnserve

サービスの起動・停止はnetコマンドでも行うことができる。

サービスの起動

net start svnserve

サービスの停止

net stop svnserve

参考

svnserveからリポジトリにアクセスする

何もないところで右クリックをして「TortoiseSVN」→リポジトリブラウザから次のURLを入力する。

 svn://localhost
トップページに戻る