なでしこ&葵2まとめに戻る

日本語プログラミング「なでしこ」でWebサイトをコントロールしたい。そんなときに使うのが、CGIです。ここでは、Windowsに標準でついているWebサーバー「IIS」を使って、なでしこCGIを実現します。

手元のWindowsマシンと、レンタルサーバーでやってみました。

手元のWindowsマシンで実現する

Windows XP Professsional SP3とIIS5.1をベースに動作確認しています。

サーバーとなるマシンの状態

Webサーバーは、広くネットワーク(含むインターネット)に公開されるため、セキュリティ設定が不可欠です。ここでは、いくつかのポイントを紹介します。

ただし、これは新たにWebサーバーを用意する場合の話。既存のパソコンを流用して、実験用とか社内用に設置するだけ(つまり、外部のインターネットから接続させない)なら、あまり考えなくていいかも。社外向けのWebサーバならレンタルVPSのほうがずっと簡単だと思う。

NTFS

さて、Webサーバーとなるマシンは、FATまたはFAT32 ファイル システムではなく、NTFS ファイル システムを使用することが奨励されている。NTFS を使用すると、Web サーバーのファイルやディレクトリへのアクセスを制限できる。特定のユーザーやグループに許可する、サーバーのファイルやディレクトリへのアクセス レベルを構成することもできる。(参照)

アクセス許可

さらに、ファイルやフォルダに対するアクセス許可を細かく設定できるよう、次のように設定を変更する。

  1. 「マイコンピュータ」を開く
  2. 「ツール」→「フォルダオプション」
  3. 「表示」タブを選択
  4. 「簡易ファイルの共有を使用する(推奨)」をオフにする(チェックをはずす)
  5. 「OK」をクリック

これで、ファイルやフォルダを右クリック->「プロパティ」を選択したときに、「セキュリティ」タブが表示されるようになる。この「セキュリティ」タブで、ユーザーごとのアクセス権限を細かく設定する。

使い始める

では、必要なツール類の導入と設定を行います。

準備

  1. あらかじめ、WebサーバーとなるPCに、なでしこをインストールしておく
  2. WindowsにIISをインストールする。->windows_iis

なでしこをIISに追加

  1. 「コントロールパネル」-「管理ツール」を呼び出す
  2. 「インターネットインフォメーションサービス」をダブルクリック
  3. 左側のツリーを展開して、「Webサイト」を右クリック->「プロパティ」
  4. 「Webサイトのプロパティ」で「ホームディレクトリ」タブを選択
  5. 「構成」ボタンをクリック
  6. 「アプリケーションの拡張子マッピングの追加/編集」で、下記を設定
    • 実行ファイル "C:\Program Files\nadesiko_lang\cnako.exe" %s
    • 拡張子 .nako
    • すべての動詞:オン
    • スクリプトエンジン:オン
    • ファイルの存在を確認する:オン
  • 全てのダイアログで「OK」ボタンを押していく。

テストコード

「Content-Type: text/html

<title>なでしこCGIの実験</title>
なでしこCGIで動いています。<br>
なでしこのバージョンは{ナデシコバージョン}です。」を表示。

ApacheのCGIスクリプトと違い、冒頭に「#!C:\(xamppのインストール先)\cnako\cnako.exe」は不要らしい。

動作確認

  1. テキストファイルとして、テストコードを記述する。
  2. このテキストファイルをtest.nakoとして、IISのwwwrootに保存
  3. http://localhost/test.nako にアクセスする

設定

レンタルサーバーとかWebホスティングサービスは、Linux+Apacheを使っている場合が多い。なので、IISの利用は、慣れていない人もいるかもしれない(私も)。ここでは、IISの設定で気づいたポイントを整理します。

ファイルのアクセス権限

スクリプトで、ファイルを書き込んだりフォルダを作成/削除する場合

  • 親フォルダのプロパティ
    1. 親フォルダを右クリック->「プロパティ」
    2. 「セキュリティ」タブで、インターネットセキュリティアカウント(Internet Guest Acount)を選択
    3. アクセス許可の"変更"をオン
  • インターネットインフォーメーションサービスの設定パネル(コントロールパネルの管理ツールから呼び出すやつ)
    1. 対象フォルダを右クリック->「プロパティ」
    2. 「ディレクトリ」タブで、実行アクセス権=スクリプトのみ

FastCGI

FastCGIを入れると、スクリプトの実行が早くなったりするらしい。WPIが入れてあると、簡単にインストールしてくれる。もしかすると、デフォルトで入るのか?

  1. IIS.netにアクセスする > http://www.iis.net/ (英語)
  2. Downloadページにアクセス
  3. 「Install」ボタンをクリック
  4. WPIが立ち上がる(日本語)

参考リンク

レンタルサーバーで実現する

WindowsVPSを借りて、そこのWindowsServer2008+IIS7.0で、なでしこCGIを実現してみました。

準備

いろいろ人柱になって、やってみました。ローカルPCに、なでしこをインストールしておいて、そちらで確認しながらやると確実だと思います。

関連ファイルをサーバーにコピー

ローカルPCのインストール済みなでしこから、以下のファイル&フォルダをコピー

  • 転送元ファイル
    • cnako.exe
    • libフォルダ
    • plug-insフォルダ
  • 転送先
    • C:\Program Files (x86)\cnako

なでしこをIISに追加

  1. 「スタート」-「管理ツール」-「インターネットインフォメーションサービス」
  2. 左側のツリーを展開して、「Default Web Site」を選択する
  3. 中央枠の「ハンドラマッピング」をダブルクリック
  4. 右側の「操作」ウィンドウの「モジュールマップの追加」をクリック。
  5. 次のように設定する
    • 要求パス *.nako
    • モジュール CgiModule
    • 実行可能ファイル "C:\Program Files (x86)\cnako\cnako.exe" %s
    • 名前 nadeshiko CGI Script

テストコード

「Content-Type: text/html

<title>なでしこCGIの実験</title>
なでしこCGIで動いています。<br>
なでしこのバージョンは{ナデシコバージョン}です。」を表示。

ApacheのCGIスクリプトと違い、冒頭に「#!C:\(xamppのインストール先)\cnako\cnako.exe」は不要らしい。

動作確認

  1. テキストファイルとして、テストコードを記述する。
  2. このテキストファイルをtest.nakoとして、IISのwwwrootに保存
  3. IISを起動する
  4. 下記にアクセスする
http://(サーバーのIPアドレス)/test.nako

設定

ファイル書き込みやフォルダ作成をするスクリプトの場合、次のようにして、アクセス許可を設定しておいたほうがよい場合がある。対象バージョンは、WindowsServer2008+IIS7あたり。

  1. アクセス許可を設定したいフォルダを右クリック->「プロパティ」
  2. 「(フォルダ名)のプロパティ」ダイアログで「セキュリティ」タブを選択
  3. 「グループ名またはユーザー名」下の「編集」ボタンをクリック
  4. 「(フォルダ名)のアクセス許可」ダイアログで「追加」ボタンをクリック
  5. 「ユーザーまたはグループの選択」ダイアログで「詳細設定」ボタンをクリック
  6. 「今すぐ検索」ボタンをクリック
  7. 表示されたグループ名の中から「IUSR」グループを選択して、アクセス許可を与えるグループ名として追加する
  8. 「(フォルダ名)のアクセス許可」ダイアログまで戻ったら、「IUSR」グループを選択
  9. この「IUSR」の"変更"を許可する

以下、動作テストコード

#2010-11-22 Yutaka Kachi
#アクセスした日時を記録
#ファイルアクセスとアクセス許可の動作確認用
#同一フォルダにテキストファイル「log.txt」を配置すること

!『cgi.nako』を取り込む
ログファイル=「{母艦パス}log.txt」

本文にログファイルを開く。
最新ログ=「{今日}:{今}」

「Content-Type: text/html

<title>なでしこアクセスログ</title>
前回アクセス:{本文}<br>
最新アクセス:{最新ログ}」を表示。

最新ログをログファイルに書き込み。

●書き込み(メッセージを、ファイルパスに)
	本文=メッセージ&改行
	ファイルパスをファイルロック
	もし、(それ=1)ならば、
		本文をファイルパスに保存
		ファイルパスをファイルロック解除

ちなみに、LinuxとかUnixだとアクセス制御と呼ばれる機能は、Windowsではアクセス許可と呼んでいる。

参考リンク

以下は、相互に矛盾しているような気がする。


  トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2011-04-20 (水) 14:36:54 (4749d)