pm2 erabili izan det azkenaldian node.js aplikazioak zerbitzu eran sistema abiaraztean exekutatzeko, baina atzo arazoa eman zidan eta pentsatu gabe aspalditik zain neukan systemdren bidea frogatu nuen. lxc eta lxd frogatzen ari naiz Ubuntu 15.04 batean, upstart baztertu eta systemd ezarri dute :)

Oso erraza da, azpiko hau gorde /etc/systemd/system/node-zerbitzutxoa.service bezala:

[Service]
WorkingDirectory=/aplikazioa/dagoen/karpeta
ExecStart=/usr/bin/node app.js
Restart=always
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=node-zerbitzutxoa
User=node-erabiltzailea
Group=node-erabiltzailea
Environment=NODE_ENV=production

[Install]
WantedBy=multi-user.target

Kontuan hartzeko:

  • WorkingDirectory: aplikazioa dagoen karpeta
  • ExecStart: node exekutagarria + app-aren sarrera
  • SyslogIdentifier: syslog-ean identifikatzeko izena
  • User eta Group: aplikazioa exekutatuko duen erabiltzaile eta taldea, adi _WorkingDirectory_ko baimeneri
  • Environment: ingurumen aldagaiak ezarri daitezke

Behin dena prest dagoela erabiltzeko momentua da:

  • systemctl start node-zerbitzutxoa: aplikazioa martxan jarri
  • systemctl stop node-zerbitzutxoa: aplikazioa gelditu
  • journalctl -u node-zerbitzutxoa: log-ak ikusi
  • systemctl status node-zerbitzutxoa: egoera
  • systemctl enable node-zerbitzutxoa: zerbitzu bezala ezarri, honela zerbitzaria abiaraztean martxan jarrriko da aplikazioa
  • systemctl disable node-zerbitzutxoa: aurrekoa desegin

Voilà! Ahaztu baino lehen, systemd arduratuko da aplikazioa martxan jartzen eteten bada (Restart=always).

Honaino lehen atala, oraingoz oso xinple dago dena baina joango gera gauza “konplexuagoak” ikusten.