검색
검색
공개 노트 검색
회원가입로그인

우분투 서버 node 배포하기 (linux)

우분투 준비

  • 서버 업데이트

sudo apt update

  • 새로운 계정을 생성하고 sudo 그룹에 추가

sudo adduser newuser

sudo adduser newuser sudo

  • 새로운 계정 ssh 에 추가하기

새로운 계정으로 ssh 접속을 할 수 있도록 만들어 준다.

sudo mkdir /home/newuser/.ssh

  • 기존의 ubuntu 계정으로 접속이 가능했다면 사용하던 키를 복사해 준다.

sudo cp /home/ubuntu/.ssh/authorized_keys /home/newuser/.ssh   (ubuntu)

  • 권한 부여하기

sudo chown -R newuser:newuser /home/newuser/.ssh

  • 만약 기존 키가 없어서 처음부터 세팅을 해줘야 한다면?

원리를 이해하면 된다. .ssh 폴더에 퍼블릭키가 있으면 해당 키를 내가 쓰는 ssh 에서 프라이빗키와 연결해서 접속하는 방식이다.

.ssh 에 키를 만들고 개인키를 활용하여 접속하면 된다.

  • 서비스 재시작

sudo systemctl restart ssh

이후 ssh로 접속이 되는지 꼭 확인해 보자.

  • 추가적인 조치

  • ubuntu 기본 계정 지워주기

sudo deluser ubuntu

  • 루트 로그인 막기

sudo nano /etc/ssh/sshd_config 에서 root login을 no로 하고 ssh restart

보안을 위해 루트를 막아놓는게 좋다.

node 설치 (nvm 활용)

  • nvm 설치하기

https://github.com/nvm-sh/nvm 에서 curl 에서 사용할 nvm 의 최신 버전을 알아낸다.

현재는 0.39.1 이 최신이다.

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
  • 설정 파일 리로드

source ~/.bashrc

  • nvm 설치 확인

nvm —version

  • node 최신 버전 설치

nvm install node

node -v

  • npm or yarn 설치

sudo apt install npm / yarn

  • git 설치

sudo apt install git

github 연결

  • 깃허브 연결용 키 생성

ssh-keygen -t ed25519 -C “my-email@mail.com”

  • 깃허브에 퍼블릭키 연결

github 계정의 리포지터리의 settings 에 가서 Deploy keys 에서 서버의 public 키를 등록해 준다. 아까 생성한 키를 보려면 다음과 같은 방식으로 보면 된다.

cat /home/newuser/.ssh/id_ed25510.pub

이 때 파일명은 ed25510 에서 바꾸지 않는게 좋다. 깃허브에 연결할 때 ssh를 못찾는 에러를 방지 할 수 있기 때문이다.

  • ssh key를 ssh-agent에 연결하기

# start the ssh-agent in the background
$ eval "$(ssh-agent -s)"
> Agent pid 59566
  • ssh private key를 ssh agent에 연결하기

ssh-add ~/.ssh/id_ed25519 (private key 이름)

  • git clone [내 저장소 이름].git 으로 소스 코드를 받아온다.

  • npm install 로 의존 패키지를 설치한다.

  • 서버는 mysql 이나 mongodb 등 자신이 쓰는 데이터베이스를 설치한다. (여기서는 생략)

서버 구동 (pm2 활용)

npm install pm2 -g

sudo apt install nginx

sudo systemctl start nginx

  • nginx 설정하기

보통 /etc/nginx/sites-available/default 라는 설정 파일을 수정한다.

server {
        listen 80;
        listen [::]:80;

        server_name my_domain_name;

        location / {
                proxy_pass http://localhost:3000/;
        }
}

proxy_pass 부분에서 node 서버 (프론트 또는 백엔드)가 돌아가고 있는 부분으로 넘기도록 설정. nginx에서 80 포트로 받아서 node 로 넘겨줌.

service nginx reload

pm2 start npm --name "front" -- start

그럼 즐거운 node 배포 되시길~~!

공유하기
url 복사하기
카카오로 공유하기
트위터로 공유하기
페이스북 공유하기