このサイトでは、分析、カスタマイズされたコンテンツ、および広告に Cookie を使用します。このサイトを引き続き閲覧すると、Cookie の使用に同意するものと見なされます。
Hi, Developers,
straightapps.com ロゴ
作成 November 12, 2020
トップページ > Web 開発トップ > ActivePerl をセットアップして CGI をローカルで実行
line
Web 開発
line

ActivePerl をセットアップして localhost で Perl CGI を使えるようにします。

IIS 10 express をセットアップして localhost を使う」 で Windows 10 Pro に IIS 10.0 をセットアップしました。 これで、ローカルな環境にサーバーソフトがインストールされましたので、 localhost が利用可能となり、JavaScript の XMLHttpRequest 機能が利用できるため、 クライアント側のデバッグが、ローカルで実行できるようになりました。 例えば、「サーバーにある CSV ファイルを読み込む」にあるように、 サーバーにあるテキストファイルを読み込んで処理する、のようなことが、 実際のサーバーがなくてもテスト可能となりました。

今度は、ファイルのアップロード処理などを実行する方法を探しました。 ファイルのアップロードを実現するには、サーバー側で CGI を動作させる必要があり、 それを実際のサーバーで行うのは危険かつ迷惑になりかねません。 CGI をローカルでテストできるよう、セットアップが必要です。 ここでは Perl で書かれた CGI を実行するためのソフトを導入します。

▼ セクション一覧

すでに IIS がセットアップ済みかどうかを確認する
ActivePerl をダウンロードする
ActivePerl をインストールする
IIS を設定する
cgi の動作をテストする
このあとは・・・

なお、本サイトのご利用に際しては、必ずプライバシーポリシー(免責事項等)をご参照ください。

すでに IIS がセットアップ済みかどうかを確認する

投稿 November 9, 2020

ローカルな場所に置いた html ファイルで、HTTP リクエストを含む JavaScript コードを実行しても、 サーバーがセットアップされていなければ失敗します。 XMLHttpRequest

また、 IIS ( Microsoft が提供する、Internet Information Service というサーバー代理プログラムです。 ) などのソフトがセットアップ済みであっても、 C:\website\myscript.html のように html ファイルにアクセスすれば、 同じように失敗します。

サーバーソフトがインストールされ、セットアップされているかどうかを確認するには、 ブラウザのアドレスバーに、 http://localhost/ のように入力してみます。 意味としては、ローカルにあるサーバーのルートを表示する、です。

IIS などのサーバーソフトがセットアップされていない場合、エラーとなり、 「このサイトにアクセスできません」のように表示されてしまいます。

このサイトにアクセスできません

もし IIS がセットアップ済みなら、IIS のトップページが表示されます。

IIS トップページ

インストールやセットアップについては、 「IIS 10 express をセットアップして localhost を使う」 に書いています。

▲ページ先頭へ

ActivePerl をダウンロードする

投稿 November 9, 2020

ネットでは、さまざまな Perl 実行環境が紹介されていますが、 調べたところでは、Win10 + IIS に一番簡単に導入できそうなのは、 ActivePerl であると判断しました。

ActivePerl をネットで検索すると、最初に、または最初のほうに 「窓の杜」が出てきます。 ここにあれば、安心してインストールできると思えます。 実際にはここからはダウンロードできず、公式サイトにリンクしますが、危険はなさそうです。

公式サイトからダウンロード」ボタンをクリックすると、 提供元である ActiveState のサイトの Perl のページにジャンプします。 ボタンのリンク先が別のフォルダにリダイレクトされているようで、Edge で読み込みに時間がかかっています。 かなり待ちましたが、待っていたらページが表示されました。 開かれたページは、
https://www.activestate.com/products/perl/
です。

Perl from ActiveState

以降、ご参考までに簡単に訳を書きますが、必ずしも正確でない可能性もありますので、 それをご理解の上、読み進めてください。

ActiveState 提供の Perl

小さい字は説明です。

ActivePerl : ActiveState が提供する、商用レベルの Perl で、あなたのミッション・クリティカルなアプリケーションをサポートします。 Windows で、Mac で、そして Linux で、無料で Perl 開発をスタートしよう!

DOWNLOAD NOW」ボタンが見え、ページが終わっているように見えますが、 スクロールさせていくとまだまだ先があります。

ActiveState 社は、 カナダのソフトウェア会社のようです。 Perl やそのモジュールを提供していますが、サポートで利益を得る構造になっているようです。 無料でソースも参照でき、それを自分用にビルドすることもできるようですが、 入手するには無料のアカウントを作成する必要がありそうです。

あとは宣伝などですので、ページのトップに戻って「DOWNLOAD NOW」ボタンをクリックします。

Get ActivePerl Community Edition

初期状態で、上図のように Windows が選択されており、バージョン 5.26 か 5.28 かを選べるようです。 その下に書いてありますが、32-bit 版やこれより古いバージョンは、 ActiveState Platform の有料サブスクリプションでダウンロードできるようです。 「See pricing here」 のリンク先を見てみると、コミュニティ版は無料ですが、それ以上は年額そこそこかかります。 価格表のページの下のほうに「Create Account」ボタンがありますが、 一般的な手順を追いたいので、今は価格表のページを閉じます。

その下には、ちょっとした説明が書かれています。

ActivePerl は現在、ActiveState Platform 経由で提供されています。 無料アカウントを作成して、これらの利益を享受しよう。
・Perl をダウンロードして更新の通知を受ける
・Perl を必要な部分だけカスタマイズする
・あなたのチームで Perl 実行環境をシェアする

新しいほうの「ActivePerk 5.28」のボタンをクリックしてみます。 ActivePerl-5.28.msi というファイルのダウンロードに見えます。 拡張子 msi は、Windows インストーラーパッケージ、 すなわち Microsoft 形式のインストーラーであることを意味しています。

Thanks For Downloading

ログインページが出て無料アカウント作成に進むのかと思いきや、直接ダウンロードされました。 ブラウザは Edge で操作していますので、ウィンドウの左下にダウンロード状況が表示されます。

このダウンロード中画面にあるボタンは、このダウンロードに時間がかかるかスタートしない場合、 別サイトからダウンロードするためのリンクのようです。

その下の説明としては、前の繰り返しですが、アカウント登録が必要になる場合があり、 また、EXE や ZIP 形式の ActivePerl は、登録後の画面のビルドタブにある、ということです。 32 ビット版のインストーラーが欲しい場合は、有料オプションの「チーム・ティア」を契約する必要がある、 ということです。

ActivePerl-5.28.msi

Edge では保存先フォルダ指定画面が出なかったので、ファイル名右側の「横3点メニュー」を左クリックし、 「フォルダーに表示」を選ぶと、エクスプローラーが開かれます。 ダウンロードフォルダにダウンロードされており、 ファイルサイズを見ると、6 MB 弱でした。

Email Address 入力欄

画面をスクロールしていくと、メールアドレスの入力欄があります。 通常入力必須を意味する、赤い星マークもついています。

私たちが開発する素敵なモノの最新情報を得よう! そして ActivePerl の更新版が出たら、通知を受けよう!

ということですが、「いつでも購読を中止できます」とあり、 登録すべきかどうかを迷いますが、必要になるまでは入力しないこととします。

ページの最後に「開発目的を超えて使う、例えばアプリと一緒に配布する場合は連絡が必要です」とありますが、 私は開発目的のみなので、問題ありません。

結局、ここでのメールアドレス入力は自由のようで、登録しなくても問題なさそうです。 あるいは、インストール時に必要になったら、で良さそうです。

▲ページ先頭へ

ActivePerl をインストールする

投稿 November 9, 2020

ダウンロードされた ActivePerl-5.28.msi を実行して、インストールします。 まだ画面の左下にダウンロードしたファイルが表示されていれば、「ファイルを開く」で実行します。 閉じてしまった場合は、エクスプローラーでダウンロードフォルダを開けば見つかります。 保存先フォルダを指定してダウンロードした場合は、指定したフォルダです。

Welcome to the ActivePerl-5.28 Setup Wizard

セットアップ・ウィザードが開きましたので、簡単にインストールできそうです。 まずは「Next」ボタンをクリックし、インストールを開始します。

Privacy Consent Notice

プライバシー同意書です。

ActiveState は、利用統計とエラー時の診断データを収集します。 収集されたデータは、プライバシーポリシーに準じて利用され、製品の改善や欠陥の修正、不法利用の防止に使用されます。

I agree のボタンとかチェックとかありませんが、Next で同意したことになるのでしょう。

ActiveState Privacy Policy の部分がリンクになっていますが、 続行するには拒否できませんし、問題なさそうなので、先に進みます。

End-User License Agreement

今度はライセンス同意書です。 ウィンドウは狭く、文字は大きいですが、スクロールバーの様子からわかるように、長いです。 全文を訳したかったところですが、読むのでさえ大変なので、やめました。 が、無視すると良くないので、インストール時点のバージョンを置いておくことにします。

原文を展開

全体的には、規約違反になる使い方をしない開発目的で使うそうでない場合はライセンスを得る、ということを言っているようです。 同意する場合は「I accept the terms in the License Agreement」にチェックを入れ、 押せるようになった「Next」ボタンを押します。

Destination Folder

インストール先のパスを決めます。

画像にあるパスがデフォルトになっていますが、 私は SSD で容量が少ない C ドライブではなく、HDD で容量が多い D ドライブにしたいので、 「Change...」ボタンをクリックし、D:\Perl64\ に書き換えます。 ダイアログから「OK」ボタンでこの画面に戻って、 インストール先のパスが更新されていることを確認します。 パスはあらかじめ作成しておく必要はありません。 「Next」ボタンを押して、先に進めます。

Ready to install ActivePerl-5.28

インストールの準備完了です。 指定のパスにインストールされ、拡張子 pl と wpl との関連付けが行われる、と書かれています。

Install ボタンをクリックして、ActivePerl-5.28 のインストールを開始してください。 Perl は指定のパスに追加され、ファイル拡張子 .pl と .wpl との関連付けが作成されます。

Install」ボタンにシールドのアイコンがあるので、管理者権限が必要です。 インストールを続けるには、「Install」ボタンをクリックします。

UAC、ユーザーアカウント制御画面のあと、インストールが始まります。

Installing ActivePerl-5.28

しばらくするとインストールが完了しました。

Completed the ActivePerl-5.28 Setup Wizard

ActivePerl-5.28 は、ActiveState replacing PPM に変わる新しいコマンドライン・インターフェイス、 State Tool を使用して、システムへのインストールに成功しました。 コマンド・プロンプト画面で state help と入力して State Tool を試し、 何ができるかを知ってください。

「新しいコマンドライン インターフェイス State Tool」と書かれている部分が気になります。 コマンドプロンプトで "state help" と入力すると、何ができるかを知ることができるようですが、 インストールに成功していますので、今は試しません。

State Tool と書かれたリンクを開いてみると、 説明ページが開きました。 ここにリンクだけ残して、先に進みます。

その下にあるチェックボックスは「リリースノートをブラウザで開く」です。 「Open Release Notes in your browser.」にチェックを入れて、 「Finish」ボタンをクリックしてみます。 すると、インターネット上にある 「ActivePerl 5.28 Release Notes」 が開きました。 これも深く追求しないで、先に進みます。

インストールされた D:\Perl64 フォルダのサイズは 140 MB 弱でした。

▲ページ先頭へ

IIS を設定する

投稿 November 9, 2020

インストールしただけでは、cgi を動作させることはできません。 .pl と .wpl は関連付けが行われたはずなので大丈夫かもしれませんが、 .cgi で動作させたいので、設定が必要です。

では、IIS を設定します。

IIS の CGI 機能はすでにインストールしています。 IIS のセットアップ時にインストールしなかった場合は、 「IIS 10 express をセットアップして localhost を使う」 にある手順に従って、追加でインストールしてください。

インターネット インフォメーション サービス(IIS) マネージャー

画面左下の Windows アイコン(スタートメニュー)から、 インストールされているプログラムのリストを下にスクロールさせ、 「Windows 管理ツール」を見つけます。 それをクリックで開き、その中にある「インターネット インフォメーション サービス(IIS)マネージャー」を起動します。 Windows アイコンの右に「ここに入力して検索」と書かれている入力欄があれば、 コルタナが有効になっていますので、ここに「iis」と入力して起動するほうが早いみたいです。

インターネット インフォメーション サービス(IIS)マネージャー

IIS マネージャーウィンドウの左側を見ると、このコンピュータの名前が選択されていますので、 このまま設定を変更すると、この PC 全体の設定になると思われます。 個別に設定するには、その PC 名を開き、さらに「サイト」を選びます。

サイト Default Web Site

Default Web Site」が見つかりますので、それを選択するほうが安全みたいです。

Default Web Site を選択

選択できたら、画面右側の IIS 欄にある「ハンドラー マッピング」をダブルクリックして開きます。

この画面には、パス欄に関連付けられた拡張子が列挙され、それぞれそれを処理するプログラムがハンドラー欄に表示されているようです。 *.cgi がありませんので、このままでは拡張子 cgi は動作しないはずです。

ハンドラー マッピング

.cgi を実行するプログラムを登録します。

まず、画面右上にある「スクリプト マップの追加...」をクリックします。 すると、「スクリプト マップの追加」ダイアログが表示されますので、 拡張子 cgi と ActivePerl を関連付けます。

スクリプト マップの追加

上記のように、 要求パスの欄には「*.cgi」、 実行可能ファイルの欄には「D:\Perl64\bin\perl.exe "%s" %s」 と入力するといいようです。 もちろん、「実行可能ファイル」のパスは、実際にインストールしたパスにしてください。 デフォルトでは C ドライブです。

plファイルなども実行する場合は、要求パスを「*.pl」としたものを追加する必要があるようですが、 使用予定がないので試していません。 インストール時に関連付けができたはずなので、登録は不要かもしれません。

「要求の制限...」の中はいじることなく、 「OK」ボタンをクリックすると、確認メッセージが表示されました。

スクリプトマップの追加

はい」ボタンをクリックして完了します。

このサイトにアクセスできません

CGI が無事に追加されました。

▲ページ先頭へ

cgi の動作をテストする

投稿 November 11, 2020

これで Perl の cgi がローカルで動作するようになったか、確認します。

IIS の使えるフォルダに、cgi プログラムを作成します。 私は IIS のデフォルトのパス C:\inetpub\wwwrootweb サブフォルダを作成していますので、そこに cgi ファイルを作成します。

IIS をセットアップしたあとの初期状態では、フォルダ内に新しいファイルを作成することはできません。 「IIS 10 express をセットアップして localhost を使う」に書いた 「wwwroot 配下で編集可能にする」 のように、アクセスの許可を設定する必要があります。

C:\inetpub\wwwroot\web に、 test.cgi として、次のコードを保存しました。 念のためですが、単なるテキストファイルですので、いったん test.txt を作成し、 コードを入力した後、拡張子を cgi に変えれば OK です。 Unicode ではないプレーンテキストです。

#!/usr/local/bin/perl

print "Content-type: text/html\n\n";
print "Hello Worlds!";

exit;

ブラウザに http://localhost/web/test.cgi のように入力して、エラーがでなければ OK です。

ローカルでテストするぶんには、1行目の perl のパス指定は不要みたいです。 実際のサーバーでは必要になりますので、サーバーにあわせたパスを記述しておきます。

最後の exit も、なくても大丈夫みたいです。 コードの終了を明示的に書いている、ということです。

もしブラウザに、localhost を使わず、 C://inetpub/wwwroot/web/test.cgi のように入力しても、cgi は実行されず、 (ブラウザに依存するかも知れませんが)テキストファイルとして表示されてしまいます。

▲ページ先頭へ

このあとは・・・

投稿 November 11, 2020

ここまでの設定により、ローカルの環境で、 Perl で書かれた cgi プログラムを実行できるようになりました。

このあとは、サーバーで実際に動作している、 ローカルファイルのアップロード cgi を実行させて、 さらにその先の処理に進められるかを確かめます。

結果はテスト後、追記予定です。

▲ページ先頭へ
line
関連トピックス
line

IIS 10 express をセットアップして localhost を使う

Win10 Pro で、http://localhost/ を利用するため、IIS 10 をセットアップする手順について書いています。

サーバーにある CSV ファイルを読み込む

サーバーに置いた csv ファイル、すなわちテキストファイルを読み込んで処理する JavaScript プログラムについて、書いています。


その他のおすすめ

ウェブ開発に関するトピックは、「ウェブ開発トップ」にまとめられています。



© 2017-2021 StraightApps.com 無断転載を禁じます。No reproduction without permission.