나만의 배당주 사이트 만들기) 4-1. 배포 단계 - nginx작성 ec2 배포, http 설정

2025. 2. 13. 13:00프로젝트

이 전 글들이 궁금하다면 ?

 

0. 사이트를 만드려는 이유

https://hsjoo126.tistory.com/80

 

1-1. 프로젝트 가능성 보기

https://hsjoo126.tistory.com/81

 

pandas 와 jupyter 이용해서 테스트해보기 

https://hsjoo126.tistory.com/82

 

1-2. 기획 단계 - 디자인, 와이어 프레임, ERD 등

https://hsjoo126.tistory.com/83

 

2. 개발 단계 - 계획짜기, 구현해보기

https://hsjoo126.tistory.com/84

 

2-1. 개발 단계 - 배당지불일, 시장별 티커리스트 구하기

https://hsjoo126.tistory.com/85

 

2-2. 개발 단계 - 코드 정리

https://hsjoo126.tistory.com/86

 

2-3. 개발 단계 - 사이트에 적용하기(장고)

https://hsjoo126.tistory.com/87

 

2-4. 개발 단계 - 사이트 로딩 속도 줄이기

https://hsjoo126.tistory.com/88

 

2-5. 개발 단계 - 주식별 동적인 페이지 만들기

https://hsjoo126.tistory.com/89

 

2-6. 개발 단계 - 티커리스트 db에 저장해서 불러오기, 해결하지 못한 트러블슈팅

https://hsjoo126.tistory.com/91

 

2-7. 429에러를 해결하기위한 노력, 로직 대폭 수정하기 엉엉... 그리고 해냄...

https://hsjoo126.tistory.com/92

 

2-8. cron.py , view.py 작성하기, 디테일 잡기

https://hsjoo126.tistory.com/93

 

2-9. 개발 단계 - 주가그래프그리기(matplotlib), Non-GUI 백엔드? Agg가 뭐야!, 상세페이지 수정, 페이지네이션 등

https://hsjoo126.tistory.com/94

 

2-10. 개발 단계 - 배포를 위한 준비단계!(pip list 정리, 도커 관련, postgresql 접속하기, 트러블 슈팅 등)

https://hsjoo126.tistory.com/96

 

3. 디자인 - 잠깐 쉬어가자! 그런김에 디자인~!

https://hsjoo126.tistory.com/90


 

 

길고 길었던 개발 단계를 지나서 .... 드디어 배포로 진입! 야호 --

오늘은 nginx 작성을 다 하고 ec2로 배포해볼 것이다!

순서는 다음과 같다.

 

1️⃣ nginx.conf & docker-compose.yml에 추가 하기

2️⃣ EC2에 배포!

3️⃣ 도커 설치 & 테스트

4️⃣ 보안그룹 & ip 추가

 

그럼 시작~

 


 

nginx.conf & docker-compose.yml에 추가 하기

nginx.conf 는 이런식으로 작성했고

server {
    listen 80;
    server_name 13.124.195.85;
    location / {
        proxy_pass http://web:8000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_redirect off;
    }
}

docker-compose.yml에도 nginx를 추가해주었다.

  nginx:
    image: nginx:latest
    volumes: 
      - /etc/letsencrypt:/etc/letsencrypt
      - ./nginx.conf:/etc/nginx/conf.d/default.conf
    ports: 
      - "80:80" 
      - "443:443"
    depends_on:
      - web

 

 


 

EC2에 배포!

이제 배포!를 해보자

전에 한 번 배포 정리한 글이 있으니 이번엔 간단하게 하고 넘어갈 것이다

궁금한 사람들은 밑에 링크 참고 하자!

https://hsjoo126.tistory.com/70

 

장고)일단 배포 때리고 프로젝트 시작하기! (2) / EC2 인스턴스 시작 및 접속 ~~ 배포 마무리 -

보통은, 프로젝트 완성 후에 배포를 하지만! 나는 배포를 하고 프로젝트 디벨롭을 하려고 한다 이유는?- 배포할 때 시간 단축을 위해서이다. 프로젝트가 무거워질수록 배포할 때 까다로워지고,

hsjoo126.tistory.com

 

위 글에서는 config.py를 사용했었는데

이번 플젝은 .env를 사용하고, nginx를 사용했으니 그 부분만 추가로 적어보겠다

.env 파일은 깃에 올라가지 않기 때문에 새로 만들어줘야한다.

 

1. .env 파일 위치 확인하기

.env파일은 프로젝트 폴더 안에 있다.

 

2. 인스턴스에서 .env파일 만들기

현재 위치 어딘지 확인하고 프로젝트 폴더로 이동한 후에 

touch .env를 써주면 그 자리에 .env가 생긴다

#목록 확인 하기
ls

#이동하기
cd 원하는 폴더명

#.env 만들기
touch .env

 

 

 

⚠️주의할 점은 .env는 ls 를 쳤을 때 안 보이고 ls -a 를 쳐야 보인다는 것이다!⚠️

⚠️만들고 나서 어라 왜 안 보이지 ? 하지 말고 꼭 ls -a 를 쳐서 확인해보자!!⚠️

 

3. .env 들어가서 작성하기

현재 .env 안에는 아무것도 안 적혀있으므로 들어가서 vs code에 있는 걸 복붙 해주자!

vi 명령어를 통해 들어가면 된다. 

#.env 들어가기
vi .env

#vi창 뜨면 입력모드로 전환하기 
i

#vs code 가서 .env 코드 복사해서 붙여넣기

 

붙여넣기 까지 하면 이런 모습일텐데 esc 눌러서 명령 모드로 전환하고

:wq 입력해서 저장하고 빠져나오자

#입력모드에서 명령모드로 전환하기
esc 

#저장하고 vi 창 닫기
:wq

 

 

 

혹쉬 vi/vm 명령어 모음이 궁금하다면 밑에 링크 참조!

https://hsjoo126.tistory.com/78

 

내가 보려고 적는 vi/vim 단축키

esc 명령 모드로 전환 i 입력 모드로 전환:w 파일 저장:q vi 종료:wq 저장 후 종료:q! 저장하지 않고 강제 종료텍스트 이동h 왼쪽으로 이동l 오른쪽으로 이동j 아래로 이동k 위로 이동페이지 

hsjoo126.tistory.com

 

 

 


 

 

 

자! nginx 도 추가 해줬고 .env 설정도 했으니 도커를 깔 차례다

도커 설치 & 테스트

1.  Docker 설치 준비

필요한 패키지들을 먼저 설치하자

sudo apt-get update
sudo apt-get install -y \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

 

2. Docker 공식 GPG 키 추가

sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

 

3. Docker 저장소 추가

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

 

4. Docker 설치

sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

 

 

7. Docker 서비스 시작 및 활성화

Docker 데몬을 실행하고, 인스턴스 재부팅 시 자동으로 실행되도록 설정

sudo systemctl start docker
sudo systemctl enable docker

 

8. 설치 확인

docker --version

 

명령어들을 복붙해서 엔터치면 알아서 설치 될 거다~!

 

9. 테스트 해보기

이제 build 와 up 을 해볼 차례다

#docker build 해보기
sudo docker-compose build

#up하기
sudo docker-compose up

 

중요한 건 sudo를 꼭 붙여줘야된다는 것!

build와 up을 각각 해본 후 에러가 있는지 없는지 반드시 살펴보자!

 

에러가 없다면 도커 끄고 백그라운드로 다시 up하면 된다!

#도커 끄기 
sudo docker-compose down

#도커 빌드 & 업 & 백그라운드로 키기
sudo docker-compose up --build -d

 

 


 

도커를 다 해줬다면, 

보안 그룹 추가 및 ip 주소에 맞게 홈페이지에 접속할 수 있게끔 코드를 바꿔보자!

보안 그룹 추가는 귀찮아서 전에 썼던 글의 캡쳐본을 들고 왔다 ㅋㅋㅋㅋㅋㅋ

 

보안그룹 & ip 추가

보안탭 -> 보안그룹의 링크 누르기

 

인바운드 규칙 편집 누르기

 

 

규칙 추가를 누르고

 

 

나는 8000포트와 80포트를 같이 넣었는데 사실 80만 넣어도 되긴함..ㅎ 

다 넣고 규칙 저장 ㄱㄱㄱ

 

그리고 ip 주소를 추가해주면 된다.

방법은 아까랑 동일함!

vi .env -> i(입력모드 전환) -> ip 주소 복붙

 

1. .env

 

2. nginx.conf


 

 

다 설정해준 후 ip 주소로 접속해보면!!

잘 되는 것을 볼 수 있읍니다~

 


 

자 ! 오늘은 nginx 와 배포까지 해보았읍니다!

이제 ... 도메인 연결, https 적용만 하면 끝이다 ~

와아아ㅏㅏㅏ 얼마 안 남았어!

그럼 다음글에서 봐용 ㅃㅇ