[2] Node.js 12

22 stycznia 2022 Wyłączono przez Adam [zicherka] Nogły

Zainstalujemy 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.