CGI プログラム
Python3 ファイル実行
Python は Python3 が実行できるように設定していきます。
Ubuntu には Python3 がデフォルトでインスト-ルされています。
どこにあるか探してみましょう。
Ubuntu ディスクトップで端末画面を開いたら
yamada@ubuntu-18:~$ which python3
/usr/bin/python3
と表示されました。
このディレクトリに python3 はインスト-ルされています。
python3 ファイルは基本的には CGI ファイルの一種ですから、
CGI が動く DocumentRoot に置いて上げればブラウザ表示できるはずです。
整理すると CGI が動く DocumentRoot と URL は
/usr/lib/cgi-bin/
http://localhost:8080/cgi-bin/test.cgi
/var/www/html/cgi-enabled/
http://localhost:8080/cgi-enabled/test.cgi
/home/yamada/public_html/
http://localhost:8080/~yamada/test.cgi
http://v-host.jp/test.cgi
の三つ、URL としては四つあります。
ここに、Python ファイルを置くだけでほんとうに動くのか確認していきます。
Python3 ファイル作成
簡単な Python3 ファイル test.py を作成し、/usr/lib/cgi-bin に配置します。
端末画面から
yamada@ubuntu-18:~$ sudo nano /usr/lib/cgi-bin/test.py
#!/usr/bin/python3
# coding: utf-8
import sys, io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding = 'utf-8')
print ("Content-type: text/html; charset=UTF-8\n\n")
print ("Hello WORLD!!")
print ("こんにちは")
作成できたら保存します。
そしてパ-ミッションを実行可能 705 にします。
$ sudo chmod 705 /usr/lib/cgi-bin/test.py
完了したら、ブラウザの URL 欄に、
http://localhost:8080/cgi-bin/test.py
と入力し
Hello WORLD!!こんにちは
と表示されたら OK です。
でもちょっと待ってください。
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding = 'utf-8')
って何?
Python の文字列は自身のエンコードに関する情報を持っていない。
print() などでターミナルに日本語を標準出力するときは別の処置が必要。
と言うことで、おまじないを唱えておきましょう。
2023/4/20日追記
Windows10
Oracle VM VirtualBox7
ubuntu-2204-LTS
の環境では /usr/lib/cgi-bin/
に置いたファイルは .cgi ファイルしか動作しないようです。
.py ファイル動かないようです。
cgi-enabled に Python3 ファイル作成
次に、Python3 ファイル test.py を作成し、/var/www/html/cgi-enabled に配置します。
ホスト Windows OS 側で Python ファイルを作成し、c:\vbox-cgi に保存すれば cgi-enabled に配置
されるはずです。
を参照してください。
ホスト Windows OS 側で以下の内容の Python ファイルを作成します。
#!/usr/bin/pyton3
# coding: utf-8
import sys, io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding = 'utf-8')
print ("Content-type: text/html; charset=UTF-8\n\n")
print ("Hello WORLD!!")
print ("こんにちは")
さっき作ったのと同じ内容です。
作成できたら c:\vbox-cgi に保存します。
なお、最初の行は Python3 がインスト-ルされているディレクトリ-を指しています。
ファイル名は適当に test.py とします。
文字コ-ドは、UTF-8N
BOM なし
改行コ-ドは、LF
です。
そしてパ-ミッションを実行可能 705 にします。
$ sudo chmod 705 /var/www/cgi-enabled/test.py
と一部 WEB 等には書いてあるのですが、
VirtualBox で共有フォルダを形成しているときは、
このパ-ミッション変更はどうも必要がないようです。
完了したら、ブラウザの URL 欄に、
http://localhost:8080/cgi-enabled/test.py
と入力し
Hello WORLD!!こんにちは
と表示されたら OK です。
public_html に Python3 ファイル作成
同じように Python3 ファイル test.py を作成し /home/yamada/public_html に配置します。
ホスト Windows OS 側で Python ファイルを作成し、
c:\vb_public_html
に保存すれば public_html に配置されるはずです。
ホスト Windows OS 側で以下の内容の Python ファイルを作成します。
#!/usr/bin/pyton3
# coding: utf-8
import sys, io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding = 'utf-8')
print ("Content-type: text/html; charset=UTF-8\n\n")
print ("Hello WORLD!!")
print ("こんにちは")
さっき作ったのと同じ内容です。
作成できたら c:\vb_public_html に保存します。
なお、最初の行は Python3 がインスト-ルされているディレクトリ-を指しています。
ファイル名は適当に test.py とします。
文字コ-ドは、UTF-8N
BOM なし
改行コ-ドは、LF
です。
完了したら、ブラウザの URL 欄に、
http://localhost:8080/
~yamada/test.py
と入力し
Hello WORLD!!こんにちは
と表示されたら OK です。
仮想ホスト v-host.jp で Python3 ファイル実行
仮想ホスト v-host.jp の DocumentRoot も同じく
/home/yamada/public_html
に設定しています。
よって、ユ-ザ-ディレクトリに置いた test.py をブラウザで表示するのと基本的には同じになります。
ブラウザの URL 欄に、
http://v-host.jp/test.py
と入力し実行すれば
Hello WORLD!!こんにちは
と表示されるはずです。
うまくいきましたか。
ここまでで、Python ファイルが実行できるようになりました。
引き続き、SSH サ-バをインスト-ルしていきます。