[2] Node.js 12
22 stycznia 2022Zainstalujemy teraz Node.js 12.
[1] Upewnij się, że aktualna wersja Node.js jest włączona, następnie ją zainstaluj.
[root@vlsr01 ~]# dnf module list nodejs Ostatnio sprawdzono ważność metadanych: 1:45:27 temu w dniu sob, 22 sty 2022, 13:30:35. CentOS Stream 8 - AppStream Name Stream Profiles Summary nodejs 10 [d][e] common [d] [i], 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 [d], 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 #jeżeli inna wersja jest włączona, zresetuj to ustawienie i przełącz na wersję 12 [root@vlsr01 ~]# dnf module reset nodejs Ostatnio sprawdzono ważność metadanych: 1:46:47 temu w dniu sob, 22 sty 2022, 13:30:35. Rozwiązano zależności. ============================================================================== Pakiet Architektura Wersja Repozytorium Rozm. ============================================================================== Wyłączanie profili modułów: nodejs/common Przywracanie modułów: nodejs Podsumowanie transakcji ============================================================================== W porządku? [t/N]: t Ukończono. [root@vlsr01 ~]# dnf module enable nodejs:12 Ostatnio sprawdzono ważność metadanych: 1:47:47 temu w dniu sob, 22 sty 2022, 13:30:35. Rozwiązano zależności. ============================================================================================= Pakiet Architektura Wersja Repozytorium Rozm. ============================================================================================= Włączanie strumieni modułów: nodejs 12 Podsumowanie transakcji ============================================================================================= W porządku? [t/N]: t Ukończono. #zaktualizuj do wersji 12 [root@vlsr01 ~]# dnf module update nodejs:12 Ostatnio sprawdzono ważność metadanych: 1:48:41 temu w dniu sob, 22 sty 2022, 13:30:35. Rozwiązano zależności. ============================================================================================= Pakiet Arch. Wersja Repoz. Rozm. ============================================================================================= Aktualizowanie: nodejs x86_64 1:12.20.1-1.module_el8.4.0+649+b0593ddf appstream 10 M nodejs-full-i18n x86_64 1:12.20.1-1.module_el8.4.0+649+b0593ddf appstream 7.5 M npm x86_64 1:6.14.10-1.12.20.1.1.module_el8.4.0+649+b0593ddf appstream 3.7 M Instalowanie słabych zależności: nodejs-docs noarch 1:12.20.1-1.module_el8.4.0+649+b0593ddf appstream 4.1 M Podsumowanie transakcji ============================================================================================= Instalacja 1 pakiet Aktualizacja 3 pakiety Całkowity rozmiar pobierania: 25 M W porządku? [t/N]: t Pobieranie pakietów: (1/4): nodejs-docs-12.20.1-1.module_el8.4.0+649+b0593ddf.noa 1.8 MB/s | 4.1 MB 00:02 (2/4): nodejs-full-i18n-12.20.1-1.module_el8.4.0+649+b0593dd 1.8 MB/s | 7.5 MB 00:04 (3/4): npm-6.14.10-1.12.20.1.1.module_el8.4.0+649+b0593ddf.x 1.9 MB/s | 3.7 MB 00:01 (4/4): nodejs-12.20.1-1.module_el8.4.0+649+b0593ddf.x86_64.r 2.1 MB/s | 10 MB 00:04 --------------------------------------------------------------------------------------------- Razem 4.8 MB/s | 25 MB 00:05 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.12.20.1.1.module_el8.4.0+649+b0593d 1/1 Przygotowywanie : 1/1 Instalowanie : nodejs-docs-1:12.20.1-1.module_el8.4.0+649+b0593ddf 1/7 . . . . . . . . . . Ukończono. [root@vlsr01 ~]# node -v v12.20.1 #sprawdź poprawność instalacji poprzez prosty skrypt [root@vlsr01 ~]# mcedit nodejs_test.js #stwórz nowy 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); [root@vlsr01 ~]# node nodejs_test.js & [1] 2474 [root@vlsr01 ~]# curl -k localhost:8080 Witaj, to jest prosty serwer WEB Node.js!!! [root@vlsr01 ~]# kill 2474
[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] Stwórz prostą aplikację chatu, która wykorzystuje WebSocket i SSL/TLS, by sprawdzić czy wszystko działa.
[user01@vlsr01 ~]$ npm install fs socket.io express [user01@vlsr01 ~]$ mcedit chat.js #stwórz nowy var fs = require('fs'); var express = require('express'); var app = express(); var opts = { key: fs.readFileSync('/etc/letsencrypt/live/vlsr01.zicher.net/privkey.pem').toString(), cert: fs.readFileSync('/etc/letsencrypt/live/vlsr01.zicher.net/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'); }); [root@vlsr01 ~]# mcedit index.html #stwórz nowy <!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 ~]$ sudo node chat.js listening on *:1337
[5] Uruchom przykładową aplikację, aby sprawdzić czy działa poprawnie.