개발로 자기계발
article thumbnail
728x90
Render란?

개발자는 코딩에 집중할 수 있고 인프라에 대해 걱정하지 않아도 된다.

플랫폼 서비스로 개발자가 클라우드 환경해서 애플리케이션을 구축, 실행 및 운영할 수 있도록 도와준다.

유료 버전, 무료 버전도 있으며 현재 글에서는 무료버전을 다룰 예정이다.

 

Render 기능

코드 개발 시스템

CI(Continuous Integration) / CD(Continuous Deployment)

확장성과 부하분산

 

Render 흐름

Local Git >> GitHub >> render >> 서비스 및 사용자들 

 

비슷한 클라우드 플랫폼

AWS, Azure, Google Cloud


https://github.com/seokcode/fastapi

 

1. requirement.txt 만들기

python 프로젝트의 의존성 정보가 담긴 문서로 버전 관리에 용이하다.

$ pip3 freeze > requirements.txt

FastAPI를 진행하는 동안 설치한 라이브러리들의 정보(이름 / 버전)가 담겨있다.

 

2. github에 푸시

 

3. Render 환경 구축

https://render.com/

 

Cloud Application Hosting for Developers | Render

Render is a unified cloud to build and run all your apps and websites with free TLS certificates, global CDN, private networks and auto deploys from Git.

render.com

회원가입 후 로그인시 페이지

 

 

fastapi 연결

 

 

Root Directory는 무시
Environment는 파이썬 환경
Start Command FastAPI 실행 명렁어
Region 자기한테서 가까운 곳
Name 자기가 원하는 이름

Start Command => uvicorn main:app --reload --host=0.0.0.0 --port=10000으로 수정!

배포가 실패한 이유는 로그를 확인했을 때 외부서버에서 PostgreSQL 서버로 접속하려는 경우에 발생했다.

 

 

4. Elephantsql 데이터베이스 배포

https://www.elephantsql.com/

 

ElephantSQL - PostgreSQL as a Service

Security is something we prioritize above anything else. A well built environment start with high coding standards that guard against attempted security breaches. Our system components undergo tests and source code reviews to assess the security before we

www.elephantsql.com

Elephantsql deploy-database 들어가서 URL 복사
만든 직후에는 테이블이 없고 Render와 연결 후 웹에 접속하면 테이블이 자동 생성 된다.

 

5. PostgreSQL 주소 변경

 URL을 database.py의 url 변수에 붙여 넣기

 

(로컬에서)PostgreSQL 외부 접속 허용하고 싶다면?

 

컴퓨터 내 postgresql.conf 파일을 찾아서 수정한다.
#listen_addresses = 'localhost' -> listen_addresses = '*'
#port = 5432 -> port = 5432

 

컴퓨터 내 pg_hba.conf 파일을 찾아서 수정한다.

# DO NOT DISABLE!
# If you change this first entry you will need to make sure that the
# database superuser can access the database using some other method.
# Noninteractive access to all databases is required during automatic
# maintenance (custom daily cronjobs, replication, and similar tasks).
#
# Database administrative login by Unix domain socket
local   all             postgres                                peer

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             0.0.0.0/0               md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local   replication     postgres                                True
#host    replication     postgres        127.0.0.1/32            md5
#host    replication     postgres        ::1/128                 md5

 

6. main.py 수정

from fastapi import FastAPI
import models
from database import engine
from routers import auth, todos, users
from starlette.staticfiles import StaticFiles
from starlette import status
from starlette.responses import RedirectResponse

app = FastAPI()

models.Base.metadata.create_all(bind=engine)

app.mount("/static", StaticFiles(directory="static"), name="static")

@app.get("/")
async def root():
    return RedirectResponse(url="/auth", status_code=status.HTTP_302_FOUND)

app.include_router(auth.router)
app.include_router(todos.router)
app.include_router(users.router)

 

7. git commit (database.py, main.py 수정사항 git에 반영)

 

 

8. render 확인

빨간 박스를 친 주소로 접속!

https://seok-deployment.onrender.com/auth/

 

TodoApp

 

seok-deployment.onrender.com

 

 

9. 실행 확인

회원가입 완료

 

elephantsql 테이블에서 잘 만들어진것을 볼 수 있다.

 

로그인까지 마무리!

 

728x90
SMALL
profile

개발로 자기계발

@김잠봉

틀린부분이나 조언이 있다면 언제든 환영입니다:-)