mac OS上にVagrantで構築した仮想環境で簡単なCGIをテストしたい
当方、PythonのWebアプリケーション開発の勉強中で、まずは試しにVagrantで構築したゲストOS(Ubuntu)にWebアクセスすると、"Hello CGI!"と表示される超簡単なCGIのテストを試していますが、エラーが解決できず困っています。
また、teratailでの質問は初の初心者で不足事項や無知な点があるかと思いますが、ご容赦のほどよろしくお願いいたします。
発生している問題・エラーメッセージ
Pythonの標準モジュール「https.server」でゲストOS(Ubuntu)上でWebサーバーを起動後、ホストOS(mac)から「http://127.0.0.1:8000/cgi-bin/hello.py」へアクセスしても何も表示されず、ゲストOSのターミナルでは以下のエラーが出力されます。
vagrant@ubuntu-xenial:~$ python3.6 -m http.server --cgi Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ... 127.0.0.1 - - [31/Dec/2021 15:40:02] "GET /cgi-bin/hello.py HTTP/1.1" 200 - ---------------------------------------- Exception happened during processing of request from ('127.0.0.1', 56226) Traceback (most recent call last): File "/opt/python3.6.4/lib/python3.6/http/server.py", line 1126, in run_cgi os.execve(scriptfile, args, env) PermissionError: [Errno 13] Permission denied: '/home/vagrant/cgi-bin/hello.py'
ゲストOS上から、hello.pyは実行することができます。
vagrant@ubuntu-xenial:~$ python3.6 /home/vagrant/cgi-bin/hello.py 200 OK Content-Type: text/plain Hello CGI!
該当のソースコード
Python
1#!/usr/local/bin Python3.6 2print("200 OK") 3print("Content-Type: text/plain") 4print("") 5print("Hello CGI!") 6
試したこと
- 権限の確認(755)
エラー内容を確認して、調べたところ.pyファイルのパーミッションを755にしなければならないとありましたが、こちらの通り777に変更しても同じエラーで解決しませんでした。
# 以下のパーミッションで試したが同じエラー vagrant@ubuntu-xenial:~$ ls -al /home/vagrant/cgi-bin/ total 12 drwxrwxr-x 2 vagrant vagrant 4096 Dec 31 15:23 . drwxr-xr-x 9 vagrant vagrant 4096 Dec 31 15:26 .. -rwxrwxrwx 1 vagrant vagrant 107 Dec 31 15:23 hello.py
- SELinuxの向こう
SELinuxを無効にした方が良いという記事を見つけ、早速getenforceを叩いても以下のエラーで実行されません。
そもそもSElinuxが入っていないので、無効にできないのでは?と思っています。
vagrant@ubuntu-xenial:~$ getenforce The program 'getenforce' is currently not installed. To run 'getenforce' please ask your administrator to install the package 'selinux-utils'
補足情報
- Python 3.6.4
- Ubuntu 16.04.7 LTS
- macOS Monterey 12.1
- VirtualBox バージョン 6.1.30 r148432 (Qt5.6.3)
- Vagrant 2.2.8
あなたの回答
tips
プレビュー