CGI プログラム
cgi-enabled を CGI 実行可能にする
ここまで、Apache2 の Web ディレクトリの CGI ファイルをブラウザで表示する準備をしてきました。
まだ不足しています。
/var/www/html/cgi-enabled/ のなかのファイルはまだ CGI として実行することはできません。
これを実行可能に変更します。
Apache2:Pythonスクリプトを利用する
に行くと、 Python を CGI プログラムの例として解説されています。
前半部分はもう設定済みですので後半部分を参考にしてください。
新たに
/etc/apache2/conf-available/cgi-enabled.conf
ファイルを作成します。
このなかに、cgi-enabled ディレクトリの中のファイルは CGI として動作させるよ、と宣言するのです。
yamada@ubuntu-18:~$ sudo nano /etc/apache2/conf-available/cgi-enabled.conf
# 新規作成
# 拡張子 cgi および py を CGI として扱う
<Directory "/var/www/html/cgi-enabled">
Options +ExecCGI
AddHandler cgi-script .cgi .py
</Directory>
単なる CGI だけでなく Python ファイルも実行可能としました。
作成が完了したら設定を実行し、Apache2 を再起動します。
yamada@ubuntu-18:~$ sudo a2enconf cgi-enabled
Enabling conf cgi-enabled.
To activate the new configuration, you need to run:
systemctl reload apache2
yamada@ubuntu-18:~$ sudo systemctl restart apache2
そして、/var/www/html/cgi-enabled のなかにある、tesy.cgi の
パミッションを実行可能 705 にします。
$ sudo chmod 705 /var/www/html/cgi-enabled/test.cgi
と WEB 等には書いてあるのですがこのパミッション変更はどうも必要がないようです。
Apache2 Web ディレクトリの CGI ファイル表示
やっと Apache2 の CGI Web ディレクトリに置いた test.cgi
/var/www/html/cgi-enabled/test.cgi
をブラウザ表示できるようになりました。
長かったですね。
ブラウザの URL 欄に、
http://localhost:8080/cgi-enabled/test.cgi
と入力し
Hello WORLD!!こんにちは
と表示されたら OK です。
ユ-ザ-ディレクトリで CGI ファイルを実行
引き続き、ユ-ザ-ディレクトリ
/home/yamada/public_html
に置いた CGI ファイルを実行する方法を説明していきます。
cgi-enabled ディレクトリを CGI 実行可能にしたときと同様
/etc/apache2/conf-available/cgi-enabled.conf
ファイルのなかに以下を追加します。
yamada@ubuntu-18:~$ sudo nano /etc/apache2/conf-available/cgi-enabled.conf
# 追加
# 拡張子 cgi および py を CGI として扱う
<Directory "/home/yamada/public_html">
Options +ExecCGI
AddHandler cgi-script .cgi .py
</Directory>
を追加します。
保存したら設定を実行し、Apache2 を再起動します。
yamada@ubuntu-18:~$ sudo a2enconf cgi-enabled
Enabling conf cgi-enabled.
To activate the new configuration, you need to run:
systemctl reload apache2
yamada@ubuntu-18:~$ sudo systemctl restart apache2
ホスト Windows OS c:\vb_public_html に CGI ファイル作成
ホスト Windows OS 側で以下の内容の CGI ファイルを作成します。
#!/usr/bin/perl
# -*- coding: utf-8 -*-
print "Content-type: text/html; charset=UTF-8\n\n";
print "Hello WORLD!!";
print "こんにちは";
作成できたら c:\vb_public_html に保存します。
なお、最初の行は perl がインスト-ルされているディレクトリ-を指しています。
ファイル名は適当に test.cgi とします。
文字コ-ドは、UTF-8N
BOM なし
改行コ-ドは、LF
です。
なぜ、c:\vb_public_html に保存したか説明します。
ユ-ザ-ごとの公開ディレクトリを用意する
で説明したように、ユ-ザ-ディレクトリ
/home/yamada/public_html
はホスト Windows OS
C:\vb_public_html
と共有化されているのでしたね。
よって test.cgi は自動的にユ-ザ-ディレクトリ
/home/yamada/public_html
に入ってしまいました。
ユ-ザ-ディレクトリの CGI ファイルをブラウザ表示
それでは、ユ-ザ-ディレクトリに置いた test.cgi をブラウザで表示します。
ブラウザの URL 欄に、
http://localhost:8080/~yamada/test.cgi
と入力し
Hello WORLD!!こんにちは
と表示されたら OK です。
でもちょっと待ってください。
/usr/lib/cgi-bin/
ディレクトリの場合は配下のファイルを全て CGI と扱うため、
CGI 以外のファイルはブラウザ表示できませんでした。
でも今回は、そんなことはないようです。
Options +ExecCGI の+が味噌のようです。
CGI もおまけで動作させます。
と言っているようです。
だから、
/home/yamada/public_html
に置いた *.html ファイル等も動作します。
仮想ホストの CGI ファイルをブラウザ表示
仮想ホスト v-host.jp の DocumentRoot は
/home/yamada/public_html
に設定しています。
仮想ホスト設定
みてください。
すなわち、ユ-ザ-ディレクトリ
/home/yamada/public_html
のなかに CGI ファイルが置かれます。
よって、ユ-ザ-ディレクトリに置いた test.cgi をブラウザで表示するのと基本的には同じになります。
ブラウザの URL 欄に、
http://v-host.jp/test.cgi
と入力し表示すれば
Hello WORLD!!こんにちは
と表示されるはずです。
うまくいきましたか。
ここまでで、CGI ファイルが実行できるようになりました。
引き続き、Python ファイルが実行できるようにしていきます。