fix: Make systemd unit more production-like (#929)

* fix: Make systemd unit more production-like

* docs: updated server.md

* fix: Restart=on-failure instead of always in systemd unit
This commit is contained in:
Andrey Tikhonov 2018-08-23 00:12:26 +03:00 committed by Juan Picado @jotadeveloper
parent de7812558e
commit ffc941016b
2 changed files with 26 additions and 18 deletions

View File

@ -9,40 +9,44 @@ This is mostly basic linux server configuration stuff but I felt it important to
First create the verdaccio user:
```bash
$ sudo adduser --disabled-login --gecos 'Verdaccio NPM mirror' verdaccio
$ sudo adduser --system --gecos 'Verdaccio NPM mirror' --group --home /var/lib/verdaccio verdaccio
```
Or, in case you do not have `adduser`:
```bash
$ sudo useradd --system --comment 'Verdaccio NPM mirror' --create-home --home-dir /var/lib/verdaccio --shell /sbin/nologin verdaccio
```
You create a shell as the verdaccio user using the following command:
```bash
$ sudo su verdaccio
$ cd ~
$ sudo su -s /bin/bash verdaccio
$ cd
```
The 'cd ~' command send you to the home directory of the verdaccio user. Make sure you run verdaccio at least once to generate the config file. Edit it according to your needs.
The `cd` command sends you to the home directory of the verdaccio user. Make sure you run verdaccio at least once to generate the config file. Edit it according to your needs.
## Listening on all addresses
If you want to listen to every external address set the listen directive in the config to:
```yaml
# you can specify listen address (or simply a port)
listen: 0.0.0.0:4873
```
If you are running `verdaccio` in a Amazon EC2 Instance, [you will need set the listen in change your config file](https://github.com/verdaccio/verdaccio/issues/314#issuecomment-327852203) as is described above.
> Apache configure? Please check out the [Reverse Proxy Setup](reverse-proxy.md)
If you are running verdaccio in a Amazon EC2 Instance, [you will need set the listen in change your config file](https://github.com/verdaccio/verdaccio/issues/314#issuecomment-327852203) as is described above.
> Configure Apache or nginx? Please check out the [Reverse Proxy Setup](reverse-proxy.md)
## Keeping verdaccio running forever
We can use the node package called 'forever' to keep verdaccio running all the time.
https://github.com/nodejitsu/forever
First install forever globally:
You can use node package called ['forever'](https://github.com/nodejitsu/forever) to keep verdaccio running all the time.
First install `forever` globally:
```bash
$ sudo npm install -g forever
```
Make sure you've started verdaccio at least once to generate the config file and write down the created admin user. You can then use the following command to start verdaccio:
Make sure you've run verdaccio at least once to generate the config file and write down the created admin user. You can then use the following command to start verdaccio:
```bash
$ forever start `which verdaccio`
@ -51,7 +55,7 @@ $ forever start `which verdaccio`
You can check the documentation for more information on how to use forever.
## Surviving server restarts
We can use crontab and forever together to restart verdaccio after a server reboot.
You can use `crontab` and `forever` together to start verdaccio after a server reboot.
When you're logged in as the verdaccio user do the following:
```bash
@ -72,4 +76,9 @@ $ which forever
$ which verdaccio
```
## Using systemd
Instead of `forever` you can use `systemd` for starting verdaccio and keeping it running. Verdaccio installation has systemd unit, you only need to copy it:
```bash
$ sudo cp /usr/lib/node_modules/verdaccio/systemd/verdaccio.service /lib/systemd/system/ && sudo systemctl daemon-reload
```
This unit assumes you have configuration in `/etc/verdaccio/config.yaml` and store data in `/var/lib/verdaccio`, so either move your files to those locations or edit the unit.

View File

@ -1,12 +1,11 @@
[Unit]
Description=verdaccio Service
Description=Verdaccio lightweight npm proxy registry
[Service]
Type=simple
Restart=on-failure
User=verdaccio
WorkingDirectory=/home/verdaccio
ExecStart=/usr/bin/env verdaccio
ExecStop=/usr/bin/bash -c "kill $(ps -ef | grep ^verdacc+ | awk {'print $2'})"
ExecStart=/usr/bin/verdaccio --config /etc/verdaccio/config.yaml
[Install]
WantedBy=multi-user.target