지난번 RDS 생성하는 과정까지 해보았다. 이후 EC2
서버에 배포하고 싶은 프로젝트를 클론받아 RDS 와 연동해 gunicorn
으로 연동하는 작업을 해보겠다.
우선 EC2 서버에 접속해보자.
우선 우리가 EC2
를 생성하며 받았던 aws_pem
파일이 있는 폴더로 이동한 후 접속하자
$ ssh -i <파일이름.pem> ubuntu@ <EC2 퍼블릭 IPv4 주소>
이후 local 개발환경과 같은 설정을 하기 위해 미니콘다를 설치하자.
미니콘다 공식 홈페이지
이후 각자 EC2 생성 때 만들었던 환경에 맞게 미니콘다를 설치하자. 나는 ubuntu 를 받았기 때문에 Linux installers 에서 파이썬 버전에 맞게 다운 받았다.
$ wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
$ chmod Miniconda3-latest-Linux-x86_64.sh
$ ./Miniconda3-latest-Linux-x86_64.sh
이후 나오는 화면에서 Yes
를 하여 진행!
$ source .bashrc
명령어 실행 후 우리가 익숙하게 보던 듯이 명령어 줄 제일 앞에 (base)
생성
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install gcc
gcc 컴파일러는 mysqlclient 설치 충돌이 나지 않게 하는 명령어이다.
$ sudo apt-get install libmysqlclient-dev
이후 부터는 프로젝트를 할 때마다 만들었다 콘다 가상환경을 만들어주면 된다.
$ conda create -n <가상환경 이름> python='version'
$ conda activate <생성한 가상환경 이름>
$ git clone <배포할 프로젝트 repository>
$ pip install -r requirement.txt
이전 프로젝트에서 설치했던 환경과 같은 환경으로 설치가 된다. -r
은 한번에 내려받는 명령어이다.
$ vi gonggol/settings.py
EC2 IP 주소
적혀있는 부분에 자신의 EC2 주소를 넣어주면된다.
vi my_settings.py
### my_settings.py
SECRET_KEY = 'django-insecure-(*dxkt(57rc7mak7hhr-w*5278inku_rb&ck8l0$@73xu)(j^s'
DATABASES = {
'default' : {
'ENGINE': 'django.db.backends.mysql',
'NAME': '프로젝트 이름',
'USER': 'root',
'PASSWORD': 'RDS 비밀번호',
'HOST': 'RDS 엔드포인트',
'PORT': '3306',
}
}
ALGORITHM = 'HS256'
이후 local DB에 있던 데이터를 RDS에 이전하는 작업을 한 뒤 서버를 실행시키면 문제없이 동작할 것이다. 문제가 있다면 오류를 수정하면서 해결해보자..
이후 포스트맨에서 항상 로컬로 요청하던 것을 EC2서버로 요청이 잘 되는지 확인해 보자.
http://localhost:8000/product?categoryId=2
http://EC2 IP:8000/product?categoryId=2
위에서 아래로 변경해준 뒤 포스트맨으로 요청하면 확인이 가능하다.
하지만 우리는 gunicorn
이라는 WAS(Web Application Server)를 통해 배포해야한다. WAS로 하는 이유는 별도로 자세하게 포스팅하겠다.
pip install gunicorn
nohup gunicorn --bind=0.0.0.0:8000 gonggol.wsgi &
ps -ef | grep python
PID 확인 가능
Kill <PID>
프로젝트 당시에 오류가 없었다면 다음 과정을 진행하면 별 문제없이 배포가 가능 할 것이다. 여기까지 AWS EC2, RDS 배포에 대한 글을 마치겠다.