AWS EC2 서버 배포는 완료되었지만 해당 URL은 http의 형태이다.
프론트와 서버 연결을 위하여 https 형태의 배포가 필요했다.
1. 도메인 구매하기
- 내도메인.한국 (https://xn--220b31d95hq8o.xn--3e0b707e/)
- 원하는 도메인 검색 후 도메인 등록
- 설정
- 고급 설정 (DNS)
- IP연결(A)
- AWS EC2 URL넣어주기
- 수정 완료
- IP연결(A)
- 고급 설정 (DNS)
2. AWS EC2 설정: 인바운드 규칙 추가
- EC2- 보안 그룹- 인바운드 규칙 편집
- 보안 그룹 규칙 1
- 유형
- HTTP
- 프로토콜
- TCP
- 포트 범위
- 80
- 소스
- 0.0.0.0/0
- 유형
- 보안 그룹 규칙 2
- 유형
- HTTPS
- 프로토콜
- TCP
- 포트 범위
- 443
- 소스
- 0.0.0.0/0
- 유형
- 보안 그룹 규칙 3
- 유형
- SSH
- 프로토콜
- TCP
- 포트 범위
- 22
- 소스
- 0.0.0.0/0
- 유형
- 보안 그룹 규칙 4
- 유형
- 사용자 지정 TCP
- 프로토콜
- TCP
- 포트 범위
- 8080
- 소스
- 0.0.0.0/0
- 유형
- 보안 그룹 규칙 1
3. AWS Route 53 호스팅 영역 생성
- Route 53- 호스팅 영역- 호스팅 영역 생성
- 도메인 이름
- 구매한 도메인 입력
- 유형
- 퍼블릭 호스팅 영역 선택
- 호스팅 영역 생성 클릭
- 호스트 영역 및 레코드 생성 완료 (만약 IPv6 주소가 있으면 AAAA 유형 추가하기)
- 도메인 이름
4. EC2 서버에 Nginx 설치
- EC2 서버 접속
- Putty.exe 실행
- Host Name
- ec2-user@IP주소(EC2 IP주소)
- SSH- AUTH- Credentials
- ppk 파일 등록
- 서버 접속 완료
- 터미널 입력
- Nginx 설치
- sudo yum install nginx
- cerbot 설치
- sudo yum install certbot python3-certbot-nginx
- 인증서 발급
- sudo certbot certonly --standalone -d 구매한도메인이름 (-d www.구매한도메인이름)
- Nginx 시작 및 활성화
- sudo systemctl start nginx
- sudo systemctl enable nginx
- 만약 Nginx가 80 포트 사용 중이면 프로세스 stop 후 진행
- sudo lsof -i :80
- sudo kill -9 PID값
- 다시 인증서 발급 진행
- nginx.conf 파일 열고 수정
- sudo nano /etc/nginx/nginx.conf
- 내용 수정
- nginx.conf
#nginx.conf events {} http { include /etc/nginx/mime.types; default_type application/octet-stream types_hash_max_size 2048; types_hash_bucket_size 64; client_max_body_size 10M; # 이미지 업로드 용량 확장 # 80 포트로 들어오면 https로 redirect server { listen 80; server_name 구매한도메인이름; return 301 https://$host$request_uri; } # 443 포트로 들어오면 인증을 통한 뒤 8080 포트로 이동 server { listen 443 ssl; server_name 구매한도메인이름; ssl_certificate /etc/letsencrypt/live/구매한도메인이름/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/구매한도메인이름/privkey.pem; location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } }
- nginx.conf
- 저장 및 닫기
- Ctrl + O
- Ctrl + X
- conf 파일 테스트
- sudo nginx -t
- Nginx 재시작
- sudo systemctl restart nginx
- Nginx 상태 확인
- sudo systemctl status nginx
- Nginx 설치
추가 내용: 도커 이미지로 관리하는 방법
- nginx.conf 파일과 같은 위치에 Dockerfile 생성
- Dockerfile
FROM nginx:latest COPY nginx.conf /etc/nginx/nginx.conf COPY your-cert-directory/fullchain.pem /etc/letsencrypt/live/구매한도메인이름/fullchain.pem COPY your-cert-directory/privkey.pem /etc/letsencrypt/live/구매한도메인이름/privkey.pem CMD ["nginx", "-g", "daemon off;"]
- Dockerfile
- 도커 이미지 생성
- docker build -t 도커이미지이름 .
- 도커 컨테이너 실행
- docker run -d -p 80:80 -p 443:443 도커이미지이름
- 도커 명령어 모음
- 실행 중인 컨테이너 목록 확인
- docker ps
- 특정 컨테이너 중지
- docker stop 컨테이너ID
- 컨테이너 시작
- docker start 컨테이너ID
- 컨테이너 재시작
- docker restart 컨테이너ID
- 실행 중인 컨테이너 목록 확인
728x90
'Computer Science > CI&CD' 카테고리의 다른 글
[CI/CD] AWS EC2 + Docker + Github Actions 를 이용한 자동 배포 구축 (0) | 2024.07.02 |
---|---|
[CI/CD] 도커 데스크탑 무한 로딩일 때 (Docker Desktop - Unexpected WSL error, Error: 0x80070002) (1) | 2024.06.30 |
[CI/CD] AWS RDS DB 생성, 설정, 접속 (0) | 2024.05.25 |
[CI/CD] AWS EC2 인스턴스 생성, 접속, 설정, 스프링부트 프로젝트 배포 (0) | 2024.05.24 |
[CI/CD] Github 레포지토리에 올라간 코드에서 한글이 깨져 나올 때 (yaml 파일) (2) | 2024.03.27 |