スタンドアローン/EXE版

Webサーバが不要のスタンドアローン版とWindows用EXE版がVer3.20以降収録されています。

実行ファイル

  • adiary.httpd.pl
    • Perl実行ファイルですので、Perl本体およびImage::Magick等のライブラリをインストールしてください。
  • adiary.exe (x64)
    • Perlを内包していますので、Perl本体は不要です。Windows用ZIP版にのみ含まれます。*1

システム更新時にメモリリークが起こりやすいようなので、更新時は再起動を推奨します。

*1 : githubには置いてありません。githubで管理する場合は、adiary.exeのみ抜き出して使用してください。

使い方(引数)

"-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)
  -m mime_file  load mime types file name (default: /etc/mime.types)
  -d deamons    start deamons (default:10, min:1)
  -c fs_code    set file system's code (charset)
  -f            use fork()
  -i            use threads (ithreads)
  -k, -k1       connection keep-alive enable (default)
  -k0           connection keep-alive disable
  -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するポート番号を指定します。デフォルトは adiary.httpd.pl では 8888、Windowsでは 80 です。
-t
タイムアウト(秒)を指定します。指定秒数経過するとTCP接続を切断します。長い値を指定すると、keep-alive時の効率がよくなりますが、接続リソースを使い尽くすDoS攻撃に弱くなります。
-m
FileTypeを記述したmimeファイルを指定します。Linux等ならば /etc/mime.types を自動で読み込みます。内部で必要最低限の設定はされていますので、ほとんどの場合、指定する必要はありません。
-d
デーモン数(スレッド数)を指定します。ここで指定した数だけ同時接続を受け付けます。
-c
ファイルシステムの文字コードを指定します。自動認識に失敗するときに指定してください。
-f
forkモードでデーモンを起動します。Windowsでは動作しません。非Windowsでのデフォルトです。
-i
ithreads(threads)モードでデーモンを起動します。Windowsでのデフォルトです。
-k, -k1
keep-aliveをonにします。デフォルトです。Chrome以外のブラウザでは、keep-aliveをoffにするほうが接続効率は良くなります。
-k0
keep-aliveをoffにします。Chrome等では、keep-aliveをoffにすると接続効率が極端に悪くなります。
-s
サイレントモードに設定します。接続ログを標準出力しなくなります。
-sc
CGIアクセスのログを出力しなくなります。
-sf
ファイルアクセスのログを出力しなくなります。
-n
起動時に自動でブラウザを開かなくなります(Windowsのみ)。
-h, -?
HELPメッセージを表示します。

adiary.exeについて

Strawberry Perlと pp を使って adiary.httpd.pl をコンパイルしたものです。管理が面倒なのでx64専用としていますが、コンパイルしなおせばx86(32bit)でも動作すると思います。

  • スタートアップスクリプトのため、めったに更新することはありません。
  • 更新が必要な場合は自動検出しエラーを出力します。*2

exeの生成

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 -----------------------------

*2 : エラーをSTDERRに出力し、入力待ちを行ってからexit(-1)します。

OK キャンセル 確認 その他