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

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

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

Gunicorn (Green Unicorn)は、Rubyのunicornをベースに開発されたUNIX向けのPython製HTTPサーバです。他のライブラリとの依存関係がないため、容易にインストールして使用できます。

Flask

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

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

ネットワーク

ネットワークとは、複数のコンピューター間を接続する技術です。インターネットが最も主流なネットワークの形態で、TCP/IP・HTTP・DNSなどの様々なプロトコルや、ルータやサーバーなどの様々な機器の上に成り立っています。

Python

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

Q&A

0回答

3518閲覧

flaskとnginx、gunicornを使ってサーバーを外部公開したい

kanan_py

総合スコア7

Gunicorn

Gunicorn (Green Unicorn)は、Rubyのunicornをベースに開発されたUNIX向けのPython製HTTPサーバです。他のライブラリとの依存関係がないため、容易にインストールして使用できます。

Flask

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

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

ネットワーク

ネットワークとは、複数のコンピューター間を接続する技術です。インターネットが最も主流なネットワークの形態で、TCP/IP・HTTP・DNSなどの様々なプロトコルや、ルータやサーバーなどの様々な機器の上に成り立っています。

Python

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

0グッド

1クリップ

投稿2020/10/22 06:26

編集2020/10/22 09:43

タイトルの通りで、外部に公開するために以下の記事を参考にしたのですが、外部のネットワークから接続しようとしても接続できません。(同じインターネット内での接続は確認できました。)
ディレクトリは参考にした記事の通りに配置しました

参考にさせてもらった記事: https://qiita.com/mintak21/items/eeba4654a0db21abcb1c

127.0.0.1を0.0.0.0に変更し、ポートも5000番に変更しました。それ以外は記事とまったく同じように書きました。
ルーターもサーバーにするIPアドレスのポート5000番を開放する設定にしました
DMZも有効にし、サーバーにするIPアドレスを適用させました。

念のため、変更したソースコードを貼らせていただきます。

python

1#flask_app.py 2from flask import Flask 3app = Flask(__name__) 4 5@app.route("/") 6def hello(): 7 return "hello world" 8 9if __name__ == "__main__": 10 app.run()

python

1#config/gunicorn_settings.py 2import os 3#変更したところ 4bind = '0.0.0.0:' + str(os.getenv('POST' , 5000)) 5proc_name = 'Infrastructure-Practice-Flask' 6workers = 1

nginx.conf

1#config/nginx.conf 2worker_processes 1; 3 4events{ 5 worker_connections 512; 6} 7http{ 8 server{ 9 listen 9123; 10 server_name INFRA-PRACTICE-NGINX; 11 charset UTF-8; 12 13 proxy_set_header Host $host; 14 15 location / { 16 #変更したところ 17 proxy_pass http://0.0.0.0:5000; 18 19 } 20 } 21 22}

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

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

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

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

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

FiroProchainezo

2020/10/22 06:59

情報が不足しています。 ハードウェア含む問題解決なので、ハードウェアと動かしているソフトウェアの構成図を追加ください。 今のところ登場しているのはラズベリーパイだけです。 確認するのにPCが存在しますか?(OSはなんですか?接続は有線ですか?ルータはなんですか?ネットワークはどのような構成になっていますか?有線ですか?無線ですか?ルータの設定は行いましたか?そもそもどこで公開しようとしていますか?自宅とか学校とか会社ですか?) > 外部のネットワークから接続しようとしても接続できません。(同じインターネット内での接続は確認できました。) これは、どの機器から何を使ってどうやって確認しましたか? pingは通りますか? ラズパイへのsshは接続可能ですか? ルータまではアクセスできていますか? nginxのログには何か出ていますか? > 念のため、変更したソースコードを貼らせていただきます。 > (flask_app.pyはとくに変更したところはないので割愛させていただきます。) これはやめた方がいいです。 前の質問へのリンクもなく、割愛といわれたらたいていの人は読まなくなりますし、回答もしません。 また、前の質問へのリンクがあったとしても、どのコードに(どのファイルに)変更があったのかを頭の中で構築させることになります。(ここまで親切な回答者は一握りでしょう) 最後に、ラズベリーパイは学習用には便利ですが連続通電するとすぐ壊れるらしいです。(伝聞) サーバにするような長期稼働には向かないと思いますが、レンタルサーバ等を使うことはできないのでしょうか?
kanan_py

2020/10/22 09:40

ご指摘ありがとうございます。 確認にはPCを使っています。以下そのPCの詳細です。 OS: windows10 64ビット ブラウザ:google chrome 86.0.4240.75(Official Build) (64 ビット) 接続:無線 サーバーに外部から接続できるか確認するためにサーバーとは別のネットワークである ポケットWiFiのZTE EMOBILE GL09Pを使用しています。 ラズパイ自体は ルーター: ELECOM WRC-2533GHBK2-Tに有線で接続しています。 こちらは5000番のポート開放、DNZにラズパイのIPアドレスという設定はしてあります。 公開は会社で行おうとしています。 >これは、どの機器から何を使ってどうやって確認しましたか? pingは通りますか? ラズパイへのsshは接続可能ですか? ルータまではアクセスできていますか? nginxのログには何か出ていますか? さきほど記載したwindows10のPCからgoogle chromeを使用してアドレスバーにhttp://ラズパイのIP:5000、http://ラズパイのグローバルIP:5000両方試しました。 cmdでping ラズパイIPでやりましたが通りました。 ssh、vnc接続可能です。 ルータまでアクセスできています。 ログをとっていなかったので今とってみたのですが、別インターネットに接続しているAndroid(手元にPCがなかったため)から接続を試み(繋がりませんでした)、ログを確認したところ、 "GET /HTTP/1.1" 200 11 "-" "Mozilla/5.0(Linux; Android 10; SC-03L) Applewebkit/537.36(KHTML, like Gecko) Chrome/86.0.4240.99 Mobile Safari/537.36" [CRITICAL] WORKER TIMEOUT(pid:1103) [INFO] Worker exiting (pid:1103) [INFO]booting worker with pid: 1487 [INFO]handling signal: int [INFO]worker exiting(pid: 1487) [INFO]shutting down: Master とでてきました。 > 念のため、変更したソースコードを貼らせていただきます。 (flask_app.pyはとくに変更したところはないので割愛させていただきます。) これはやめた方がいいです。 まだまだteratailに慣れていないのでこのようなご指摘大変ありがたいです。 すぐに追加します。 >レンタルサーバー等を使うことはできないのでしょうか? 今後GPIOを活用したサーバーを作りたいと思っているので厳しいのではないかなと。。 よろしくおねがいします。
over

2020/10/23 05:55

該当サーバに接続できる端末からの閲覧は可能なんですよね? であれば、外部から該当サーバまでの接続が実現されていないことが原因となります。 > ルーター: ELECOM WRC-2533GHBK2-Tに有線で接続しています。 上記、インターネットルータとして使用しているものですか? そうであった場合、契約している回線が外部接続を許容する回線かを確認する必要があります。 またグローバルIPの対応はどうなされていますか?(固定IP、DDNS等) ※ポートフォワードが正常に設定されていることを前提として確認させていただいております。
kanan_py

2020/10/23 09:35

>該当サーバに接続できる端末からの閲覧は可能なんですよね? そうです。外部からのみ接続ができていません。 >契約している回線が外部接続を許容する回線かを確認する必要があります。 許容するかの確認についてなのですが、ルーターのファイアウォールの設定で、アクセス制御、ポートフォワーディング、DMZの有効化にできているのですが、またそれとは別で許容する回線なのか確認するところがあったりするのでしょうか? >またグローバルIPの対応はどうなされていますか? DDNSの設定はしていません、IPアドレスは以下のサイトを参考にして固定して、ルーターには固定したIPにポートフォワーディング等のファイアウォール設定しています。 https://mugeek.hatenablog.com/entry/2019/05/27/230256
over

2020/10/26 00:10

> またそれとは別で許容する回線なのか確認するところがあったりするのでしょうか? CATV等グローバルIPを提供しないサービスもあるのでISPが許容するかを確認するのは重要です。 > DDNSの設定はしていません、IPアドレスは以下のサイトを参考にして固定して、ルーターには固定したIPにポートフォワーディング等のファイアウォール設定しています。 グローバルIPはPPPoE接続を実現している機器が保持するものです。 これ関連の知識がないように見受けられ疑問に思ったのですが、「外部からの接続」はラズパイのIPを指定して接続しようとしているんですか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問