How to configure Systemd service unit to start Node app with "npm start" instead of "app.js"
9,057
I'm running a similar setup on Debian, and my service looks like this:
...
[Service]
Environment=NODE_PORT=3000
Type=simple
User=www-data
Restart=on-failure
WorkingDirectory=/var/www/<your-code-directory>
ExecStart=npm start
...
Hope this helps!
Author by
myNewAccount
Updated on September 18, 2022Comments
-
myNewAccount over 1 year
Environment: CentOS 8, Node.js, Digital Ocean Droplet
My Systemd setup starts a node app with the following command. It works as expected.
$ sudo systemctl start myapp
File 1:
/etc/systemd/system/myapp.service
[Unit] Description = My App After = network.target [Service] ExecStart = /root/start-myapp.sh Restart=on-failure [Install] WantedBy = multi-user.target
File 2:
/root/start-myapp.sh
#!/bin/sh /usr/bin/node /srv/myapp/app.js
However when I'm not using Systemd I normally start my app with Node Package Manager using the command,
npm start
. I'd rather have the Systemd unit also start the app withnpm start
.Unfortunately it threw an error when I changed
app.js
tonpm start
in/root/start-myapp.sh
,/usr/bin/node /srv/myapp/npm start
I made another attempt by switching the path from
node
tonpm
but it produced the same error./usr/bin/npm /srv/myapp/npm start
Question: How do I get my Systemd unit file to start my app with the command
npm start
?