앞 포스팅들의 내용을 잘 따라왔다면 웬만한 설정은 다 끝났다고 보면된다.
이제 본격적으로 배포를 하기 나의 프로젝트를 불러와야한다.
인스턴스에는 Git이 기본적으로 깔려있다.
`git --version` // git이 잘 깔려있는지 확인
이제 github에 올려놓은 나의 프로젝트를 가져올 것인데, 가져올 디렉토리는 인스턴스의 /home/ubuntu
디렉터리가 되겠다.
해당 디렉토리로 이동을 한다.
cd /home/ubuntu
배포할 프로젝트를 클론한다.
git clone <원격레포지토리 주소>
클론이 완료되었으면 npm으로 의존성 모듈들을 설치해주어야한다.
yarn을 사용할 경우? => yarn 설치방법
npm install
or
yarn install
마지막으로 깃허브에 올릴 때 git gnore 되었던 내용들을 추가해줘야한다. .env
파일 등 추가
환경 변수 설정까지 마쳤다면, 리액트가 배포될 수 있도록 빌드작업을 해준다.
이때 빌드를 해서 생성된 build디렉토리를 NginX가 정정파일로서 사용자에게 제공할 수 있도록 특정 위치로 옮겨주어야한다. 아래의 경로로 디렉토리를 복사하면 된다.
나는 새로운 디렉토리를 만들고 빌드 디렉토리의 내용들만 옮겨주었다.
mkdir /var/www/폴더이름
cp -r build/* /var/www/폴더이름/
여기 까지 완료했다면, node 명령어룰 통해 프로젝트를 실행할 수 있는데, 문제점이 한가지 있다.
바로, SSH를 로그아웃하면 배포도 종료된다는 점.
이럴 때 배포를 유지시켜주는 툴로 pm2
,forever
가 유명한데 이중에서 PM2를 사용해보겠다.
npm이나 yarn을 통해 global로 설치를 해주어야한다.
npm i -g pm2
or
yarn global add pm2
pm2 -v
pm2 start app.js - 지정한 파일 (예: app.js)을 백그라운드에서 실행합니다.
pm2 kill 0 - 실행 중인 프로세스들을 완전히 종료한다.
pm2 stop app - 실행 중인 프로세스 (예: app)를 중지합니다.
pm2 restart app - 실행 중인 프로세스를 재시작합니다.
pm2 list - 현재 실행 중인 모든 프로세스 목록을 표시합니다.
pm2 logs - 로그 파일을 실시간으로 모니터링합니다.
pm2 monit - CPU, 메모리 등의 리소스 사용 상태를 실시간으로 모니터링합니다.
pm2 delete app - 실행 중인 프로세스 (예: app)를 제거합니다.
pm2 startup - 서버 부팅 시 pm2를 자동으로 시작하도록 설정합니다.
pm2 save - 현재 실
노드 버전에 다른 경우 배포에 오류가 발생할 수 있다.
이때는 인스턴스의 노드버전을 내 프로젝트의 노드 버전에 맞게 변경해주어야한다.
관련한 내용은 이 곳을 참고하면 좋다.
참고
우리밋 EC2에 서버 배포3