[1] Node.js 10
20 stycznia 2022Zainstaluj Node.js 10
[1] Upewnij się, że aktualna wersja Node.js jest włączona i zainstalowana.
[root@vlsr01 ~]# dnf module list nodejs Ostatnio sprawdzono ważność metadanych: 2:07:25 temu w dniu śro, 19 sty 2022, 13:49:20. CentOS Stream 8 - AppStream Name Stream Profiles Summary nodejs 10 [d] common [d], development, minimal, s2i Javascript runtime nodejs 12 common [d], development, minimal, s2i Javascript runtime nodejs 14 common [d], development, minimal, s2i Javascript runtime nodejs 16 common, development, minimal, s2i Javascript runtime Extra Packages for Enterprise Linux Modular 8 - x86_64 Name Stream Profiles Summary nodejs 13 default, development, minimal Javascript runtime nodejs 16-epel default, development, minimal Javascript runtime Wskazówka: [d]omyślne, [e]włączone, [x]wyłączone, [i]zainstalowane #zainstaluj Node.js 10 [root@vlsr01 ~]# dnf module install nodejs:10 Ostatnio sprawdzono ważność metadanych: 2:08:40 temu w dniu śro, 19 sty 2022, 13:49:20. Rozwiązano zależności. ================================================================================ Pakiet Arch. Wersja Repoz. Rozm. ================================================================================ Instalowanie pakietów grupy/modułu: nodejs x86_64 1:10.23.1-1.module_el8.4.0+645+9ce14ba2 appstream 8.9 M npm x86_64 1:6.14.10-1.10.23.1.1.module_el8.4.0+645+9ce14ba2 appstream 3.7 M Instalowanie słabych zależności: nodejs-full-i18n x86_64 1:10.23.1-1.module_el8.4.0+645+9ce14ba2 appstream 7.3 M Instalowanie profili modułów: nodejs/common Włączanie strumieni modułów: nodejs 10 Podsumowanie transakcji ================================================================================ Instalacja 3 pakiety Całkowity rozmiar pobierania: 20 M Rozmiar po zainstalowaniu: 71 M W porządku? [t/N]: t Pobieranie pakietów: (1/3): npm-6.14.10-1.10.23.1.1.module_el8.4.0+6 1.6 MB/s | 3.7 MB 00:02 (2/3): nodejs-full-i18n-10.23.1-1.module_el8.4. 2.6 MB/s | 7.3 MB 00:02 (3/3): nodejs-10.23.1-1.module_el8.4.0+645+9ce1 2.1 MB/s | 8.9 MB 00:04 -------------------------------------------------------------------------------- Razem 4.4 MB/s | 20 MB 00:04 Wykonywanie sprawdzania transakcji Pomyślnie ukończono sprawdzanie transakcji. Wykonywanie testu transakcji Pomyślnie ukończono test transakcji. Wykonywanie transakcji Wykonywanie skryptu : npm-1:6.14.10-1.10.23.1.1.module_el8.4 1/1 Przygotowywanie : 1/1 Instalowanie : nodejs-full-i18n-1:10.23.1-1.module_el 1/3 Instalowanie : npm-1:6.14.10-1.10.23.1.1.module_el8.4 2/3 Instalowanie : nodejs-1:10.23.1-1.module_el8.4.0+645+ 3/3 Wykonywanie skryptu : nodejs-1:10.23.1-1.module_el8.4.0+645+ 3/3 Sprawdzanie : nodejs-1:10.23.1-1.module_el8.4.0+645+ 1/3 Sprawdzanie : nodejs-full-i18n-1:10.23.1-1.module_el 2/3 Sprawdzanie : npm-1:6.14.10-1.10.23.1.1.module_el8.4 3/3 Installed products updated. Zainstalowano: nodejs-1:10.23.1-1.module_el8.4.0+645+9ce14ba2.x86_64 nodejs-full-i18n-1:10.23.1-1.module_el8.4.0+645+9ce14ba2.x86_64 npm-1:6.14.10-1.10.23.1.1.module_el8.4.0+645+9ce14ba2.x86_64 Ukończono. [root@vlsr01 ~]# node -v v10.23.1 #stwórz skrypt w celu przetestowania poprawności działania [root@vlsr01 ~]# cat > nodejs_test.js <<'EOF' var http = require('http'); var server = http.createServer(function(req, res) { res.write("Witaj, to jest prosty serwer WEB Node.js!!!\n"); res.end(); }).listen(8080); EOF [root@vlsr01 ~]# node nodejs_test.js & [1] 23327 [root@vlsr01 ~]# curl -k localhost:8080 Witaj, to jest prosty serwer WEB Node.js!!! [root@vlsr01 ~]# kill 23327
[2] Certyfikaty użyte w tym przykładzie wykonano zgodnie z: Certyfikat SSL – Let’s Encrypt.
[3] Jeśli Firewalld jest uruchomiony zezwól na ruch na porcie 1337/tcp.
[root@vlsr01 ~]# firewall-cmd --add-port=1337/tcp --permanent success [1]+ Zakończony node nodejs_test.js [root@vlsr01 ~]# firewall-cmd --reload Success
[4] Utwórz przykładową aplikację czatu, w której zaimplementowano WebSocket i SSL/TLS w celu weryfikacji działania.
[user01@vlsr01 ~]$ npm install fs socket.io express [user01@vlsr01 ~]$ mcedit chat.js var fs = require('fs'); var express = require('express'); var app = express(); var opts = { key: fs.readFileSync('/etc/letsencrypt/live/vlsr01.zicher.lab/privkey.pem').toString(), cert: fs.readFileSync('/etc/letsencrypt/live/vlsr01.zicher.lab/fullchain.pem').toString(), }; var http = require('https').Server(opts, app); var io = require('socket.io')(http, opts); app.get('/', function(req, res){ res.sendFile(__dirname + '/index.html'); }); io.on('connection', function(socket){ socket.on('chat message', function(msg){ io.emit('chat message', msg); }); }); http.listen(1337, function(){ console.log('listening on *:1337'); }); [user01@vlsr01 ~]$ mcedit index.html <!DOCTYPE html> <html> <head> <title>WebSocket Chat</title> </head> <body> <form action=""> <input id="sendmsg" autocomplete="off" /><button>Send</button> </form> <ul id="messages" style="list-style-type: decimal; font-size: 16px; font-family: Arial;"></ul> <script src="https://www.zicher.lab:1337/socket.io/socket.io.js"></script> <script src="https://code.jquery.com/jquery.min.js"></script> <script> var socket = io('https://www.zicher.lab:1337'); $('form').submit(function(){ socket.emit('chat message', $('#sendmsg').val()); $('#sendmsg').val(''); return false; }); socket.on('chat message', function(msg){ $('#messages').append($('<li style="margin-bottom: 5px;">').text(msg)); }); </script> </body> </html> [user01@vlsr01 ~]$ node chat.js listening on *:1337 #jeśli [user01] nie ma dostępu do /etc/letsencrypt/live/vlsr01.zicher.lab/*.pem, uruchom jako [sudo]
[5] Sprawdź dostęp do utworzonej aplikacji.