2017-01-05 3 views
0

新しいプロジェクトを開始するにあたり、FlaskとFlask-RESTfulを使って私のバックエンドの休憩サービスとしてpythonを試してみることにしました。私は箱の中のすべてを稼いでいる。私はGunicornでアプリを起動し、ローカルでカールすることができます。なぜ放置薬のガンコンはnginxが必要です

ブラウザまたはARC(休憩サービスをテストするためのクロムアプリ)またはネットワーク上のmvcクライアントを実行している別の迷惑メールボックスから接続しようとすると、接続が拒否されます。

私はこれを行う方法を見つけました。これは、Python Restサーバー上でリバースプロキシとしてnginxを理解していますが、そのために必要なことはわかりません。 Gunicornの仕事になるか、何かが欠けているようですね?

私の放浪ファイルがフラスコアプリは文字通りhttp://flask-restful-cn.readthedocs.io/en/0.3.5/quickstart.htmlの例である。この

# -*- mode: ruby -*- 
# vi: set ft=ruby : 

Vagrant.configure("2") do |config| 
    config.vm.define "rest" do |rest| 
     rest.vm.box = "gbarbieru/xenial" 
     #rest.vm.network "forwarded_port", guest: 8000, host: 8000 
    end 
    config.vm.define "mvc" do |mvc| 
     mvc.vm.box = "gbarbieru/xenial" 
    end 

    # Disable automatic box update checking. 
    # config.vm.box_check_update = false 

    # Forward ports 
    # config.vm.network "forwarded_port", guest: 8000, host: 8000 

    # host-only access to the machine using a specific IP. 
    # config.vm.network "private_network", ip: "192.168.33.10" 

    # Public network which makes the machine appear as another 
    # physical device on your network. 
    config.vm.network "public_network" 

    # Share an additional folder to the guest VM. 
    # config.vm.synced_folder "../data", "/vagrant_data" 
end 

のような設定です。

MVCクライアントはまだ起動していませんが、私はそれからカールしようとしました。

今私は、MVCのように休息と192.168.1.13と192.168.1.12を持っていて、ミニマルを取っていると仮定すると、すべての方法のゲスト/ホストホスト/ゲストとゲスト/ゲスト

答えて

1

にpingを実行することができます私の地元にapp.run(host= '0.0.0.0', debug=True)

from flask import Flask 
from flask_restful import Resource, Api 

app = Flask(__name__) 
api = Api(app) 

class HelloWorld(Resource): 
    def get(self): 
     return {'hello': 'world'} 

api.add_resource(HelloWorld, '/') 

if __name__ == '__main__': 
    app.run(host= '0.0.0.0', debug=True) 

これは、サーバーはすべてのネットワークインターフェイスにバインドされ、ローカルホストサーバからだけでなく、からだけではなく、到達できることを確認します。あなたのリンクhttp://flask-restful-cn.readthedocs.io/en/0.3.5/quickstart.htmlからの例では、あなたはapp.runコールで次の変更を行う必要があります汚れた場合のあなたのホスト

2番目のオプションは、サーバーを実行する場合は、サーバーからのみ アクセス可能であることがわかります

外部から見えるサーバ章の下でhttp://flask.pocoo.org/docs/0.12/quickstart/#a-minimal-applicationで述べたように、特定のホスト上で実行するためにサーバーを強制することです自分のコンピュータではなく、ネットワーク内の他のコンピュータからのものです。 デバッグモードでは、 アプリケーションのユーザーは、コンピュータ上で任意のPythonコードを実行できるため、これがデフォルトです。

デバッガを無効にするか、ネットワーク上のユーザーを信頼している場合は、 あなたは、単にコマンドラインに --host=0.0.0.0を追加することにより、サーバを公開することができます:

flask run --host=0.0.0.0

これは、オペレーティングシステムに指示します すべてのパブリックIPで聴くことができます。

+0

私は実際にこれを投稿した後すぐにGuincornのためにそれにつまずいた。ちょうど興味があるのは、0.0.0.0か、逆プロキシを実行している> – nerdlyist

+0

です。 '0.0.0.0'で実行する主な利点は、主に逆プロキシを設定する必要がないことです。私は機能を開発し、迅速に設定する必要があるときにdevモードで、私は最も簡単な設定に行くと、私はそれがはるかに良い追加のインフラストラクチャの設定を避けることができます –

+0

明確にする最後のポイント。したがって、プロダクションに移行するときは、リバースプロキシを使用する方がよいでしょうか? – nerdlyist