내부 용으로 개발 한 작은 플라스크 응용 프로그램을 배포 할 준비를하고 있습니다. 나는 배치를 위해 사용할 Ubuntu Server 16.04, uWSGI 및 Nginx가있는 오래된 노트북을 가지고 있습니다.Flask 앱을 배포 할 때 인스턴스/config.py를 프로덕션 서버에 업로드해야합니까?
옵션 1
나의 현재 응용 프로그램 설정은 I 버전 제어의에서 를 유지 한 instance/config.py
파일이 있습니다. 이 파일에는 다음이 포함
app/__init__.py
에서 다음과 같이 instance/config.py
파일이로드 SECRET_KEY = ...
SQLALCHEMY_DATABASE_URI = ...
# Google 'client_id' and 'client_secret' for social authentication functionality.
:
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 대안
, I는 환경 변수를 사용합니까?
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')
Production은 dev와는 다른 인스턴스이므로 인스턴스 설정이 달라야합니다. – davidism
무슨 뜻인지 모르겠습니다. 나는'SQLALCHEMY_DATABASE_URI'가 제가 개발에 사용하는 것과 다르다는 것을 알고 있습니다 만, 당신은 다른'SECRET_KEY'를 사용해야한다고 말하고 있습니까?하지만 제 질문은 남아 있습니다 : ** 인스턴스 서버에'instance/config.py'를 사용하는 것이 안전합니까? ** 제 경우에는 다른 설정을 유지하는'/ config.py' 파일이 있습니다. (예 : 생산을위한'DEBUG = False') –
프로덕션 환경에서 설정 파일의 존재가 안전하지 않다고 생각하는 이유는 무엇입니까? 또한, 왜 당신은 인스턴스 구성을 가지고 있고 다른 구성을 위해 config라는 다른 것을 별도로 가지고 있는지 확실하지 않습니다. 네가 혼란스럽게 만드는 것처럼 보이네. 대답은 "구성해야 할 항목을 구성"하는 것입니다. 그러나 배포를 위해이 작업을 수행 할 수 있습니다. – davidism