[배포][DJplaylist] VPS구입&환경구축, Nginx

가격면에서 저렴해서 vultr라는 사이트에서 VPS를 구입하였음.
OS: Ubuntu 18.04 x64

CPU: 1 vCore
RAM: 1024 MB
Storage: 25 GB SSD

환경 구축

curl 설치

  • 커맨드라인(cmd)을 통해서 간단하게 웹 브라우저처럼 데이터를 전송할 수 있는 툴
  • $ sudo apt-get install curl

nvm 설치

해당 날짜에는 v0.39.0이 최신버전

  • $ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
    (설치 확인 nvm --version)

node 설치

  • $ nvm install --lts 해당 명령어를ㄹ 통해 node의 안정적인 최신 LTS버전 설치
    (nvm ls 또는 node --version 통해 설치 확인)

git clone & build

노드의 기본 메모리 사이즈는 512MB이여서 아래와 같은 오류가 날 수 있다.
FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory

오류 발생 시 메모리 할당 추가

  • $ export NODE_OPTIONS="--max-old-space-size=8192" 해당 명령어를 통해 8GB로 늘려주었다.

Nginx 설치

  • $ sudo apt install nginx

설치 후 /etc/nginx에 생성된 기본 폴더 및 파일

  • sites-available : 웹 서버로써 가장 앞단에서 요청에 대한 어떤 앱서버로 보낼지등에 대한 설정파일이 저장되어있는 공간 ( 사용예정인 공간 )
  • sites-enabled : 실제로 설정파일이 적용될 수 있게끔 하기 위해서는 해당 공간에 symbolic link를 이용하여 연결해야 한다. ( sites-available 중에서 사용하고 싶은 사이트만 연결 )

nginx 시작
sudo service nginx start
nginx 중지
sudo service nginx stop
nginx 재시작
sudo service nginx restart

nginx 구동 확인
ps-ef|grep nginx

/etc/nginx 경로에 기본 화면으로 연결되는 Nginx 설정파일들이 이미 생성되어있는데 앞으로 만들 설정과 겹칠 수 있어 아래 경로의 default 파일을 삭제해줘야 한다.

  • $ sudo rm /etc/nginx/sites-available/default
  • $ sudo rm /etc/nginx/sites-enabled/default

앞에서 build한 파일을 배포할 설정 파일 생성

  • $ sudo touch /etc/nginx/sites-available/myapp.conf

세부 설정

server {
  listen 80;
  location / {
    root   /home/REACT_DJ-playlist/build;
    index  index.html index.htm;
    try_files $uri /index.html;
  }
}

80 port로 들어오는 요청에 대해서 처리.
location / {...} 은 해당 80 port와 / url로 요청을 어떻게 처리할 것인지에 대해서 적는다

sites-available에서 생성한 설정 파일의 symbolic link

  • $ sudo ln -s /etc/nginx/sites-available/myapp.conf /etc/nginx/sites-enabled/myapp.conf

.env 파일 key는 git clone시 없었기 때문에 키 관련 .env 파일 생성해줌으로써 api key 오류 해결.

https://okky.kr/article/558451 댓글에 아이피주소로 하면 안되었던 걸 도메인 설정을 하면서 해결이 되었다고 하는데 내일 도메인까지 설정해보면서 다시 확인해봐야겠다.

로컬에서 실행했을 때와 다르게 동영상을 재생 할 수 없음 오류가 존재했는데 현재는 도메인을 사용하면서 해결이 되었다.

좋은 웹페이지 즐겨찾기