Windows XPでWebサーバの構築を行い、PHP+MySQLの開発環境を整える。開発支援のためにSubvesion・Trac・MediaWikiを導入する。
Windowsではライセンスにより同時接続数が制限されている。ネットワーク経由の同時接続はWindows XP Home Editionの場合は5でWindows XP Professionalの場合は同時接続数が10である。同時アクセス数を調べるには下記の人力検索はてなの記事を参照。
WebアプリケーションはUnix系のOSを前提にしているのでdiff3やtarなどネイティブのWindowsには存在しないコマンドが多く存在する。GnuWin32は大量のUniz系のコマンドツールを一括導入することが出来る。cURLは各種プロトコルをサポートするライブラリでパッケージのダウンロードなどに利用される。PHP関数(PHP: CURL, Client URL Library 関数 - Manual)やMac OS Xにも導入されている。
localhostでサブドメインを利用する場合、次のようにバーチャルホストを設定した。編集が終わったらApacheを再起動する。
httpd-vhosts.conf(C:\xampp\apache\conf\extra)
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot "C:/xampp/htdocs"
ServerName localhost
</VirtualHost>
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(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]を通しても設定することが出来ます。
上記のサイトでWindows用にコンパイルされたApache 2.2系のモジュールが配布されている。
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として保存してから
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が表示されていることが確認できる。
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
ファイルのコピー作業の間は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
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
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は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コマンドによって手軽にリポジトリをネットワーク対応にできる。
サービスの登録と自動起動
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
参考
何もないところで右クリックをして「TortoiseSVN」→リポジトリブラウザから次のURLを入力する。
svn://localhost
トップページに戻る