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 환경 구축
Root Directory는 무시
Environment는 파이썬 환경
Start Command FastAPI 실행 명렁어
Region 자기한테서 가까운 곳
Name 자기가 원하는 이름
Start Command => uvicorn main:app --reload --host=0.0.0.0 --port=10000으로 수정!
배포가 실패한 이유는 로그를 확인했을 때 외부서버에서 PostgreSQL 서버로 접속하려는 경우에 발생했다.
4. Elephantsql 데이터베이스 배포
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/
9. 실행 확인
'Develop > FastAPI' 카테고리의 다른 글
FastAPI(CNN 모델)와 Django(웹 구현)연동 - 다중 이미지 input (0) | 2023.04.05 |
---|---|
FastAPI 프로젝트 git 올리기(git 명령어) - 96 (0) | 2023.02.01 |
FastAPI 프로젝트 진행(비밀번호 변경, 라우터 추가) - 95 (0) | 2023.01.31 |
FastAPI 프로젝트 진행(코드 정리) - 94 (0) | 2023.01.29 |
FastAPI 프로젝트 진행(회원가입 기능 구현) - 93 (0) | 2023.01.29 |