EC2에 NGINX를 설치해서 Reverse Proxy로 사용하도록 설정하는 과정과
AWS EC2를 생성한 뒤, 도커를 설치하고 도커 이미지를 컨테이너에 실행하는 과정에 대한 기록
EC2에 NGINX설치하기
amazon-linux를 사용하고 있기 때문에, amazon-linux ec2는 NGINX를 아래의 명령어로 입력해서 설치해야 한다.
sudo amazon-linux-extras install nginx1
// nginx 시작
sudo systemctl start nginx
// nginx.conf 같은 설정 파일을 변경해 주었을 때, 재시작
sudo systemctl restart nginx
// nginx 상태 확인
sudo systemctl status nginx
nginx.conf를 따로 변경하지 않았기 때문에 기본 80으로 접속하면 root의 index.html로 연결된다.
nginx를 시작하고 netstat -an | grep 80으로 80포트가 listen을 하고 있는지 확인한다.
EC2 인스턴스의 퍼블릭 IPv4 DNS로 접속하면 다음과 같은 화면을 볼 수 있다.
주소를 복사 붙여넣기 하거나 http로 접속해야 한다.
개방 주소법을 클릭하게 되면 https가 앞에 붙기 때문에 '연결을 거부했습니다' 가 나온다.
EC2 '/' 위치에서 /etc/nginx/nginx.conf를 다음과 같이 수정한다.
server {
listen 80;
server_name _;
location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:3000;
}
}
EC2에 Docker 이미지 올리기
[참고1] 사이트에 그림이 잘 되어 있어서 간략하게 따라 그려 보았다.
그림의 과정을 말로 설명하면 아래와 같다.
1. 프로젝트(nuxt.js)를 도커 이미지로 만들어서 도커 허브에 푸시한 다음,
2. EC2에서 도커허브에 있는 도커 이미지를 pull 한다.
3. 이미지를 실행시켜서 프로젝트를 실행한다.
도커 이미지로 만들기
(로컬 환경에 도커를 설치한 뒤 프로젝트를 도커 이미지로 만들어 두었기 때문에 해당 과정에 대한 정리는 생략)
이 사이트를 참고하여 도커를 공부하고, 프로젝트를 이미지로 만들었다😀 https://subicura.com/2017/01/19/docker-guide-for-beginners-1.html
도커 허브에 푸시하기
도커 허브에서 (https://hub.docker.com/) Create Repository를 한다.
해당 프로젝트에서 다음의 명령어로 레파지토리에 푸시한다.
docker push 아이디/레파지토리 이름:tagname
이때, 로컬에서 만든 도커 이미지명과 레파지토리 명이 같아야 푸시가 된다.
(아이디/레파지토리 이름:tagname 이 형식이 같아야 하나봐요 이렇게 안 하니 에러가 나더라구요. 저도 정확한 건 아니니 아시는 분께서 댓글 달아주시면 매우매우 감사할 것 같아요😀👍)
푸시하게 되면 아래처럼 Tags and Scans에 새로 태그가 추가된다.
EC2에 도커 설치하기
ssh로 EC2에 접속한 뒤 아래의 과정을 실행한다.
// 도커 설치
sudo yum install docker
// 도커 실행
sudo systemctl start docker
// 도커 이미지 pull
sudo docker pull (docker_ID)/(project_name)
// 도커 컨테이너 실행
sudo docker run --name (name) -d -p 3000:3000 (docker_ID)/(project_name)
이제 EC2 인스턴스의 퍼블릭 IPv4 DNS로 접속하면 다음과 같은 화면을 볼 수 있다 :)
Reference
[참고1]
'Server > DevOps' 카테고리의 다른 글
[AWS] Jenkins CI/CD 구축하기_(2) (0) | 2022.08.25 |
---|---|
[AWS] Jenkins CI/CD 구축하기_(1) (0) | 2022.08.25 |
[AWS] EC2 생성 및 접속 (0) | 2022.08.25 |
[AWS] EC2 리눅스 배포판 선택 (0) | 2022.08.25 |
DevOps 팀의 Phase1 기록 (0) | 2022.08.25 |