プロデルCGIの概要
プロデルCGIは、プロデルで書かれたWebアプリケーションをCGI (Common Gateway Interface)を使って動作させるランタイムエンジンです。
ApacheなどのWebサーバを組み合わせて、プロデルプログラムをCGIとして実行できます。
CGI動作には、プロデルの知識に加えて、Apacheなどのサーバの知識が必要です。
動作環境
プロデルCGIは、次のいずれかの動作環境が必要です。
- Windows×Apache×.NET Framework2.0以上
- Linux×Apache×mono 1.9以上
CGIが利用できるWebサーバに加えて、プロデルを動作させる環境が、別途必要です。
なお、標準的な共有サーバでCGIに対応していた場合でも
monoが導入されていないサーバでは、動作しません。
プロデルは、Windows環境上で動作することを想定して設計されています。
Linux上では、一部のプログラムが動作しない場合がありますので、ご了承ください。
Apacheでプロデルを動かす
プロデルCGIを使うことで、Apache上でプロデルのプログラムを動かせます。
プロデル簡易Webサーバで動作するプログラムをほぼ変更することなく、動かせます。
動作環境
Apacheでプロデルを動かすには、次の環境が必要です。
- Apache HTTP Server
- .NET Framework 2.0以降
- プロデルCGI
このページでは、XAMPPに含まれるApache HTTP Serverを使って、プロデルCGIの動作環境を構築する方法を、紹介します。
環境の構築
XAMPPのインストール
XAMPPの公式サイトからXAMPPをダウンロードして、インストールします。
プロデルCGIと関連するファイルのコピー
1.XAMPPがインストールされているフォルダ(C:\xampp\など)に「rdr」フォルダを作成します。
2.プロデル簡易Webサーバを解凍したフォルダまたは、プロデル本体から次のファイルとフォルダを「rdr」フォルダにコピーします。
- rdrcgi.exe
- Produire.Core.dll
- utopiat.Host.dll
- pluginsフォルダ
動作テスト
プロデルCGIのテストプログラム
次のプログラムを、test.cgi という名前で「C:\xampp\htdocs\」へ保存します。
#!c:\xampp\rdr\rdrcgi.exe 応答として「<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> 現在は、[時刻]です。 </body></html>」を送る
テストプログラムを動かす
1.XAMPPのコントロールパネルでApacheを起動(Start)します。
2.ブラウザで「http://localhost/test.cgi」を開きます。
3.現在時刻が表示されれば、成功です!!
簡易Webサーバ用のサンプルを動かすには
プロデル簡易Webサーバ用のサンプルプログラムを、プロデルCGIで動かすには、拡張子を.cgiに変えて、ファイルの先頭に次のような内容を追加します。
#!c:\xampp\rdr\rdrcgi.exe
この部分は、apacheがCGIを処理するプログラムを指定するもので、プロデルで書かれたプログラムの場合は、プロデルCGI (rdrcgi.exe)があるパスを指定します。
[補足] 拡張子(.rdr)で動作させるようにするには
CGIとして実行するには、プロデルプログラムの拡張子を.cgiとする必要がありますが、Apacheの設定を変更することで、.rdrでも動作させられます。
Apacheの設定を変更するには、設定ファイル(httpd.conf)を変更します。
httpd.confの変更
1.「C:\xampp\apache\conf」にある「httpd.conf」をメモ帳などのテキストエディタで開きます。
2.httpd.confの中から、次の部分を、変更後の内容に変更します。
(変更前) AddHandler cgi-script .cgi .pl .asp (変更後) AddHandler cgi-script .cgi .pl .asp .rdr
Apacheの再起動
Apacheがすでに起動している場合は、設定を反映させるために、Apacheを再起動します。
Linux環境のApacheでプロデルを動かす
.NET Frameworkのオープン実装であるMonoを使うことで、Linux環境でも、Apacheを使ってプロデルのプログラムを動かせます。Mono1.9以降がインストールできる環境であれば、Linux環境でもプロデルを動かせます。
なお、共有サーバなど、インストールできるソフトウェアに制限がある環境では、LinuxであってもプロデルCGIを利用できません。
また、プロデルはWindowsでの動作を前提としているため、一部の種類や手順が正常に動作しない場合があります。
動作環境
Apacheでプロデルを動かすには、次の環境が必要です。
- Apache HTTP Server
- Mono
- プロデルCGI
このマニュアルでは、CentOS 5.5とMono 1.9を使って、プロデルCGIを動作させる環境の構築方法を説明します。
なお、CentOS以外の環境では、Monoの導入方法が異なります。使用しているLinux環境にあわせた方法で、Monoを導入してください。
Mono1.9で、プロデルの基本的な機能は、動作しますが、不具合により十分に機能が動作しない場合があります。
可能であれば、最新版を導入することをおすすめします。
環境の構築
CentOS環境の準備
Apacheがインストールされていない場合は、Apacheをインストールして、CGIが動作するように設定を変更します。
参考
Webサーバー構築(Apache) - CentOSで自宅サーバー構築
Monoのインストール
CentOS 5.5では、yumを使ってMono 1.9をインストールできます。
Monoをインストールするには、ターミナルで次のコマンドを実行します。
yum -y install mono-complete
※CentOS以外の環境では、yumが使用できない場合があります
プロデルCGIと関連するファイルのコピー
1.「/usr/local」ディレクトリに「rdr」フォルダを作成します。
cd /usr/local mkdir rdr
2.プロデル簡易Webサーバを解凍したフォルダまたは、プロデル本体から
次のファイルとフォルダを「rdr」フォルダにコピーします。
- rdrcgi.exe
- Produire.Core.dll
- utopiat.Host.dll
- pluginsフォルダ
動作テスト
プロデルCGIのテストプログラム
次のプログラムを、rdrtest.cgi という名前で、Apacheのドキュメントルート「/var/www/html」ディレクトリへ保存します。
#!/usr/bin/mono /usr/local/rdr/rdrcgi.exe 応答として「<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> 現在は、[時刻]です。 </body></html>」を送る
2.rdrtest.cgiに対して実行権限を与えます。
chmod 755 /var/www/html/rdrtest.cgi
テストプログラムを動かす
1.サーバ上では、ブラウザで「http://localhost/rdrtest.cgi」を開きます。
リモートから確認する場合は「http://(サーバのIPアドレスまたはホスト)/rdrtest.cgi」へアクセスします。
2.現在時刻が表示されれば、成功です!!
簡易Webサーバ用のサンプルを動かすには
プロデル簡易Webサーバ用のサンプルプログラムを、プロデルCGIで動かすには、拡張子を.cgiに変えて、ファイルの先頭に次のような内容を追加します。
#!/usr/bin/mono /usr/local/rdr/rdrcgi.exe
この部分は、apacheがCGIを処理するプログラムを指定するもので、プロデルで書かれたプログラムの場合は、Monoのプログラム本体のパスに続いて、プロデルCGI (rdrcgi.exe)があるパスを指定します。
拡張子(.rdr)で動作させるようにするには
CGIとして実行するには、プロデルプログラムの拡張子を.cgiとする必要がありますが、Apacheの設定を変更することで、.rdrでも動作させられます。
Apacheの設定を変更するには、設定ファイル(httpd.conf)を変更します。
httpd.confの変更
1.「/etc/httpd/conf/」にある「httpd.conf」をviなどのテキストエディタで開きます。
2.httpd.confの中から、次の部分を、変更後の内容に変更します。
(変更前) AddHandler cgi-script .cgi .pl
(変更後) AddHandler cgi-script .cgi .pl .rdr
Apacheの再起動
Apacheがすでに起動している場合は、設定を反映させるために、Apacheを再起動します。
service httpd restart