nanoweb

http://nanoweb.si.kz/
PHPで実装されたWebサーバ。
Windows環境だとXAMPPがあるので。それでいいかなと思うけど、
勉強会とかで不慣れな人にやってもらう場合にいいかもと触ってみる。
前提
とりあえず、PHP4が「d:\php」にインストール済みとする。
インストール先は「d:\nanoweb」とする。

インストール
上記のページから「downloads」で「nanoweb_2.2.7.zip」をダウンロードし、適当な場所に解凍。

解凍したところにあるinstall.batを叩くのだが、使う側にあまりやさしくないので編集する。
編集箇所

(L7)SET INSTROOT=c:\nanoweb
   ↓
SET INSTROOT=d:\nanoweb
SET PHPCLI=D:\php\cli\php.exe
SET PHPCGI=D:\php\php.exe

(L41)ECHO.
  ↓
ECHO Edit Config Files
%PHPCLI% instedit.php %INSTROOT% %PHPCGI%
ECHO.

(L44)ECHO c:\php\php-cli.exe %INSTROOT%\nanoweb.php --config=%INSTROOT%\nanoweb.conf >> %INSTROOT%\nanostart.bat
   ↓
ECHO %PHPCLI% %INSTROOT%\nanoweb.php --config=%INSTROOT%\nanoweb.conf >> %INSTROOT%\nanostart.bat

install.bat

@ECHO OFF
ECHO ********************************************
ECHO * aEGiS nanoweb installer v1.0 for Windows *
ECHO ********************************************
ECHO.

SET INSTROOT=d:\nanoweb
SET PHPCLI=D:\php\cli\php.exe
SET PHPCGI=D:\php\php.exe

ECHO Installing in %INSTROOT%
ECHO.

mkdir %INSTROOT%
mkdir %INSTROOT%\modules
mkdir %INSTROOT%\www
mkdir %INSTROOT%\log
mkdir %INSTROOT%\tmp

ECHO Installing nanoweb.php

copy src\nanoweb.php %INSTROOT% /Y

ECHO Installing modules

xcopy modules %INSTROOT%\modules /E /Q /Y

ECHO Installing default configuration

copy conf\nanoweb-win.conf %INSTROOT%\nanoweb.conf /-Y
copy conf\modules-win.conf %INSTROOT%\modules.conf /-Y
copy conf\vhosts-win.conf %INSTROOT%\vhosts.conf /-Y
copy conf\mime.types %INSTROOT%\mime.types /-Y
copy conf\default.theme %INSTROOT%\default.theme /-Y
copy conf\fancy.theme %INSTROOT%\fancy.theme /-Y
copy conf\nanoweb.theme %INSTROOT%\nanoweb.theme /-Y

ECHO Installing default WWW root

xcopy www %INSTROOT%\www /E /Q
copy docs\* %INSTROOT%\www\manual /Y

ECHO Edit Config Files
%PHPCLI% instedit.php %INSTROOT% %PHPCGI%

ECHO.

ECHO @ECHO OFF > %INSTROOT%\nanostart.bat
ECHO %PHPCLI% %INSTROOT%\nanoweb.php --config=%INSTROOT%\nanoweb.conf >> %INSTROOT%\nanostart.bat

ECHO Done

で、以下のファイルをinstall.batと同じフォルダにコピーしておく
instedit.php

<?php

if ($_SERVER['argc'] < 3) {
	die('引数がありません');
}
$instdir = $_SERVER['argv'][1];
if (!file_exists($instdir)) {
	die("$instdir が見つかりません");
}
$phpcgi = $_SERVER['argv'][2];
if (!file_exists($phpcgi)) {
	die("$phpcgi が見つかりません");
}

$editfiles = array(
	'nanoweb.conf', 'modules.conf', 'vhosts.conf'
);

foreach ($editfiles as $file) {
	$filename = $instdir.DIRECTORY_SEPARATOR.$file;
	if (!file_exists($filename)) {
		continue;
	}
	$buf = file_get_contents($filename);

	$buf = preg_replace('/c:\\\\nanoweb/', $instdir, $buf);
	$buf = preg_replace('/c:\\\\php\\\\php-cgi.exe/', $phpcgi, $buf);

	$fp = fopen($filename, 'wb');
	fwrite($fp, $buf);
	fclose($fp);
}

?>

これでインストールしたフォルダ(d:\nanoweb)のnanostart.batを実行すればいいはず。
ログに
WARN: function 'pcntl_fork' not available
WARN: function 'posix_setuid' not available
がでるけど、Windowsなのでforkできないせいだからだと思う。
とりあえず実行できた。Maple動かしてみるか。。。