오늘 내가 배운 것
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
'AWS' 카테고리의 다른 글
AWS-CLI를 이용한 EC2 인스턴스 만들기 (0) | 2023.03.21 |
---|---|
AWS EC2를 이용한 서비스 배포 - 기초 2편 (0) | 2023.01.30 |
AWS EC2를 이용한 서비스 배포 - 기초 1편 (0) | 2023.01.27 |