2011年6月29日水曜日

CGIを使う

CGI (Common Gateway Interface) とは、ApacheといったWebサーバが特定のプログラムを実行して、出力結果をユーザに返す、ものです。
CGIを利用することで、動的なコンテンツを作成することができます。
Perl・PHP・Rubyなどの言語がよく使われています。


■CGIを利用するための設定(Apache)
Apacheの設定ファイルの編集で、CGIを使えるようになります。

httpd.confに赤字の部分を追加しましょう。

# CGIプログラムを置くディレクトリ
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
# CGIの実行を許可
<Directory "/var/www/cgi-bin">
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all
</Directory>
# 拡張子 .cgi と .pl をCGIのファイルとする
AddHandler cgi-script .cgi .pl

これでCGIを使えるようになりました。

ホスト名:hoge.com
構成ディレクトリ:/var/www/cgi-bin/test.cgi
クライアント側からtest.cgi には、下記のURLでアクセスできます。
http://hoge.com/cgi-bin/test.cgi

*スクリプトをCGIとして実行するためには、CGIファイルにchmodコマンドで権限を与える必要があります。


■ユーザディレクトリでCGIを使う
/var/www/cgi-bin/ のデフォルトの所有者はrootユーザになります。
FTPやSSHでrootユーザでのログインが推奨されていないことを考えると、ユーザのホームディレクトリにCGIスクリプトを置いて、Webから実行できる仕組みにしておくと便利です。
Apacheの設定ファイルで実現できます。

① httpd.confに赤字を追加しましょう。
ScriptAliasMatch ^/~([a-zA-Z0-9_-]+)/cgi-bin/(.*) /home/$1/cgi-bin/$2
<Directory /home/*/cgi/>
Options +ExecCGI
</Directory>

② ディレクトリを作成します。
例) # mkdir /home/shindo_t/cgi-bin

③ディレクトリにアクセス権の設定をします。
例) # chmod 701 /home/shindo_t/cgi-bin

ホスト名:hoge.com
構成ディレクトリ:/home/shindo_t/cgi-bin/test.cgi
クライアント側からtest.cgiには、下記のURLでアクセスできます。
http://hoge.com/~shindo_t/cgi-bin/test.cgi

0 件のコメント:

コメントを投稿