verdaccio 를 ubuntu 서비스로 등록하기

이상문
4 min readApr 8, 2020

--

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를 서비스로써 사용할 수 있게 되었다.

--

--

이상문
이상문

Written by 이상문

software developer working mainly in field of streaming, using C++, javascript

No responses yet