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

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

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

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

3回答

5811閲覧

pythonのflaskでweb公開の仕方がわかりません。

shuntakahashi

総合スコア14

Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/04/16 12:09

前提・実現したいこと

pythonのflaskでweb公開したいです
このエラーはlinuxのサーバーでファイルを見て出たエラーです。

発生している問題・エラーメッセージ

エラーメッセージ File "./public_html/d.py", line 13, in <module> app.run(debug=False, host='0.0.0.0', port=80) File "/usr/local/python/lib/python3.5/site-packages/flask/app.py", line 843, in run run_simple(host, port, self, **options) File "/usr/local/python/lib/python3.5/site-packages/werkzeug/serving.py", line 694, in run_simple inner() File "/usr/local/python/lib/python3.5/site-packages/werkzeug/serving.py", line 656, in inner fd=fd) File "/usr/local/python/lib/python3.5/site-packages/werkzeug/serving.py", line 550, in make_server passthrough_errors, ssl_context, fd=fd) File "/usr/local/python/lib/python3.5/site-packages/werkzeug/serving.py", line 464, in __init__ HTTPServer.__init__(self, (host, int(port)), handler) File "/usr/local/python/lib/python3.5/socketserver.py", line 443, in __init__ self.server_bind() File "/usr/local/python/lib/python3.5/http/server.py", line 138, in server_bind socketserver.TCPServer.server_bind(self) File "/usr/local/python/lib/python3.5/socketserver.py", line 457, in server_bind self.socket.bind(self.server_address) PermissionError: [Errno 13] Permission denied

該当のソースコード

python

1ソースコード 2#!/usr/local/bin/python3 3 4 5from flask import Flask 6app = Flask(__name__) 7 8@app.route('/') 9def hello(): 10 name = "Hello World" 11 return name 12 13 14app.run(debug=False, host='0.0.0.0', port=80) 15

試したこと

自分が使えるwebサーバーを持ってます。public_htmlにこのプログラムを公開しましたがInternal Server Errorが出ます。

補足情報(FW/ツールのバージョンなど)

全くの初心者です。flaskを使ったpythonのweb公開とディレクトリの配置場所が知りたいです。よろしくお願いします。

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

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

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

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

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

CHERRY

2019/04/16 21:41 編集

管理者権限のないサーバーということですが、レンタルサーバーの場合は、サービスによりできるできないがあると思いますので、具体的なサービス名を記載していただけないでしょうか?
shuntakahashi

2019/04/18 06:34

大学内での独自のサーバーです! なので、生徒の自分は権限がないです。説明不足で申し訳ないです。
guest

回答3

0

どういう環境だかわかりませんが、少なくともport=80で実行しようとするとroot権限が必要になりますね。
PermissionErrorになっているのはそのためかと。

投稿2019/04/16 13:16

kabao

総合スコア648

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

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

shuntakahashi

2019/04/16 15:47

ご回答ありがとうございます。 nicoさんに回答して頂いたように ポート番号を5000に変更しましたが依然Internal Server Errorが出ます。 linuxで確認してみますと、 Traceback (most recent call last): File "./public_html/d.py", line 14, in <module> app.run(debug=False, host='0.0.0.0', port=5000) File "/usr/local/python/lib/python3.5/site-packages/flask/app.py", line 843, in run run_simple(host, port, self, **options) File "/usr/local/python/lib/python3.5/site-packages/werkzeug/serving.py", line 694, in run_simple inner() File "/usr/local/python/lib/python3.5/site-packages/werkzeug/serving.py", line 656, in inner fd=fd) File "/usr/local/python/lib/python3.5/site-packages/werkzeug/serving.py", line 550, in make_server passthrough_errors, ssl_context, fd=fd) File "/usr/local/python/lib/python3.5/site-packages/werkzeug/serving.py", line 464, in __init__ HTTPServer.__init__(self, (host, int(port)), handler) File "/usr/local/python/lib/python3.5/socketserver.py", line 443, in __init__ self.server_bind() File "/usr/local/python/lib/python3.5/http/server.py", line 138, in server_bind socketserver.TCPServer.server_bind(self) File "/usr/local/python/lib/python3.5/socketserver.py", line 457, in server_bind self.socket.bind(self.server_address) OSError: [Errno 98] Address already in use と、エラーの出方が変わりました 私は、一般ユーザーで管理者権限を持っていません。 どのような環境でしたら、flaskを使ってweb公開をすることができるでしょうか?(ローカルの環境でしたら動きます)
kabao

2019/04/16 16:06

Address already in use ということは、2重に起動してしまったとか、他に5000を使っているプログラムがあって起動できない状態です。 さらに他のportにしてみてはどうでしょうか。
shuntakahashi

2019/04/16 16:28

ご回答ありがとうございます。 ポート番号を3000にしてみましたが、依然同じエラーが出力されできません。 cgiのperlでは755にしたりや、phpではそのままFHPを使うとwebに公開できましたが そもそもpythonはこの上記と何が異なるのでしょうか?
kabao

2019/04/16 16:46

flaskは自前でHTTPのサーバ機能を持っているので、public_htmlに配置するとかは必要無いですよ。
shuntakahashi

2019/04/16 17:12

ご回答ありがとうございます。 では、どのようにしたら外部からも見られそのファイルは永続的に公開され続けますか? 自分でFTPソフトを使わず、ローカルな環境でターミナルを使うと http://0.0.0.0:3000/ このURLにアクセスすると自分の欲しい結果が得られますが、これはローカルな環境で動いている気がします。 普段、自分がグーグルで何かのサイトへ行くとhttps/www.xxx/xxxx/xxx/でありphpでウェブ公開するためにはFTPを使って転送し、この絶対URLでそのページを閲覧するからです。 全くのど素人なのでよろしくお願いします。
kabao

2019/04/16 17:40

Webサーバがあるのであれば、そのWebサーバ上で実行しておけばよいです。 言語やフレームワークが違えば仕組みは全く違うので、PHPなどと同じと考えるのがむしろおかしいです。
guest

0

ベストアンサー

自分が使えるwebサーバーを持ってます

そのWebサーバにて WSGI準拠 の環境が準備できるのであれば、その環境下で動作させるというのはどうでしょうか。

公式のドキュメントにも Apache + mod_wsgi環境下で動作させる為の設定が記述されております(残念ながら翻訳はされておりませんが)。

また、上記の環境が準備できない場合でも、CGI環境でWSGIアプリを動作させる為のWrapperが Pythonの標準ライブラリ (wsgiref.handlers.CGIHandler) に含まれておりますので、これを使用して動作させることもできるかもしれません。

とりあえずは下記のリンクにて確認してみてください

https://a2c.bitbucket.io/flask/deploying/index.html

投稿2019/04/17 00:18

magichan

総合スコア15898

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

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

shuntakahashi

2019/04/18 06:26

回答ありがとうございます! この方法を探していました。全くの素人ですが出来る限りやってみます。丁寧にありがとうございました。
guest

0

方法 1

使用する port を 5000 にして実行していただくことはできますか?

python

1app.run(debug=False, host='0.0.0.0', port=5000)

方法 2

上記方法でダメな場合は sudo を使って見てください。

python

1$ sudo python3 ファイル名.py

コメントありがとうございます。
一般ユーザでもできるとは思いますが、なにかしら権限が付与されていなければできないかもしれません。

自分が一般ユーザーでもflaskは利用できるのでしょうか?

以下のコマンドを打ち込んで空いているポートを探すことはできますか?

lsof -i:ポート番号

使われている場合は以下の様に結果が返されますが

$ lsof -i:5000 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME python3.7 9961 ufo 3u IPv4 0x15538c348e9faec9 0t0 TCP localhost:commplex-main (LISTEN) $

使われていないポートの場合はなにも結果が返されません。

$ lsof -i:5001 $

結果が何も返されないポート番号を設定してみてください。


返信ありがとうございます。空いているポートでも症状が改善しないとなると、いまいまは、お手上げになります。お力添えできず、口惜しい限りです。


ダメ元ではありますが public_html 以外のディレクトリにファイルを保存して動作を確認していただくことはできますか?

投稿2019/04/16 13:25

編集2019/04/17 05:59
nico25

総合スコア830

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

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

shuntakahashi

2019/04/16 15:42

ご回答ありがとうございます。 方法1で試してみましたら、再度Internal Server Error が出ました。 linuxで確認してみますと、 Traceback (most recent call last): File "./public_html/d.py", line 14, in <module> app.run(debug=False, host='0.0.0.0', port=5000) File "/usr/local/python/lib/python3.5/site-packages/flask/app.py", line 843, in run run_simple(host, port, self, **options) File "/usr/local/python/lib/python3.5/site-packages/werkzeug/serving.py", line 694, in run_simple inner() File "/usr/local/python/lib/python3.5/site-packages/werkzeug/serving.py", line 656, in inner fd=fd) File "/usr/local/python/lib/python3.5/site-packages/werkzeug/serving.py", line 550, in make_server passthrough_errors, ssl_context, fd=fd) File "/usr/local/python/lib/python3.5/site-packages/werkzeug/serving.py", line 464, in __init__ HTTPServer.__init__(self, (host, int(port)), handler) File "/usr/local/python/lib/python3.5/socketserver.py", line 443, in __init__ self.server_bind() File "/usr/local/python/lib/python3.5/http/server.py", line 138, in server_bind socketserver.TCPServer.server_bind(self) File "/usr/local/python/lib/python3.5/socketserver.py", line 457, in server_bind self.socket.bind(self.server_address) OSError: [Errno 98] Address already in use と、エラーの出方が変わりました。 方法2で試してみましたら、私は一般ユーザーでrootユーザーでないため管理者コマンドが使えませんでした。 自分が一般ユーザーでもflaskは利用できるのでしょうか?
shuntakahashi

2019/04/16 19:16

回答ありがとうございます。 教えて頂いたポート番号は空いていましたが、依然Internal Server Errorが出ました。 本番環境において、flaskを実行させたいのですが色々調べてみると アプリケーションサーバーやWSGIの環境設定で本番環境が実行できるのではないかと思いました。 説明不足ですいません。 自分が知りたかった情報は、flaskにおいて本番環境において どのようにすれば実行できるかでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問