
Django 배포 - Postgres DBaaS
Postgres 서버를 가동하고 실행하려는 마지막 시도에서 실제로 시간이 얼마나 걸리는지 다시 깨달았습니다. Postgres 서버 설치와 함께 전체 서버에 보안이 필요합니다. 시간이 많이 걸릴 수 있습니다. 많은 사용자가 있는 소규모 vps의 경우 제한된 성능도 있습니다.
대안: DBaaS(Database-as-a-Service).
DBaaS의 장점은 간단합니다.
시간절약(서버관리 및 설치) 보안(위험 감소 및 모범 사례) 데이터 보안(자동 백업) 확장성(빠르고 쉬운 확장 및 축소)
내가 추천할 수 있는 공급자는 다음과 같습니다.
Linode DigitalOcean Render
fly.ioPostgres on Fly의 서비스도 매우 유망해 보입니다.
로그인: 데이터베이스 생성: 새 db로 전환:
그런 다음 보안 암호를 사용하여 새 사용자를 만들 수 있습니다.
모든 것이 원활하게 작동하도록 django는 다음 매개변수를 권장합니다( django-docs 참조).
마지막으로 새 사용자의 권한을 변경할 수 있습니다.
여기서 django-environ 의
DigitalOcean의 앱 플랫폼에 대한 참고 사항:
DigitalOcean의 앱 플랫폼을 사용하는 경우 동적 변수
향후 재배포 후에도 데이터를 사용할 수 있도록 Postgres-String을 변수로 사용할 수 있습니다(암호화 켜짐).
(DO의 Postgres DBaaS와 관련하여)
지금까지의 성능에 매우 만족합니다. 나중에 PgBouncer를 통해 연결 풀링이 필요한 경우 DO의 GUI를 통해 빠르고 쉽게 추가할 수 있습니다. 가격은 단일 및 소규모 프로젝트의 경우 약간 비싸지 만 다른 프로젝트가 추가되면 신속하게 비용을 지불합니다. DigitalOcean을 사용하면 15€ 및 3개의 데이터베이스(1GB 메모리, 1 vCPU, 15GB 디스크)에서 시작됩니다.
읽어 주셔서 감사합니다.
rburkhardt.com에 원래 게시됨
내 RSS에 가입하고 또는 Github에 연결하십시오.
대안: DBaaS(Database-as-a-Service).
DBaaS의 장점은 간단합니다.
내가 추천할 수 있는 공급자는 다음과 같습니다.
fly.ioPostgres on Fly의 서비스도 매우 유망해 보입니다.
준비
포스트그레스
psql -U doadmin -h host -p port -d database
CREATE DATABASE djangodb;
\c djangodb;
그런 다음 보안 암호를 사용하여 새 사용자를 만들 수 있습니다.
CREATE USER djangouser WITH PASSWORD 'securepassword';
모든 것이 원활하게 작동하도록 django는 다음 매개변수를 권장합니다( django-docs 참조).
ALTER ROLE djangouser SET client_encoding TO 'utf8';
ALTER ROLE djangouser SET default_transaction_isolation TO 'read committed';
ALTER ROLE djangouser SET timezone TO 'UTC';
마지막으로 새 사용자의 권한을 변경할 수 있습니다.
GRANT ALL PRIVILEGES ON DATABASE djangodb TO djangouser;
장고
여기서 django-environ 의
env.db()
를 DATABASE_URL
에 사용하기로 결정했습니다.
import os
from pathlib import Path
import environ
BASE_DIR = Path(__file__).resolve().parent.parent
env = environ.Env()
env_file = os.path.join(BASE_DIR, ".env")
if os.path.isfile(env_file):
env.read_env(env_file)
DATABASE_URL = env.str("DATABASE_URL", default=False)
if DATABASE_URL:
DATABASES = {"default": env.db()}
else:
DATABASES = {
"default": {
"ENGINE": "django.db.backends.sqlite3",
"NAME": BASE_DIR / "db.sqlite3",
}
}
DigitalOcean의 앱 플랫폼에 대한 참고 사항:
DigitalOcean의 앱 플랫폼을 사용하는 경우 동적 변수
${dbname.DATABASE_URL}
를 DATABASE_URL
로 건너뛸 수 있습니다. 이것은 재배포로 인해 항상 빈 데이터베이스로 이어졌습니다. 이전에 DO의 GUI를 통해 데이터베이스를 생성하고 그에 따라 변수를 변경한 경우에도.향후 재배포 후에도 데이터를 사용할 수 있도록 Postgres-String을 변수로 사용할 수 있습니다(암호화 켜짐).
결론
(DO의 Postgres DBaaS와 관련하여)
지금까지의 성능에 매우 만족합니다. 나중에 PgBouncer를 통해 연결 풀링이 필요한 경우 DO의 GUI를 통해 빠르고 쉽게 추가할 수 있습니다. 가격은 단일 및 소규모 프로젝트의 경우 약간 비싸지 만 다른 프로젝트가 추가되면 신속하게 비용을 지불합니다. DigitalOcean을 사용하면 15€ 및 3개의 데이터베이스(1GB 메모리, 1 vCPU, 15GB 디스크)에서 시작됩니다.
읽어 주셔서 감사합니다.
rburkhardt.com에 원래 게시됨
내 RSS에 가입하고 또는 Github에 연결하십시오.