私は内部で使用するために開発した小さなFlaskアプリケーションを配備する準備をしています。私は配備に使用するUbuntu Server 16.04、uWSGI、Nginxを備えた古いノートパソコンを持っています。Flaskアプリケーションをデプロイするときにインスタンス/ config.pyを実動サーバーにアップロードする必要がありますか?
OPTION 1
私の現在のアプリケーションのセットアップは、私はバージョン管理のからを守ってきたinstance/config.py
ファイルを持っています。このファイルには以下が含まれています。
SECRET_KEY = ...
SQLALCHEMY_DATABASE_URI = ...
# Google 'client_id' and 'client_secret' for social authentication functionality.
app/__init__.py
に次のようにinstance/config.py
ファイルがロードされます。
def create_app(config_name):
app = Flask(__name__, instance_relative_config=true)
app.config.from_object(app_config[config_name])
app.config.from_pyfile('config.py')
は、生産のために、この同じ設定を保つため、生産にinstance/config.py
ファイルを持っている、それは安全ですサーバ?
OPTIONまた2
、私は環境変数を使用してすべきですか?
os.environ['FLASK_CONFIG'] = 'production'
os.environ['SECRET_KEY'] = ...
os.environ['SQL_ALCHEMY_DATABASE_URI'] = ...
、その後app/__init__.py
に次のようにあります:このような場合であれば、私はwsgi.py
にそうような何かを行う必要があります
def create_app(config_name):
if os.getenv('FLASK_CONFIG') == 'production':
app = Flask(__name__)
app.config.update(
SECRET_KEY=os.getenv('SECRET_KEY')
SQLALCHEMY_DATABASE_URI=os.getenv('SQLALCHEMY_DATABASE_URI')
)
else:
app = Flask(__name__, instance_relative_config=true)
app.config.from_object(app_config[config_name])
app.config.from_pyfile('config.py')
プロダクションはdevとは異なるインスタンスなので、インスタンス設定が異なる必要があります。 – davidism
あなたは何を意味するのか分かりません。私は 'SQLALCHEMY_DATABASE_URI'が私が開発で使っているものと違うことは知っていますが、あなたはまた' SECRET_KEY'を別に使うべきですって言っていますか?しかし、私の質問は残っています:**は、実例サーバーで 'instance/config.py'を持つのは安全ですか?**私のケースでは、私は'/config.py'ファイルを持っています。 (例えば、生産のための 'DEBUG = False') –
プロダクションの設定ファイルが安全でないと思うのはなぜですか?また、なぜあなたはインスタンスの設定を持っているのか分かりませんし、別の設定のためにconfigという別のものを別に持っています。あなたは自分のために混乱させているように思えます。答えは、「設定が必要なものを設定する」ことです。しかし、それはあなたの展開のために働くことができます。 – davidism