nvm을 이용해서 nodejs를 설치하고 systemd 를 이용해서 서비스를 등록하려고 했지만 뜻대로 되지 않았다. 결국 이런저런 삽질을 해서 최적화된 설치 및 설정 순서를 기록해둔다.
nodejs 최신 버전 설치
연결된 문서를 참고해서 nodejs 12버전을 설치했다. 설치한 순서는 다음과 같다.
$ sudo apt update
$ sudo apt install build-essential apt-transport-https lsb-release ca-certificates curl
$ curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
$ sudo apt install nodejs
설치되는 위치는 /usr/bin 이다.
$ which node
/user/bin/node
verdaccio 설치
다음 문서를 참조하여 verdaccio를 설치한다.
$ sudo npm install -g verdaccio
verdaccio 의 설치된 위치도 /usr/bin 이다.
$ which verdaccio
/usr/bin/verdaccio
verdaccio 를 실행시키면 별 이상없이 잘 동작한다.
$ verdaccio
warn --- config file - /home/moony/.config/verdaccio/config.yaml
warn --- Verdaccio started
warn --- Plugin successfully loaded: verdaccio-htpasswd
warn --- Plugin successfully loaded: verdaccio-audit
warn --- http address - http://0.0.0.0:4873/ - verdaccio/4.5.1
실행했을 때 config 파일을 어떤 것을 사용하고 있는지 알 수 있다. 그리고 외부 IP에서 접근할 수 있도록 config 파일 내에 listening 설정을 수정했다.
verdaccio 설정과 서비스로 등록하기
설정 방법과 서비스로 등록할 때의 작업은 다음 문서를 참고했다.
문제는 systemd의 service로 등록시킬 때이다.
$ sudo cp /usr/lib/node_modules/verdaccio/systemd/verdaccio.service /lib/systemd/system/ && sudo systemctl daemon-reload
에러가 발생한다. 우선 첫번째 문제는 verdaccio.service 에서 config 파일의 위치를 /etc/verdaccio/config.yaml 으로 설정해놓고 있는 문제였다.
verdaccio 을 단독 실행했을 때 확인했던 config 파일의 위치를 이용해서 /etc/verdaccio 디렉토리를 만들고, 여기에 복사했다.
$ sudo mkdir -p /etc/verdaccio
$ sudo cp /home/moony/.config/verdaccio/config.yaml /etc/verdaccio/config.yaml
다시 systemctl 로 실행했으나 실패했다. 이번에는 /etc/verdaccio/config.yaml 의 설정 중, storage를 수정해줘야 한다.
...
# path to a directory with all packages
storage: /var/lib/verdaccio
...
systemctl을 이용해서 시작하자, active 상태가 되었다. 이제 시스템이 구동된 뒤에 자동으로 verdaccio를 서비스로써 사용할 수 있게 되었다.