Node.js와 React.js 배포하기
[ubuntu에서 BE, FE 같이 배포하기]
ubuntu 환경에서 Nginx, pm2로 서비스를 배포했습니다. 서버와 클라이언트를 따로 사용하는 경우 pm2로 서버를 실행하고, Nginx로 클라이언트를 실행시키는 방식입니다.
1. git 설치
sudo apt-get install git
2. nvm 설치
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
3. nvm 활성화
. ~/.nvm/nvm.sh
4. node 설치
nvm install node
5. 설치 확인
node -e "console.log('Running Node.js ' + process.version)"
6. git clone
git clone [repository 주소] -b [브랜치명] --single-branch
7. Nginx 설치
sudo apt-get install nginx
8. Nginx 설정
- Nginx로 React를 배포하는 방법를 참고했습니다.
-
권한 때문에
sudo -i
명령어로 root로 로그인 후 진행 -
설정파일 백업
cp -r /etc/nginx/sites-available/ /etc/nginx/sites-available-origin cp -r /etc/nginx/sites-enabled/ /etc/nginx/sites-enabled-origin
-
기존 파일 삭제
rm /etc/nginx/sites-available/default rm /etc/nginx/sites-enabled/default
-
myapp.conf 생성
cd /etc/nginx/sites-available/ touch /etc/nginx/sites-available/myapp.conf
-
설정하기
server { listen 80; location / { root /home/group37/IssueTracker-37/client/build; index index.html index.htm; try_files $uri $uri/ /index.html; } }
listen 80
은 포트 80에 대한 설정을 의미합니다.location /
는 URL이 ‘/’가 포함된 경로에 대한 설정을 의미합니다.root
는 실행할 파일들의 루트 위치를 의미합니다. 위에서 빌드한 파일 경로를 입력하면 됩니다.index
는 인덱스의 파일들을 지정하는 곳이고, 이 파일들 중 꼭 하나는 root 경로 안에 존재해야 합니다.try_files
는 어떤 파일을 찾을 때 명시된 순서로 찾으며, 가장 먼저 발견되는 파일을 사용한다는 의미입니다.
-
/etc/nginx/sites-available/
에 설정 파일을 만들었으면, 아래 명령어로 이 파일의 심볼릭 링크를/etc/nginx/sites-enabled/
에도 만들어주세요. 이름처럼 웹서버가 동작될 때sites-enabled
에 있는 설정파일을 참조합니다.ln -s /etc/nginx/sites-available/myapp.conf /etc/nginx/sites-enabled/myapp.conf
-
nginx 실행
systemctl stop nginx systemctl start nginx
9. PM2 로 서버 실행
설치
npm install pm2 -g
실행
- git clone한 디렉토리로 이동하여 실행
pm2 start ./dist/src/app.js
// 실행 리스트
pm2 list
// 정지
pm2 stop [process name]
Comments