Debian fórum

Dotazy => Všeobecná podpora => Téma založeno: Elipso 02. 05. 2015, 16:54:59

Název: Nginx a Node.js na portu 80
Přispěvatel: Elipso 02. 05. 2015, 16:54:59
Zdravim vas

Mam mensie VPS s NGINX a tam ma zlozky www1,www2,www3 pre kazdy web a domenu. Vsetko na porte 80.

Problem nastava ked spustim nodejs kedze aj on potrebuje port 80. Da sa to nejak presmerovat aby node bezal na porte 4000 ale ked niekto zada www.domena.sk tak to bude stale 80?


Název: Re:Nginx + nodejs
Přispěvatel: Petr Krčmář 02. 05. 2015, 20:10:22
Ano, tebou navržené řešení je správné. Dělá se to tak, že spustíš Node.js na nějakém jiném portu. Přibližně takhle:

Kód: [Vybrat]
http.createServer(
...
).listen(8000, "127.0.0.1");

Potom nadefinuješ v Nginx nový web, který se bude vyřizovat na tom lokálním portu. Nginx pak funguje jako reverzní proxy. Konfigurace bude asi taková (zkráceno na to zásadní):

Kód: [Vybrat]
upstream web5 {
    server 127.0.0.1:8000;
}

server {
  listen   80;
  listen   [::]:80;
  server_name domena.cz www.domena.cz;

  location / {
      proxy_pass http://web5/;
    }
 }
Název: Re:Nginx a Node.js na portu 80
Přispěvatel: Elipso 05. 05. 2015, 21:27:30
Dakujem pomohlo  :)

Este mam jednu otazku ako na autostart aplikacie (npr po vypadku).

Mam 1 >  .sh v /home/aplikacia/nieco.sh
          2 >  nodejs blahblah.js

na to aby to pezalo na pozadi som pouzil SCREEN
Název: Re:Nginx a Node.js na portu 80
Přispěvatel: Petr Krčmář 06. 05. 2015, 10:02:08
Nejsem odborník na Node.js, ale co jsem pochopil, tak se k tomu obvykle používá process manager. Dá se nainstalovat pomocí npm (Node Packaged Modules) jako balík pm2. Ten by se měl starat o spouštění jednotlivých aplikací a jejich běh na pozadí. K tomuhle už ale bude třeba otevřít dokumentaci k Node.js, tohle už není záležitost Debianu.
Název: Re:Nginx a Node.js na portu 80
Přispěvatel: Elipso 06. 05. 2015, 11:16:25
No tak som to nejak vyriesil za pomoci screen-u

Krok 1
Kód: [Vybrat]
nano /etc/init.d/blah

Krok 2

Kód: [Vybrat]
#!/bin/bash
case "$1" in
  start)
    cd /home/bordel && /usr/bin/screen -s /bin/bash -dmS MENO ./run.sh
    echo "Bordel started (maybe)"
    ;;
  stop)
    screen -X -S MENO kill
    echo "Bordel shutting down"
    ;;
  *)
    echo "Usage: /etc/init.d/blah {start|stop}"
    exit 1
    ;;
esac

exit 0


Krok 3
Kód: [Vybrat]
update-rc.d blah defaults

Podobne aj pre Node
Kód: [Vybrat]
    cd /var/www5 && /usr/bin/screen -s /bin/bash -dmS nodemeno node blah.js

Název: Re:Nginx a Node.js na portu 80
Přispěvatel: Elipso 06. 05. 2015, 14:50:35
Este treba prist na to aby sa jeden spustil asi o 30s neskor po starte
Název: Re:Nginx a Node.js na portu 80
Přispěvatel: Elipso 08. 05. 2015, 10:33:18
Vyriesene (spojil som tie 2sh, a pridal sleep 30)  ;D

Kód: [Vybrat]
#!/bin/bash
case "$1" in
  start)
    cd /home/elipso && /usr/bin/screen -s /bin/bash -dmS MENO ./run.sh
    echo "Server started"
    ;;
  stop)
    screen -X -S MENO kill
    echo "Server shutting down"
    ;;
  *)
    echo "Usage: /etc/init.d/MENO {start|stop}"
    exit 1
    ;;
esac

sleep 30

case "$1" in
  start)
    cd /var/www5 && /usr/bin/screen -s /bin/bash -dmS MENO node node.js
    echo "node.js started"
    ;;
  stop)
    screen -X -S MENO kill
    echo "Server node.js shutting down"
    ;;
  *)
    echo "Usage: /etc/init.d/MENO {start|stop}"
    exit 1
    ;;
esac

exit 0