Vanilla JS로 SPA 프론트 작업, express로 백엔드 작업을 진행했다. 서버에서 프론트 번들 파일을 사용해서 화면을 띄우기 때문에 express를 ncloud로 배포해야했다.
express 배포는 처음 해봐서,,, 아직도 잘 모르겠지만 2주 전에 배포 실패했다가 이제야 성공해서 까먹기 전에 기록을 남겨본다.
NCloud에 로그인하고 우선 콘솔로 이동한다.
먼저 서버를 생성하기 위해서 Services 중 Server 탭으로 이동한다.
Server - ACG 탭으로 이동한다. ACG 생성을 선택한다.
원하는 이름으로 ACG를 생성한다.
ACG 설정에서 다음과 같이 규칙을 설정해준다. ssh 접속을 위해서 20번 port를, 서버 접속을 위해서 3000 port를 허용해준다.
비대칭키 방식
대칭키 방식
Server에서 서버 생성을 진행한다.
필요한 옵션을 선택한다. 나는 가볍게 배포해보는 거였기 때문에 50GB, OS, Ubuntu, Standard를 선택했다.
서버 설정도 디폴트로 해주고 서버 이름만 원하는 이름으로 설정해준다. 서버를 실수로 반납하는 것을 막기 위해 반납 보호 설정을 하는 것이 권장된다고 한다.
다음으로 인증키를 생성해준다. 이름을 원하는대로 설정해주고 인증키 생성 및 저장을 선택해주면 ssh 접속을 위한 pem 파일이 저장된다. 절대 지우지 말기!
다음으로 보유중인 ACG 중 1에서 생성한 ACG를 선택한 후 서버 생성을 완료한다.
SSH 연결을 위해서는 관리자 비밀번호 확인이 필요하다. Server 탭에서 서버 관리 - 관리자 비밀번호 탭을 선택한다.
앞서 저장된 pem 파일을 업로드하고 비밀번호를 확인할 수 있다. 이 비밀번호 기억해두기!!
서버의 포트 포워딩 설정 탭으로 이동한다.
서버를 선택하고 외부 포트를 설정해준다. 접속할때 사용할 고유한 port를 설정해주고 적용한다.
터미널에서 ssh root@[포트포워딩의 서버 접속용 공인 IP] -p [포트포워딩 외부 포트]
로 해당 서버에 성공적으로 원격 접속할 수 있다!!!
비밀번호는 관리자 비밀번호 확인에서 pem 파일 업로드하고 얻은 비밀번호를 입력하면 된다.
Server - Public IP 탭에서 공인 IP 신청을 선택한다.
Zone을 서버의 Zone과 같이 설정하고 적용 서버를 내가 사용할 서버를 선택해준다.
그러면 공인 IP까지 생성 완료되고 서버 설정이 완료된다!
ssh 접속한 서버에서 서버 구동을 위한 몇 가지 작업이 필요하다.
운영체제에서 사용 가능한 패키지들과 그 버전에 대한 정보를 최신으로 업데이트
apt-get update
배포한 파일들을 가져오기 위해 Github에 있는 파일들을 가져와야 한다.
apt-get install git # git 설치
express 사용을 위해 node, npm 설치가 필요하다.
apt-get install curl # curl을 이용해서 node, npm 설치 필요
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
apt-get install -y nodejs
apt install npm
node 버전 업데이트를 위해 추가적인 설정이 필요하다.
sudo npm cache clean -f
sudo npm install -g n
sudo n lts
mysql을 사용해서 프로젝트를 진행했기 때문에 mysql도 설치해줘야 했다.
sudo apt install mysql-server
sudo mysql_secure_installation
필요한 DB와 테이블을 생성해서 사용 가능하다.
npm install pm2@latest -g
우선 clone을 위해 token 설정이 필요하다. ID/Password 방식으로는 로그인할 수 없다.
github의 settings 탭으로 이동한다.
하단으로 쭈욱 내리다보면 Developer settings가 있다.
Personal access token 탭에서 Generate new token을 선택한다.
원하는대로 note와 유효기간을 작성하고 repo
를 체크하면 token을 생성할 수 있다.
토큰을 생성하면 token을 복사할 수 있는데, 해당 토큰은 다시는 볼 수 없다고 하니 바로 복사해둔다.
그리고 clone을 진행하면 git user name과 password를 입력하라는 명령이 뜨고 내 git id, 앞서 복사한 token을 입력해주면 클론이 가능하다!
git config --global user.name [id]
git config --global user.password [token]
위 명령어로 로컬 컴퓨터 git에 name, password를 등록해주면 clone 시 name과 password를 물어보지 않는다.
clone한 프로젝트로 이동해서 npm install
을 진행해준다.
pm2 start app.js
위 명령어로 무중단으로 서비스를 이용할 수 있다.
"scripts": {
"deploy": "pm2 start app.js",
"stop": "pm2 kill",
},
보통 이렇게 script로 추가해서 npm run deploy
를 실행하는 것 같다.
이제 deploy
를 실행하면 공인 IP로 접속이 가능하다.
참고자료
https://kjwsx23.tistory.com/353
https://nemne.tistory.com/18
https://kimce.tistory.com/11
https://wotres.tistory.com/entry/Github-에러-해결법-Authentication-failed-for-use-a-personal-access-token-instead