スタンドアローン/EXE版
Webサーバが不要のスタンドアローン版とWindows用EXE版がVer3.20以降収録されています。
実行ファイル
- adiary.httpd.pl
- Perl用の実行ファイルです。Perl本体およびImage::Magick等のライブラリをインストールしてください。
- adiary.exe (x64)
- Perlを内包していますので、Perl本体は不要です。Windows用ZIP版にのみ含まれます。*1
システム更新時にメモリリークが起こりやすいようなので、更新時は再起動を推奨します。
オプション(引数)
"-h"オプション付で実行するとヘルプが表示されます。以下オプションの説明になります。ヘルプと内容が異なる場合、ヘルプを優先してください。
Usage: ./adiary.httpd.pl [options] available options are: -p port bind port (default:8888, windows:80) -t timeout connection timeout second (default:3, min:0.001) -d daemons start daemons (default:10, min:1) -m max_req maximum cgi requests per daemon (default:10000, min:100) -e mime_file load mime types file name (default: /etc/mime.types) -c fs_code set file system's code (charset) -b bufsize buffer size [KB] (default:1024 = 1M, min:64) -u filename UNIX domain socket mode -f use fork() -i use threads (ithreads) -k1 connection keep-alive enable (default) -k0 connection keep-alive disable -t0 set ENV SatsukiTimer=0 -t1 set ENV SatsukiTimer=1 -s silent mode -sc silent mode for cgi access -sf silent mode for file access -n do not open web browser -?|-h view this help
- -p
- bindするポート番号を指定します。デフォルトは 8888、Windowsでは 80 です。
- -t
- タイムアウト(秒)を指定します。指定秒数経過するとTCP接続を切断します。長い値を指定すると、keep-alive時の効率がよくなりますが、接続リソースを使い尽くすDoS攻撃に弱くなります。
- -d
- デーモン数*2を指定します。ここで指定した数だけ同時接続を受け付けます。
- -m
- 1つのデーモンあたりの最大CGI処理回数を指定します。この数を超えるとデーモンが再起動されます。メモリリーク対策用の設定になります。0を指定すると最大数が設定されます。静的ファイルアクセス(CGIアクセス以外)はカウントされません。
- -e
- FileTypeを記述したmimeファイルを指定します。Linux等ならば /etc/mime.types を自動で読み込みます。内部で必要最低限の設定はされていますので、ほとんどの場合、指定する必要はありません。
- -c
- ファイルシステムの文字コードを指定します。自動認識に失敗するときに指定してください。
- -u
- 指定したUNIX domain socketを開きます。TCPポートは開かなくなります。
- -b
- ファイル送信時*3のメモリバッファのサイズを指定します。「1M」や「256K」等の単位を付けて指定することもできます。数字のみ指定した場合は、KB単位となります。
- -f
- forkモードでデーモンを起動します。Windowsでは動作しません。非Windowsでのデフォルトです。
- -i
- ithreads(threads)モードでデーモンを起動します。Windowsでのデフォルトです。
- -k1
- keep-aliveをonにします。デフォルトです。Chrome以外のブラウザでは、keep-aliveをoffのほうが接続効率は良くなります。
- -k0
- keep-aliveをoffにします。Chrome等では、keep-aliveをoffにすると接続効率が極端に悪くなります。
- -t0
- 環境変数に SatsukiTimer=0 を設定します。タイマー計測が強制オフになります。
- -t1
- 環境変数に SatsukiTimer=1 を設定します。タイマー計測が強制オンになります。
- -s
- サイレントモードに設定します。接続ログを標準出力しなくなります。
- -sc
- CGIアクセスのログを出力しなくなります。
- -sf
- ファイルアクセスのログを出力しなくなります。
- -n
- 起動時に自動でブラウザを開かなくなります(Windowsのみ)。
- -h, -?
- HELPメッセージを表示します。
リバースProxyによる運用
adiary.httpd.pl をApache等リバースproxyより適当なWebフォルダに貼り付けることができます(Ver3.40以降)。
# Reverse Proxy ProxyPass /adiary/ http://localhost:8888/adiary/
この場合、adiary.httpd.pl に Web working path を指定してあげる必要があります。
./adiary.httpd.pl /adiary/
Apacheで試したところ、直接アクセスした場合の8割程度の性能になるようです。
UNIX domain socketを使用する場合
# Reverse Proxy ProxyPass /adiary/ unix:/path/to/adiary/adiary.sock|http://localhost/adiary/
./adiary.httpd.pl -u adiary.sock /adiary/
adiary.exeの生成方法
Strawberry Perlと pp を使って adiary.httpd.pl をコンパイルしたものです。管理が面倒なのでx64専用としていますが、コンパイルしなおせばx86(32bit)でも動作すると思います。
- 更新が必要な場合は自動検出しエラーを出力します。*4
exeの生成
- https://github.com/nabe-abk/adiary/blob/master/__tool/pp.bat
- https://github.com/nabe-abk/adiary/blob/master/__tool/pp.opt
PAR.pmへのパッチ
sub import { my $class = shift; PAR::SetupProgname::set_progname(); PAR::SetupTemp::set_par_temp_env(); # patch for sitelib by nabe@abk --------- if ($ENV{PAR_TEMP} && $^O eq 'MSWin32') { my %conf; foreach(keys(%Config)) { $conf{$_} = $Config{$_}; } *Config::Config = \%conf; # replace read-only object my $base = "$ENV{PAR_TEMP}\\inc"; $Config::Config{sitelib} = "$base\\site\\lib"; $Config::Config{sitelibexp} = "$base\\site\\lib"; } # patch end -----------------------------
Crypt::glibc
WindowsでCrypt/MD5、Crypt/SHA256、Crypt/SHA512を実行するためのライブラリ。