Windows環境での運用

adiaryはWindows上のWebサーバでも動作させることが可能です。しかし、Apache以外の「AN HTTPD」や「IIS」を利用する場合はやや特殊な設定が必要になります。

Windows上で動作させる場合 Perl インタプリタとしてはActivePerlをご利用ください*1。なおWindows上でのadiaryの動作ですが、Apache以外は対応外とさせて頂きます*2*3

画像の縮小が必要な場合はImageMagickのWindows版をインストールしてくたざい。この記事も参考に

*1 : 無論Cygwin上のPerlでも構いません

*2 : AN HTTPDやIISのWebサーバとしての作りがあまり良くないためです。誤魔化せば一応動作はしますが、IISの実装はクソったれにも程があるので。

*3 : Windows環境はあまり熱心にテストしていませんので、不具合があって修正してほしい場合は必ずご報告をお願いします。→そうしないといつまで経っても修正されません

Windows上のApacheでの動作

開発環境として「Windows Apache + ActivePerl」を利用していた時期もありましたので、問題なく動きます。

動作確認済環境。

  • Apache 2.0 + ActivePerl 5.8
  • AnHttpd 1.4x + ActivePerl 5.8

AN HTTPDでの動作

adiaryをNHPスクリプトとして実行するように設定します(perlis.dllを関連づける)。

adiary.conf.cgi の最初の方に次のように記述してください。

<$ifset(ENV.REQUEST_URI eq ENV.PATH_INFO, ENV.PATH_INFO, '')>
<$Use_PATH_INFO_orig = 1>
<$Use_QUERY_STRING_orig = 1>
<$NHP_mode = 1>

adiary Ver1.32以前は下のように記述します

<$ENV.REQUEST_URI .= ENV.PATH_INFO . if(ENV.QUERY_STRING ne '', '?' . ENV.QUERY_STRING)>
<$ifset(ENV.REQUEST_URI eq ENV.PATH_INFO, ENV.PATH_INFO, '')>
<$NHP_mode = 1>

IIS での動作(共通)

  • IISのスクリプト動作設定
    • 動作(動詞と書かれている)に対する制限をしないこと
    • 「スクリプトエンジン」にチェックすること
    • 「ファイルの存在を確認する」をチェックしないこと

IISはWebサーバとしては信じられないぐらい欠陥品です(少なくともIIS5.x)。今にも壊れそうな屋台の上で、スクリプトを無理矢理動かしていると思ってください。*4

IIS での動作(perlis.dll利用)

adiary.conf.cgi の最初の方に次のように記述してください。

<$ENV.REQUEST_URI = ENV.PATH_INFO . if(ENV.QUERY_STRING ne '', '?' . ENV.QUERY_STRING)>
<$ENV.PATH_INFO   = substr(ENV.PATH_INFO, length(ENV.SCRIPT_NAME))>
<$NHP_mode = 1>

この環境では ImageMagick(画像縮小に必要)をインストールしても使えません。画像縮小をご利用の方は、他の方法をご検討ください。

IIS での動作(cgi動作/perl.exe利用)

adiary.cgi, upload.cgi, mail.cgi の2行目に、次の例のように設置ディレクトリを記述してください。

chdir("c:/Inetpub/xxxx/adiary/");

また、adiary.conf.cgi の最初の方に次のように記述してください。

<$ENV.REQUEST_URI = ENV.PATH_INFO . if(ENV.QUERY_STRING ne '', '?' . ENV.QUERY_STRING)>
<$ENV.PATH_INFO   = substr(ENV.PATH_INFO, length(ENV.SCRIPT_NAME))>
<$ENV.SERVER_PROTOCOL = "1.0">

最後の行は Windows2000付属IIS(Ver5.0)のバグ対策です。6.0以降は不要だと思いますが確認していません(詳細情報)。

*4 : 個人的感想を言うならば、あまりにも酷い実装でまともに動作する方が奇跡です。