● AWS Lightsail
AWS Lightsail 시작
AWS에서는 여러가지 서비스를 제공하지만 이번 프로젝트에서는 Lightsail을 사용한다.
가상 서버를 의미하는 인스턴스를 만든다. Linux 선택 후 Ubuntu도 선택한다. 아래를 보면 요금 별로 메모리, CPU, 저장용량, 전송이 다른데 지금의 프로젝트는 작은 blog 이므로 가장 낮은 요금제를 선택한 후 인스턴스의 이름을 짓는것으로 인스턴스를 만든다. 첫 3개월은 무료라니 정말 대기업의 신규 고객유치를 위한 혜택은 놀라울 정도로 파격적이라고 생각한다.
빨간색 박스안의 버튼을 클릭하면 가상 서버의 터미널에 접속 할 수 있다. AWS서버 터미널을 이용하여 로컬 터미널에서 하던 것을 가상 서버에서도 할 수 있다.
● 가상 서버로 프로젝트 옮기기
github 저장소를 가상 서버로 클론
github 저장소에서 clone or download 버튼을 클릭해 주소 복사 후 AWS 터미널에서 만든 github폴더에 복사한 주소를 입력하여 클론하도록 한다.
가상 서버에 Docker 설치
AWS 인스턴스에 Docker가 설치되어 있지 않으므로 sudo-get update 명령어로 우분투에서 소프트웨어를 설치시 주로 사용하는 apt-get을 최신으로 업데이트한다. 그 후 남아있을지 모를 remove docker docker-engine docker.io로 도커 관련 내용을 삭제하여 docker를 설치하는데 오류가 없도록 한다.
sudo apt install docker.io 명령어로 docker를 설치하고 우분투 서버 시작시 자동으로 실행되도록 sudo systemctl start docker 그리고 sudo systemctl enable docker 명령어를 입력한다. 마지막으로 docker --version으로 버전을 확인하여 제대로 설치 되었는지 확인한다.
docker-compose 역시 설치되어 있지 않은 상태이므로 sudo apt install docker-compose 명령어로 설치한다.
● 도커로 서비스 시작
고정 IP 만들기
아래의 static IP 부분의 Create static IP 버튼을 눌러 고정 IP를 만든다. 서버 고정 주소를 만들게 되면 글자 그대로 IP가 고정되고 선택한 인스턴스의 동적 IP주소가 할당된 고정 IP 주소로 대체된다.
● 배포용 환경설정 파일 만들기
.env.prod 파일
이전에 만든 .env.prod 와 .env.prod.db 파일은 Docker 컨테이너를 실행하기 위해 필요하지만 gitignore에 등록했기 때문에 git 버전관리 대상에 해당하지 않아 클론한 AWS 서버에 전달되지 않았다. 따라서 AWS 터미널 상에서 해당 파일을 만들어 보도록 한다.
먼저 touch 명령어로 파일을 만든 후 ls -A 명령어로 해당 파일이 생성되었는지 확인한다.
nano 에디터를 사용하여 .env.prod 파일을 작성해 본다. DJANGO_ALLOWED_HOSTS 부분의 뒷부분에는 할당된 고정 IP주소를 추가해주고 마지막줄에 DATABASE = postgres도 추가해 준다. 작성 후 ctrl + O 키를 누른후 enter 버튼으로 저장하고 ctrl + X로 nano 에디터를 종료한다.
.env.prod.db
.env.prod.db 파일에도 코드를 넣어준다.
● 컨테이너 실행
드디어 AWS 서버에서 Docker 이미지를 실행하도록한다. sudo docker-compose up -d -build 명령어로 빌드 후 실행하고 새 DB를 반영하기 위해 makemigrations 후 migrate한다.
이제부터는 할당된 고정 IP를 인터넷 주소창에 입력시 누구나 접속할 수 있게된다.
'Backend > Django + Bootstrap 개발 일지' 카테고리의 다른 글
38. HTTPS 인증 (0) | 2022.10.26 |
---|---|
37. 도메인 연결 (0) | 2022.10.24 |
35.Gunicorn, Nginx (0) | 2022.10.23 |
34. PostgreSQL 사용 (0) | 2022.10.21 |
33. Docker (0) | 2022.10.18 |