Forum » Operacijski sistemi » PM2 (Node.js Process Manager) in uporabniki
PM2 (Node.js Process Manager) in uporabniki
dunda ::
Na Ubuntu strežniku bo tekla Node.js aplikacija. Za njen zagon bo skrbel PM2, tukaj pa se pojavlja vprašanje.
PM2 svoje stvari (morda nekoliko nesrečno) shranjuje v ~/.pm2
Ker za sistemske stvari skrbi Janez, je se torej zadeva shrani v /home/janez/.pm2
Mimogrede, če Janez pri zagonu uporabi SUDO, se nič ne spremeni glede te lokacije, le sama aplikacija teče kot ROOT.
Sedaj pa nastopita Polde in Lojze, ki sta razvijalca in se jima pogosto pojavi potreba, da restartata aplikacijo v omenjenem PM2. Ampak - ker je zadevo pognal administrator Janez, Polde in Lojze ne vidita enakega seznama.
Ima kdo izkušnje, kako je to najbolje rešiti?
Morda narediti novega uporabnika za PM2, ki ga potem vsi uporabljajo za nadzor/zagon PM2 aplikacij?
Teoretično bi lahko zadevo poganjali (pač po prijavi) kot ROOT, vendar se poskušamo temu izogniti.
PM2 svoje stvari (morda nekoliko nesrečno) shranjuje v ~/.pm2
Ker za sistemske stvari skrbi Janez, je se torej zadeva shrani v /home/janez/.pm2
Mimogrede, če Janez pri zagonu uporabi SUDO, se nič ne spremeni glede te lokacije, le sama aplikacija teče kot ROOT.
Sedaj pa nastopita Polde in Lojze, ki sta razvijalca in se jima pogosto pojavi potreba, da restartata aplikacijo v omenjenem PM2. Ampak - ker je zadevo pognal administrator Janez, Polde in Lojze ne vidita enakega seznama.
Ima kdo izkušnje, kako je to najbolje rešiti?
Morda narediti novega uporabnika za PM2, ki ga potem vsi uporabljajo za nadzor/zagon PM2 aplikacij?
Teoretično bi lahko zadevo poganjali (pač po prijavi) kot ROOT, vendar se poskušamo temu izogniti.
https://www.kacnje.eu
cesnja ::
Priporocal bi (vsaj kvazi) CD pipeline, ki priblizno prepreci potrebo po rocnem upravljanju z aplikacijo na strezniku. Za poenostavitev samega deploya se na takem nivoju pogosto uporablja Docker.
dunda ::
Tnx.
Dockerja (v razvojni fazi) ni predvidenega, verjetno pa še pride na vrsto.
Tudi CD pipeline je za sedaj še vedno "overkill". Gre za zgodnjo fazo razvoja, ampak tisto zgoraj navedeno pa naj moti.
Dockerja (v razvojni fazi) ni predvidenega, verjetno pa še pride na vrsto.
Tudi CD pipeline je za sedaj še vedno "overkill". Gre za zgodnjo fazo razvoja, ampak tisto zgoraj navedeno pa naj moti.
https://www.kacnje.eu
c3p0 ::
App zaganjat kot root je big no-no, razvoj gor ali dol. Najlažje bo, če bodo vsi isti user. Docker pa tudi reši problem.
HotBurek ::
Ne vem, če čisto reši, je pa ena izmed opciji.
V folder /etc/systemd/system se kreira file (npr. nodejs.service), ki poganja JS kodo kot service. Tole je primerćić:
V /var/nodejs/hello.js sem pa imel tole (testiral Varnish cache):
Za dostop do Node.js serverja sem uporabil Nginx, ki je dostopen na public, in dela proxy requeste na lokalni Node.js server. Sample nginx config:
Pa še za iptables, če uporabljaš, je potrebno odpret port:
V folder /etc/systemd/system se kreira file (npr. nodejs.service), ki poganja JS kodo kot service. Tole je primerćić:
[Unit] Description=Node.js Hello World Http Server [Service] PIDFile=/tmp/nodejs-99.pid #User=<Your Username> #Group=<Your User Group> Restart=always KillSignal=SIGQUIT WorkingDirectory=/var/nodejs/ ExecStart=/usr/bin/node /var/nodejs/hello.js StandardOutput=syslog StandardError=syslog SyslogIdentifier=nodejs [Install] WantedBy=multi-user.target
V /var/nodejs/hello.js sem pa imel tole (testiral Varnish cache):
var http = require("http"); http.createServer(function (req, res) { res.writeHead(200, {"Content-Type": "text/html"}); var date = new Date(Date.now()); res.write("<!DOCTYPE html>"); res.write("<html lang=\"en\">"); res.write("<head>"); res.write("<meta charset=\"utf-8\">") res.write("</head>"); res.write("<body>"); res.write("Hello World from NodeJS..."); res.write("<br>"); res.write("time=" + String(date)); res.write("</body>"); res.write("</html>"); res.end(""); console.log("Request: " + String(date)); }).listen(8081, "127.0.0.1"); //console.log("Server running at http://127.0.0.1:8081/");
Za dostop do Node.js serverja sem uporabil Nginx, ki je dostopen na public, in dela proxy requeste na lokalni Node.js server. Sample nginx config:
location / { proxy_pass http://127.0.0.1:8081/; proxy_redirect off; proxy_http_version 1.1; proxy_buffering off; proxy_hide_header via; #set_real_ip_from 127.0.0.1; #real_ip_header X-Forwarded-For; #real_ip_recursive on; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #proxy_set_header X-Forwarded-Host $host; #proxy_set_header X-Forwarded-Proto $scheme; }
Pa še za iptables, če uporabljaš, je potrebno odpret port:
-A INPUT -i lo -p tcp -m tcp --dport 8081 -j ACCEPT
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
Zgodovina sprememb…
- spremenilo: HotBurek ()
dunda ::
Ja, tole je po svoje zanimivo, ker se človek reši PM2 (ki pa ima nekaj zanimivih funkcionalnosti).
Ja nič, v nekaj bo treba zagristi :-)
Ja nič, v nekaj bo treba zagristi :-)
https://www.kacnje.eu
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Apache in Node.JSOddelek: Izdelava spletišč | 1946 (1632) | dunda |
» | Dva http serverja (prot 80) na ist routerOddelek: Izdelava spletišč | 1423 (1002) | Stari89 |
» | 1 IP več StrežnikovOddelek: Pomoč in nasveti | 2408 (1859) | Mesar |
» | [js] json kompresijaOddelek: Programiranje | 3758 (3107) | infiniteLoop |
» | nginx proxy pokvari delovanje joomla straniOddelek: Izdelava spletišč | 994 (939) | Lonsarg |