NodeJS: vývoj, konfigurace serveru

15. prosince 2020

Lang: cs en de es

JavaScript se prosazuje i ve vývoji backendu webových aplikací. K běhu na serveru slouží technologie NodeJS. Jak začít vyvíjet NodeJS aplikace? Jak si připravit server pro běh NodeJS aplikací? To se dozvíte v tomto návodu.

JavaSript je skriptovací jazyk, který se primárně používal na frontendu - běží u uživatele ve webovém prohlížeči. Technologickým vývojem nakonec neplánovaně vznikla možnost provozovat JavaScript na backendu - vzniklo NodeJS.

Instalace NodeJS

Krom NodeJS budete potřebovat nainstalovat i NPM, což je nástroj pro správu balíčku/knihoven, které jsou vyvinuté v JavaSriptu. Pokud používáte distribuci Mageia, instalaci provedete následujícím příkazem.

urpmi nodejs npm
V debian-like distribucích instalaci NodeJS a NPM provedete příkazem:
apt-get install nodejs npm
Asi vás bude zajímat jakou verzi NodeJS jste nainstalovaly to zjistíte příkazem:
node -v

Kód programu:

const http = require('http');

const hostname = '0.0.0.0';
const port = 3000;
console.log(process.env);

const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World!\n');
});

server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
Spuštění aplikace:
node hello.js
Po spuštění nodeJS je dostupná aplikace ve webovém prohlížeči na adrese: http://0.0.0.0:3000/ Zdrojový kód příkladu NodeJS aplikace je na GitHubu.

NodeJS Docker

Nejjednodušší způsob zprovoznění NodeJS v Dockeru je za použít oficiálního Docker image NodeJS z docker hubu - tyto obrazy NodeJS jdou použít bez úprav. Zde je podrobný návod provoz NodeJS v Docker kontejneru.

Pro vykoušení můžete spustit rovnou mnou připravený příklad nodeJS dockeru.

Spuštění docker kontejneru a zobrazení aplikace:

docker-compose  up
Ruční build kontejneru a ruční spuštění aplikace:
docker build -t nodex .
docker run -rm -p 49160:3000  nodex
Aplikace pak bude dostupná na url: http://localhost:49160/

NodeJS video návod

Jak si zprovoznit NodeJS? Můžete NodeJS nainstalovat nativně do systému nebo použít Docker. Zde je video návod jak si připravit prostředí pro vývoj aplikací v technologii NodeJS. A jak vytvořit první program (hello world) v NodeJS.

NodeJS na serveru

Po vyvinutí NodeJS aplikace, ji pravděpodobně bude chtít provozovat na serveru jako démona=stále běžící program, který automaticky startuje po spuštění serveru.
K tomu slouží různé nástroje v moderním OS založeném na Linuxu můžete použít systemd. Jinou možností je například PM2, což se správce procesů/aplikací naprogramovaných v NodeJS.

PM2

PM2 funguje tak, že zajistí spuštění scriptu v NodeJS na pozadí při startu operačního systému a udržuje ho naživu. Běh sleduje a pokud z nějakého důvodu spadne, znovu ho spustí. Skripty automaticky startuje při startu systému a umí spustit jednorázově předem definované scripty.

Instalaci provedete příkazem:

npm install pm2@latest -g
Zde je podrobný příklad návodu jak zprovoznil PM2

Systemd

Zde je podrobný příklad návodu jak spouštět NodeJS aplikaci pomocí systemd.

Vytvořte soubor /lib/systemd/system/nodej-service.service s konfigurací pro spouštění NodeJS aplikace s následujícím obsahem:

[Unit]
Description=NodeJS
After=network.target

[Service]
Type=simple
#ExecStart=/usr/bin/node /srv/node/hello.js
ExecStart=/usr/bin/npm run start --prefix /root/CloudProxy
Restart=always
#Restart=on-failure

[Install]
WantedBy=multi-user.target
Následujícími příkazy znovu načtete konfiguraci a spustíte NodeJS aplikaci na pozadí(jako démona):
systemctl daemon-reload
service nodejs-service start

Samozřejmě takovou konfiguraci je dobré dělat pomocí nějakého nástroje například ansible, protože pak jste schopní tyto úkoly automatizovat a tím budete efektivnější, což typicky každý správný linux admin nějaký takový nástroj používá. Ostatně chcete-li pro váš bussines používat NodeJS aplikaci, měli by jste delegovat instalaci linuxového serveru pro běh NodeJS aplikace na serverového profesionála.

TypeScript

JavaScript i přes modernizaci není příliš kvalitní skriptovací jazyk, proto se dneska často přechází na TypeScript Více o TypeScriptu na oficiálních anglických stránkách.

Články na podobné téma

Analýza zadání a nacenění vývoje softwarového projektu
Python program na ovládání Dockeru pomocí API
Jak použít aplikaci MailCatcher pro testování emailů
Návod: Python OpenAI API
Vytvoření WebSocket webové aplikace a nastavení proxy
Řízení projektů: Agilní vývoj softwaru
Jak provozovat staré PHP aplikace
Co by měl umět dobrý programátor
Programovací jazyk Rust
Nette security bug CVE-2020-15227
Jak porovnat dvě stejné databáze?
REST API: API platform
Vlastní web a mail hosting se softwarem ISP Config
Programovní v SQL: PostgreSQL, MySQL/MariaDB
HTTPS: zabezpečený web
NoSQL databáze Mongo DB
Připojení k Microsoft SQL Serveru z Linuxu
Co je pracovní náplň programátora
Lokalizace aplikací v jazyce Python
Jaký mail a web hosting vybrat
How to make wireless low power Arduino
Digispark - Programujte mikrokontrolér Atmel ATtiny pomocí Arduino IDE
Program Roulette
Vývoj pro procesory ARM s Arduino IDE
Wireless low power Arduino
Pyradio - Python program for receive Internet radio with text user inteface
UPS monitor pro Android
Bezdrátový bateriově napájený WiFi teploměr
Jak programovat WiFi procesor ESP8266
Comparison IQRF vs Wireless Arduino
Jakou platformu zvolit pro eshop? Například Prestashop
Development kits and gateways for wireless platform IQRF

OpenStreetMap a GPS trasy v mapě na webu
Quickplay
Java program pro přehledné monitorování záložních zdrojů
Čipové kontaktní a bezkontaktní karty Java Card OpenPlatform
Otevřený chytrý telefon s Linuxem - Openmoko Neo FreeRunner
Vývoj pro bezdrátové moduly s procesorem PIC pod GNU/Linux - IQRF
Grafický program pro embeded/mobilní zařízení na vyhledávání dopravního spoje.
O programování a ruzné programy v jazyce Java, Python a dalších
Java program a applet Kalkulačka
Java program na výpočet kvadratické rovnice

Odběr novinek

Pokud máte zájem dostávat příležitostně na email novinky.
Můžete se vyplněním emailu registrovat k odběru novinek.


+