우분투 서버 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 이름)
권한이 너무 많으면 다음과 같은 에러가 난다.
Permissions 0664 for '/home/1/.ssh/id_ed25519' are too open. It is required that your private key files are NOT accessible by others. This private key will be ignored.
이때는 chmod 를 써서 권한을 600으로 축소하면 된다. chmod 600 /home/1/.ssh/id_ed25519
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 배포 되시길~~!


