본문 바로가기
카테고리 없음

[ubuntu, node.js] 배포 하기(feat. 무중단 배포)

by hbIncoding 2024. 9. 5.

0. MySQL 연결하기

DB_HOST=192.168.55.157
DB_PORT=3306
DB_USER=user
DB_PASSWORD=1111
DB_NAME=sys
  • 위와 같이 .env 파일로 환경변수를 관리해주고 있었다. 
  • 지금은 로컬피시(localhost)에서 ubuntu(192.168.55.157)의 mysql로 연결해주기 때문에 위와 같이 환경변수를 설정해주고 있다.
  • 그렇다면 ubuntu에서 ubuntu mysql로 접속할 때는 DB_HOST를 localhost로 바꿔주어야할까?
    • 그럴 필요는 없다. 바꾸지 않아도 잘 작동한다.

1) virtual box의 네트워크 세팅

 

  • 어댑터에 브리지로 네트워크 설정을 바꿔준다.
  • 그리고 ubuntu 터미널 내에서 ip addr 명령어를 통해 우분투 ip 주소를 확인할 수 있다.

 

1. ubuntu 세팅하기

1) 아래 명령어를 통해 ssh 서비스가 잘 동작하는지 확인한다.

$ service --status-all

 

  • 이미 설치되어 잘 동작한다면 위 그림과 같이 서비스 목록에 + 값으로 표시된다.
  • 없다면 다음 단계를 통해 설치하면 된다.

2) openssh 설치

sudo apt update
sudo apt install openssh-server

 

  • 위 코드를 통해 설치하고 아래 코드들을 통해 ssh실행 여부를 확인하고, 활성화가 안되있다면 활성화 할 수 있다.
# ssh 실행 여부 확인
$ sudo systemctl status ssh

# ssh 서비스 활성화 및 시작
$ sudo systemctl enable ssh
$ sudo systemctl start ssh

 

3)ubuntu 접속 하기

# ssh -p 포트번호 계정명@서버IP주소

# 포트는 22번,계정명은 tuna, 서버 주소는 192.168.55.157
$ ssh -p 22 user@192.168.55.157

혹은 그냥 포트 번호 없이 접속해도 된다.

$ ssh user@192.168.55.157

 

  • 위 명령어를 입력한 후 비밀번호를 입력하면 접속이 완료된다.

2. nodejs 세팅하기

1) ssh로 접속한 이후 아래 명령어들을 따라 수행한다.

//git 설치 확인 및 설치
git --version

sudo apt update
sudo apt install git


//node.js와 npm 설치 확인
node -v
npm -v

sudo apt update
sudo apt install nodejs npm

 

2) github 레포지토리를 클론한다.

  • 특정 레포지토리의 특정 브랜치를 아래 명령어와 같이 클론해준다.
  • 이때 프로젝트 디렉토리도 설정해주면 좋다.
// 프로젝트 디렉토리 설정과 이동
mkdir ~/my-project
cd ~/my-project

// 레포지토리와 특정 브랜치 클론 하기
git clone -b J205 https://github.com/HBLEEEEE/web-p1-taskify.git

 

  • 이때 github username과 password를 입력하라는 문구가 나오는데 
  • username은 사용하는 깃헙 유저 네임을 입력하면 되지만
  • password는 말 그대로 password를 입력하면 안된다.
    • 진짜 패스워드를 입력하면 아래 문구가 출력되면서 클론되지 않는다.
    • remote: Support for password authentication was removed on August 13, 2021.
  • password말고 github에서 토큰을 발급받아서 그 토큰을 입력해주어야 한다.
  • 토큰 발급은 맨 아래 참고를 참조하면 된다.

3) 해당 경로에서 모듈을 설치한다.

npm install

 

4) 필요하다면 환경 변수도 설정해 준다.

touch .env	// .env 파일 생성
nano .env	// .env 파일 수정

 

5) npm start로 서버를 실행해 준다.

 

6) 버전 차이로 발생한 문제

const connection = await mysql.createConnection({
                   ^^^^^

SyntaxError: Unexpected reserved word
  • 위와 같이 npm start로 실행했을 때 await를 못읽는 문제가 발생했다.
  • 이것은 버전 차이로 발생한 문제로 ubuntu에 깔려있는 node 버전을 최신화 해줘야한다.
// nodejs와 npm을 최신버전으로 설치

sudo apt-get update
sudo apt-get install -y nodejs npm
sudo npm install -g n
sudo n stable

 

3. 무중단 배포 실행하기

1) pm2를 전역으로 설치하기

npm install -g pm2

 

2) 디렉토리에서 다음 명령어를 사용하여 서버를 실행한다.

pm2 start npm --name "my-server" -- start
  • "my-server"는 프로세스를 구분하기 위한 이름으로 편하게 바꿔도 된다.

3) pm2로 서버 관리하는 명령어

  • pm2 status : 실행 중인 프로세스와 상태를 확인한다.

  • pm2 logs my-server : 실행 중인 서버의 로그 확인

  • pm2 stop my-server : 서버를 종료
  • pm2 restart my-server : 서버를 재시작
  • pm2 startup : 서버가 시스템 재부팅 후 자동으로 시작되도록 설정 

 

5. 참고

1) ubuntu ssh로 접속하기 : https://www.bearpooh.com/95

 

우분투 또는 우분투 서버에 ssh로 원격 연결 사용하기

일반적으로 원격으로 서버나 PC에 접속해서 작업을 진행하기 위해서는 ssh를 주로 사용한다. 그러나 우분투 운영체제에는 기본적으로 설치되어 있지 않아 직접 설치해야 한다. ssh 서비스 동작 여

www.bearpooh.com

 

2) 깃허브 토큰 발급 : https://seung.tistory.com/entry/Git-pull-%EB%98%90%EB%8A%94-clone%EC%8B%9C-Username-for-Password-for-%EB%AC%BB%EB%8A%94-%EA%B2%BD%EC%9A%B0

 

Git pull 또는 clone시 Username for, Password for 묻는 경우

초기 세팅 시 위와 같이 git pull이나 clone 할 시 에러가 발생하는 경우가 있을 것입니다. 입력 시 아래와 같은 문구가 나올 것입니다. remote: Support for password authentication was removed on August 13, 2021. 즉

seung.tistory.com

 

3) 버추얼박스 myslq 접속하기 : https://mentha2.tistory.com/188

 

[Virtualbox] 버추얼박스에 설치한 MySQL 접속하기

Virtualbox(이하 버추얼박스)에 MySQL을 설치하고 접속하는 방법입니다. 2개 스텝으로 나눠집니다. 1. 버추얼박스 네트워크 설정 (브리지 모드) 2. IP 확인 후 접속 (ifconfig로 확인) 1. 버추얼박스 브리지

mentha2.tistory.com