質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

2回答

4549閲覧

python3 Webアプリが動かず、Webブラウザに表示されない。

gaijin

総合スコア30

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2018/11/21 10:34

python 初心者です。

教本にて勉強を進めています。
Webアプリを作っているのですがWebブラウザに正しく表示されません。

ブラウザでは正常に接続できませんでしたというふうに何度試しても出てきます。
ポート番号の変更、フォルダの位置を確認していますが原因がわかりません。

どうかご教授いただければと思います。

練習フォルダに「cgi-bin」というフォルダをつくり、
この「cgi-bin」に、「kakugen.py」コードを作成して
ターミナルで下記を実行しWebサーバを起動

$ python3 -m http.server --cgi 8080

プログラムの実行権限を与えるため、新規のターミナルウインドウを表示させ、下記を実行

chmod +x cgi-bin/kakugen.py

ブラウザのアドレス欄に 

http://localhost:8080/cgi-bin/kakugen.py ```と入力し実行致しました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

役に立つかわかりませんが、推理してみました。

  • 表示されたエラーは以下のような画面

イメージ説明

もし該当するようでしたら以下のコマンドで kakugen.py の実行権限を確認してみましょう。

bash

1$ tree 2. 3└── cgi-bin 4 └── kakugen.py 5 61 directory, 1 file 7$ ls -la ./cgi-bin/kakugen.py 8-rw-rw-r-- 1 ubuntu ubuntu 96 1122 20:56 ./cgi-bin/kakugen.py

実行権限がない場合は-rw-rw-r--となり x がひとつも付いていません。

そういうときは実行権限を付与しましょう。

bash

1$ tree 2. 3└── cgi-bin 4 └── kakugen.py 5 61 directory, 1 file 7$ chmod +x ./cgi-bin/kakugen.py # 実行権限を付与 8$ ls -la ./cgi-bin/kakugen.py 9-rwxrwxr-x 1 ubuntu ubuntu 96 1122 20:56 ./cgi-bin/kakugen.py

実行権限が付与されていれば-rwxrwxr-xのように x が付きます。

投稿2018/11/22 12:25

errormaker74

総合スコア230

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gaijin

2018/11/22 14:11 編集

ただいま帰宅し拝見させていただきました。 tree のインストール自体ができないのですが。。 $ brew install tree -bash: brew: command not found いろいろと教えていただいているのに本当に申し訳ありません。
errormaker74

2018/11/22 14:44

今回の件で言うと `tree` コマンド自体は必要ありません。 kakugen.pyファイルに対して どの位置からコマンドを実行しているかを示すために便宜的に記載しておりました。 結果的には cgi-bin ディレクトリの一つ上のディレクトリから各コマンドを実行すれば問題はありません。 ``` $ ls # カレントディレクトリにあるファイルやディレクトリを表示するコマンド cgi-bin $ ls ./cgi-bin/kakugen.py # cgi-bin ディレクトリの中に kakugen.py があるか ./cgi-bin/kakugen.py # あれば相対パスが返ってくる $ chmod +x ./cgi-bin/kakugen.py # 実行権限を付与 $ python3 -m http.server --cgi 8080 # CGIサーバを起動 Serving HTTP on 0.0.0.0 port 8080 ... ```
gaijin

2018/11/22 15:09

MacBook-Pro:cgi-bin xxxx $ ls kakugen.py こちら何度もパスを入れ替えたりしてのですが、上記のように相対パスが出ません。。 本当にいろいろと有用な情報を教えていただいているのに申し訳ございません。           おそらく自分の認識が低すぎるのだと思います。
errormaker74

2018/11/22 15:22

MacBook-Pro:cgi-bin xxxx $ ls kakugen.py 上記の状態ならあと一歩です。 一つ上のディレクトリへ移動すれば大丈夫です。 $ cd ../ $ ls cgi-bin
gaijin

2018/11/22 23:58

本当にありがとうございます。。 cd ../ を実行するとすべてのファイル名が書き出され、大元のフォルダのpythonnokyoukasyoに移行してしまいます。 cgi-bin xxxxx $ cd ../ xxxxxx -no-MacBook-Pro:pythonkyoukasyo xxxxxx $ ls __pycache__ func-let3.py nest-list-c3.py args-dict.py func-local.py open-read-close.py bmi.py func-mul-simple.py open-try.py break-simple.py func-mul.py open-with.py calc-fee.py func-name.py pass.py このような感じです。 フォルダの置いてある場所が悪いのでしょうか?
gaijin

2018/11/23 00:53

-MacBook-Pro:pythonkyoukasyo xxxxx $ ls ./cgi-bin/kakugen.py ./cgi-bin/kakugen.py -MacBook-Pro:pythonkyoukasyo xxxxx $ chmod +x ./dgi-bin/kakugen.py chmod: ./dgi-bin/kakugen.py: No such file or directory やはり何度試してもこのような結果が返ってきます。。
errormaker74

2018/11/23 00:56

$ ls ./cgi-bin/kakugen.py 上記のコマンドで ./cgi-bin/kakugen.py が返ってくるならコマンドを実行する場所は間違っていません。 $ chmod +x ./dgi-bin/kakugen.py ではなく $ chmod +x ./cgi-bin/kakugen.py ではどうでしょうか。
gaijin

2018/11/23 01:22 編集

すいませんタイプミスでした。。 先ほどとは違い進むことができました! pythonkyoukasyo xxxx $ chmod +x ./cgi-bin/kakugen.py pythonkyoukasyo xxxx $ python3 -m http.server --cgi 8080 Serving HTTP on 0.0.0.0 port 8080 (http://0.0.0.0:8080/) ... このように進めwebブラウザでアクセスしたところプログラムは動かず、kakugen.pyのファイルダウンロードの有無をとう画面が表示されます。。 http://localhost:8080/cgi-bin/kakugen.pyこちらをアドレス部分に入力しております。
errormaker74

2018/11/23 02:43

確認ですが、下記のコマンドで x は付いていますか? $ ls -l ./cgi-bin/kakugen.py また、下記のコマンドの結果はどのようになっていますか。 $ file ./cgi-bin/kakugen.py
gaijin

2018/11/23 03:37 編集

$ ls -l ./cgi-bin/kakugen.py -rwxr-xr-x 1 xxxxx staff 224 11 21 18:56 ./cgi-bin/kakugen.py $ file ./cgi-bin/kakugen.py ./cgi-bin/kakugen.py: a /user/bin/env python3 script text executable このようになります。。
errormaker74

2018/11/23 03:58

kakugen.pyの1行目が誤っている可能性があります。 #!/usr/bin/env python もしくは #!/usr/bin/env python3 となっているでしょうか。 (userではなくusrであるところに注意してください。)
gaijin

2018/11/23 04:07

ついにできました! 本当に嬉しいです! やっと前に進めます! 本当にお恥ずかしい間違えばかりで情けないです。。 ただここまで面倒な言葉ひとついうこともなく付き合って解決していただいたこと、本当に感謝いたします!
errormaker74

2018/11/23 04:16

おめでとうございます!無事動作してよかったです。
guest

0

役に立つか分かりませんが、調査方法の一案を書いておきます。

肝心のkakugen.pyの中身がわからないので、kakugen.pyの中身を一旦シンプルなコードに置き換えてみましょう。(あとで戻せるように元のkakugen.pyはどこか別の場所に置いておいてください)

python

1#!/usr/bin/env python 2print('Content-type: text/html; charset=UTF-8\r\n') 3print('Hello, World!')

下記のようなディレクトリ構成になっているのを確認してCGIサーバを起動します。

bash

1$ tree # ディレクトリ構成の確認 2. 3└── cgi-bin 4 └── kakugen.py 5 61 directory, 1 file 7$ python3 -m http.server --cgi 8080 # CGIサーバの起動 8Serving HTTP on 0.0.0.0 port 8080 ...

この状態のままブラウザでhttp://localhost:8080/cgi-bin/kakugen.pyにアクセスします。

もし「Hello, World!」と表示されれば、一応CGIは動作しているということになります。
そうなると元のkakugen.pyのコードに問題があると分かります。

投稿2018/11/21 15:29

errormaker74

総合スコア230

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gaijin

2018/11/22 00:17

返信ありがとうございます。 今実行してみたところError responseというふうに出てきました。 もしかすると自分がフォルダを置いたところが悪いのでしょうか、いまいちwebフォルダというものを理解できていません。。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問