AWS EC2를 이용하여 django 배포하기 (2)
이번 포스팅은 저번 포스팅에 이어서 EC2 서버에 django 배포와 CI/CD를 구축했던 과정을 적어보려한다.
저번 포스팅의 내용을 따라하면 ubuntu OS에 메모리 1G인 깡통서버하나를 만들 수 있다.
이제 이곳에 DB부터 차근차근 설치를 진행했다.
1. MariaDB 설치
프로젝트에 사용되는 야구 데이터들을 적재해둘 DB부터 설치해야한다. 이 DB는 야구데이터뿐만 아니라 django에 연동시켜 웹서비스에 사용되는 데이터들까지도 적재할 예정이다.
우선 패키지 업데이트 부터 진행해주고 mariadb-server 패키지를 다운로드 받았다.
sudo apt-get update
sudo apt-get install mariadb-server
이제 설치된 mariadb에 접속해보자
sudo mysql -u root -p
명령어를 입력하면 비밀번호를 입력하라고 하는데 아직 비밀번호를 설정안해줘서 그런건지 아무거나 입력해줘도 접속이 가능했다.
아무튼 접속을 하면 제일먼저 내가 사용할 database와 user부터 생성해줘야한다.
# 데이터베이스 생성
CREATE DATABASE 데이터베이스명;
# 유저 생성 (%부분은 모든 ip 환경에서 접속이 가능하게 해준다는 의미)
CREATE USER '아이디'@'%' IDENTIFIED BY '비밀번호';
# 사용자 권한 부여
GRANT ALL PRIVILEGES ON 데이터베이스.* TO '아이디'@'%';
# 새로고침
FLUSH PRIVILEGES;
# 유저 확인 (아래 쿼리를 날리기 전에 mysql 데이터 베이스로 이동해야한다. 명령어 use mysql)
select user,host from user
외부 접속이가능한 user를 만들었으니 이제 mariaDB 자체의 설정을 변경해줘야한다.
# mariadb 설정파일 수정 명령어
sudo vim /etc/mysql/mariadb.conf.d/50-server.cnf
bind-address 부분을 127.0.0.1 --> 0.0.0.0 으로 변경해준다.
(최초 집입 후 esc 버튼을 누른 후 i 를 누르면 insert모드로 변경되어 수정이 가능해진다.
저장할때는 esc버튼을 누른 후 :wq -> enter 를 눌러주면된다.)
설정 파일을 변경해주고 mariadb를 재시작해주면 외부에서도 접속이 가능해진다.
# mariaDB 재시작 명령어
sudo systemctl restart mysql
이제 데이터가 적재될 DB 구성은 완료되었다. 저번 포스팅에서 3306 포트를 열어 뒀기 때문에 디비버에서도 연동시켜서 간편하게 작업이 가능하다. ip는 인스턴스정보에 있는 퍼블릭 IPv4 주소를 사용하면 된다.
2. django 배포
이제 django를 배포할 차례이다. 서버를 구축하기전 사용했던 저장소를 그대로 git clone 받아줬다.
# 디폴트 디렉토리로 이동
cd
# 폴더 생성
mkdir {폴더이름}
# 폴더 디렉토리로 이동
cd {폴더이름}
# git clone
git clnoe {주소}
이제 이 저장소에 DB에 데이터가 담겨있는 파일만 생성해주면 알아서 setting.py에 적용되도록 만들었기 때문에 yamls폴더를 저장소 디렉토리 안에 만들어 준 후 sql_info.yaml파일을 만들어 DB에 대한 정보를 넣어줬다.
setting.py에 바로 ip주소를 적지 않은 이유는 보안문제때문이었는데 하나에 파일에서 db정보를 일괄적으로 가져오다보니
수정소요가 매우 줄어들어서 편리했다. 보안을 챙기는 것은 보너스인 느낌이다.
아무튼 이제 DB설정도 완료되었다. 가상환경을 이용하여 django를 실행해보자.
가상환경 생성하기
가상환경을 생성하기 앞서 필요한 모듈을 설치해야한다.
# 3.11버전을 사용할 것이므르 버전을 명시해준다.
sudo apt install python3.10-venv
# 가상환경 생성
python3.10 -m venv venv
# 가상환경 실행
## venv폴더가 있는 상위 디렉토리에서 진행해야한다.
source venv/bin/activate
## window 환경일 경우에는
source venv/script/activate
이제 가상환경에 접속이 되었다. django실행에 필요한 모듈을 다운받자 git 저장소에 있는 requirements.txt를 이용하면 간단하게 가능하다.
#requirements.txt가 있는 경로로 이동 후
pip install -r requirements.txt
혹시나 mysqlclient 설치 중 에러가 발생하면
sudo apt-get install python3-dev default-libmysqlclient-dev build-essential
이 명령어를 실행시켜보자
이제 django실행에 필요한 모든 모듈이 설치되었다.
# DB 설정 동기화
python manage.py makemigrations
python manage.py migrate
# 서버 실행
python manage.py runserver
db설정 동기화를 하고 서버를 실행시켜주면 된다.
이번 포스팅 역시 길어져서 CI/CD 구축은 다음 포스팅에서 작성하려고한다.