Nginx를 이용한 AWS 배포

728x90

오늘 내가 배운 것

1. Nginx

2. Nginx-AWS 배포

 

 

1. Nginx

기존에 작업을 할 때는, 레포지토리에 올린 코드를 배포할 서버에서 clone을 해서 배포하는 방식을 사용했었다.
하지만 위에 방법과 다르게 `Nginx`는 레포지토리에 있는 모든 코드가 아닌 번들링 된 번들파일(정적파일)을 배포할 서버에 올려서 처리할 수 있는 프로그램이다.
또, Nginx는 정적파일을 처리하는 웹 서버의 역할뿐 아니라 로드밸런서, 리버스 프록시, 캐시 서버 등 다양한 역할을 수행할 수 있다.

 

 

1-1. Nginx 설치하기

$ sudo apt-get update
$ sudo apt-get install nginx -y

 

 

1-2. Nginx 실행하기

$ sudo systemctl start nginx

 

1-3. Nginx 실행 상태 확인하기

$ sudo systemctl status nginx

 

1-4. Nginx 설정 파일 열기

$ sudo vi /etc/nginx/sites-available/default
# 설정 파일 설명
server {
        # listen : Nginx가 허용하는 포트
        listen 80 default_server;
        listen [::]:80 default_server;

        # root : 해당 경로에 있는 파일들을 보여준다.
        root /home/ubuntu/www;

        # 해당 경로에서 기본으로 사용할 인덱스 파일, index.html을 기본 인덱스 파일로 지정
        index index.html;

        # 서버의 이름을 지정한다. `_`는 모든 도메인에 대한 요청을 처리한다.
        server_name _;

        # 특정한 요청경로에 대한 처리를 설정한다. 요청 경로가 없으면 `index.html`파일을 응답한다.
        location / {
                try_files $uri $uri/ index.html;
        }

}

 

 

1-5. Nginx 설정 파일 구문 테스트

$ sudo nginx -t

설정파일을 변경한 후에 문법을 제대로 적었는지 확인하기 위해서 사용한다.

 

 

1-6. Nginx 재실행하기

$ sudo systemctl restart nginx

 

1-7. Nginx 종료하기

$ sudo systemctl stop nginx

 

 

2. Nginx-AWS 배포

1. 리액트 파일 빌드하기
2. 번들파일 AWS 인스턴스로 내보내기
3. Nginx 설정파일 변경하기
4. Nginx 재실행하기

 

2-1. 리액트 파일 빌드하기

리액트 프로젝트를 CRA를 이용해서 작업한 경우 `npm run build`를 통해 번들링을 한다.
CRA를 하지 않은 프로젝트에서는 각 프로젝트의 웹팩을 이용하여 파일을 번들링을 하면 된다.

 

 

2-2. 생성된 번들 파일  AWS 인스턴스로 내보내기

인스턴스에 연결된 상태가 아닌 로컬 상태의 shell에서

scp -i [키페어값] -r [로컬 경로(번들링 된 파일들이 있는 디렉토리)] 계정@호스트:[Nginx의 루트 경로]

 

scp : `Secure Copy Protocol`을 사용하여 파일을 복사하는 유틸리티이다.
키페어 값 : .pem파일 이름만 적는 것이 아닌 .pem 파일이 있는 경로까지 지정한다.

 

 

2-3. Nginx  설정 파일 변경하기

설정파일의 root를 `Nginx의 루트 경로`의 생성한 디렉토리 경로+이름으로 바꾼다.


예를 들어, /home/ubuntu/www에 build 디렉토리를 복사한다면
설정파일의 root가 /home/ubuntu/www/build 로 지정한다.

 

 

2-4. Nginx 재실행하기

$ sudo systemctl restart nginx

 

 

 


 
반응형