1. 아마존 웹 서비스로 프로젝트 옮기기
Linux 계열의 Ubuntu를 설치하겠습니다.
인스턴스 스펙을 설정합니다.
저는 제일 작은걸로
인스턴스를 생성하고 조금 기다렸다가 생성하면 실행(Running)됩니다.
우측 상단에 콘솔을 클릭합니다.
'github'라는 폴더를 생성하고 복사한 github URL을 입력합니다.
해당 깃의 username과 password를 입력하라고 하는데 비밀번호 말고 토큰으로 입력하라는 것 같습니다.
토큰을 생성해봅시다.
깃 우측 상단 setting에 들어가면
Developer settins라고 있습니다.
토큰 생성 버튼을 클릭합니다.
Note는 토큰 설명
Expiration은 토큰의 유효 기간을 의미하고
Select scopes에서 용도에 맞는 권한들을 지정해줍니다.
설정을 마치면 토큰 번호가 나오는데 복사해서 비밀번호 칸에 넣어줍니다.
정상적으로 작동하는 것을 확인할 수 있습니다.
$ sudo apt-get update
$ sudo apt-get remove docker docker-engine docker.io
apt-get을 최신 버전으로 업데이트 하고 혹시 모를 도커 정보를 모두 삭제합니다.
$ sudo apt install docker.io
$ sudo systemctl enable docker
$ sudo systemctl enable docker
$ docker --version
도커를 설치하고 서버가 시작될 때 도커가 자동으로 실행되도록 start, enable docker를 추가합니다.
$ sudo apt install docker-compose
마지막으로 docker compose 를 설치합니다.
몇 가지 라이브러리를 재시작해야 한다고 나옵니다.
Yes를 클릭해줍니다.
2. 도커로 서비스 시작하기
Lightsail 페이지에서 Networking > Static IP Create static IP 선택
방금 생성한 인스턴스를 선택합니다.
고정 IP가 생성되었습니다.
이렇게 내가 생성한 인스턴스에 고정IP가 할당되었습니다.
설정파일인 .env.prod와 .env.prod.db가 없기 때문에 만들어야합니다.
$ touch .env.prod .env.prod.db
touch 명령어로 .env.prod와 .env.prod.db 파일을 생성합니다.
$ nano .env.prod
nano 에디터로 내용을 추가합니다.
할당받은 고정 IP를 추가합니다.
원하는 ID와 PW도 추가합니다.
Ctrl + o > Enter 저장
Ctrl + x 종료
$ nano .env.prod.db
.env.prod.db도 동일하게 진행합니다.
단, 위에서 변경했던 ID와 PW를 동일하게 입력합니다.
$ sudo docker-compose up -d --build
$ sudo docker-compose exec web python manage.py makemigrations
$ sudo docker-compose exec web python manage.py migrate
makemigrations를 진행하니 위와 같은 에러가 발생합니다.
db가 연결되지 않았다고 하네요
$ sudo -u postgres psql
postgres 계정으로 접속해보겠습니다.
$ sudo apt-get install postgresql postgresql-contrib
만약 postgreSQL이 설치되지 않았다면 위의 명령어를 입력하여 설치합니다.
이렇게 나오면 성공적으로 접속한것입니다.
\du+를 입력해주면 postgres에 부여된 계정을 확인할 수 있습니다.
새로 계정을 생성하고 권한을 부여할 수 있지만 기존에 모든 권한을 가지고 있는 postgres를 사용하겠습니다.
이전에 설정했던 .env.prod와 .env.prod.db의 DATABASE, USER, PASSWORD를 설치된 postgres 에 맞게 수정합니다.
이렇게 수정하니 성공적으로 마이그레이션이 완료되었습니다!
db연결 문제를 해결하고 고정IP로 접속하니 위와 같은 문제가 발생합니다.
해당 IP가 허용되지 않았다는군요
이상하네요 분명 위에서 DJANGO_ALLOWED_HOSTS에 추가해줬는데....
.env.prod 파일에서 불러오지 못하는 것 같아서 settings파일에 직접 IP를 넣어주었습니다.
여기서 localhost와 127.0.0.1은 꼭 넣어주어야 합니다!
잘 뜨는 것을 확인할 수 있습니다.
'Python > Django' 카테고리의 다른 글
Django 로그인 시 CSRF 에러(CSRF verification failed. Request aborted) (0) | 2022.07.12 |
---|---|
docker 실행 시 nginx 에러 (0) | 2022.07.12 |
Django PostgreSQL 사용하기 (0) | 2022.07.05 |
도커(Docker)로 배포하기 (0) | 2022.07.04 |
Django 검색 기능 구현 (1) | 2022.06.30 |