Ich bereite die Bereitstellung einer kleinen Flask-App vor, die ich für den internen Gebrauch entwickelt habe. Ich habe einen alten Laptop mit Ubuntu Server 16.04, uWSGI und Nginx, den ich für die Bereitstellung verwenden werde.Soll instance/config.py beim Bereitstellen einer Flask-App auf den Produktionsserver hochgeladen werden?
OPTION 1
Meine aktuelle App-Setup hat eine instance/config.py
Datei, die ich aus der Versionskontrolle gehalten haben. Diese Datei enthält die folgenden:
SECRET_KEY = ...
SQLALCHEMY_DATABASE_URI = ...
# Google 'client_id' and 'client_secret' for social authentication functionality.
Die instance/config.py
-Datei geladen wird wie folgt in app/__init__.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')
Ist es sicher, das gleiche Setup für die Produktion zu halten und so haben die instance/config.py
Datei in der Produktion Server?
OPTION 2
Alternativ sollte ich mit Umgebungsvariablen werden? Wenn dies der Fall wäre, würde ich etwas tun, wie so in wsgi.py
:
os.environ['FLASK_CONFIG'] = 'production'
os.environ['SECRET_KEY'] = ...
os.environ['SQL_ALCHEMY_DATABASE_URI'] = ...
und habe dann folgend in app/__init__.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')
Die Produktion ist eine andere Instanz als dev, daher sollte sie andere Instanzeinstellungen haben. – davidism
Ich bin mir nicht sicher, was du meinst. Ich weiß, 'SQLALCHEMY_DATABASE_URI' wird sich von dem unterscheiden, den ich in der Entwicklung verwende, aber sagst du, dass ich auch einen anderen' SECRET_KEY' verwenden soll?Aber meine Frage bleibt: ** Ist es sicher, "instance/config.py" auf dem Produktionsserver zu haben? ** Bitte beachten Sie, dass ich in meinem Fall auch eine '/ config.py' Datei habe, in der ich andere Einstellungen behalte (zB 'DEBUG = False' für die Produktion, etc.) –
Warum ist die Existenz einer Konfigurationsdatei in der Produktion unsicher? Auch nicht sicher, warum Sie Instanz-Konfiguration haben und separat etwas anderes namens Config für verschiedene Konfigurationen haben. Klingt so, als würden Sie Dinge für sich selbst verwirrend machen. Die Antwort läuft auf "Konfigurieren, was Sie konfigurieren müssen". Sie können das jedoch für Ihre Bereitstellung tun. – davidism