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側にCGIファイル作成

を参照してください。
ホスト 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 サ-バをインスト-ルしていきます。


  • SSH サ-バインスト-ル に進む
  • cgi-enabled を CGI 実行可能にする に戻る
  • Apache2 の Web ディレクトリの CGI ファイル表示準備 に戻る
  • CGI プログラムを実行可能にする に戻る
  • phpMyAdmin へのアクセス に戻る
  • phpMyAdmin のインスト-ル に戻る
  • MySQL 接続テスト に戻る
  • MySQL インスト-ル に戻る
  • PHP インスト-ル に戻る
  • ゲストOS(Ubuntu)IPアドレス確認 に戻る
  • 仮想ホストの構成 に戻る
  • /etc/fstab の編集 に戻る
  • ユ-ザ-ごとの公開ディレクトリを用意する に戻る
  • ホスト OS のフォルダと Apache のフォルダの共有 に戻る
  • ホスト OS から localhost でアクセス に戻る
  • 個別パッケ-ジのインスト-ル に戻る
  • VirtualBox Ubuntu 起動時エラ- に戻る
  • カ-テン問題が発生しないようにする に戻る
  • ubuntu インストール中のトラブル対応 に戻る
  • 共有フォルダの設定 に戻る
  • ubuntu 仮想マシン用ツール正解インストール に戻る
  • ubuntu 基本インストール完了 に戻る
  • ubuntu インスト-ル進行 に戻る
  • ubuntu インスト-ルの後半 に戻る
  • VirtualBox 上に仮想マシンを作成 に戻る
  • VirtualBox インスト-ル に戻る
  • 70VPS に戻る