Node.js: Różnice pomiędzy wersjami

(Node 21)
 
(Nie pokazano 34 wersji utworzonych przez 3 użytkowników)
Linia 1: Linia 1:
''NodeBB'' to otwarty system forum publikowany na licencji GPLv3 napisany w [[Node.js]].  
+
''Node.js'' to otwarte, wieloplatformowe środowisko programistyczne.
  
 
=== Wstępna konfiguracja ===
 
=== Wstępna konfiguracja ===
  
Do uruchomienia ''NodeBB'' należy najpierw zadbać o prawidłową konfigurację samej domeny. Przed przystąpieniem do dalszych kroków należy upewnić się, że:
+
Do uruchomienia aplikacji opartej ''Node.js'' należy najpierw zadbać o prawidłową konfigurację wstępną pod Node.js. Przed przystąpieniem do dalszych kroków należy upewnić się, że:
 +
 
 
* Domena jest prawidłowo dodana i skonfigurowana w naszym systemie [[DNS]].
 
* Domena jest prawidłowo dodana i skonfigurowana w naszym systemie [[DNS]].
* Została dodana [[Strona WWW]] z wskazaniem typu Node.js.
+
* Została dodana [[WWW|strona WWW]] ze wskazaniem typu Node.js w wybranej przez siebie wersji.
* Włączono możliwość korzystania z własnego oprogramowania - [[Binexec]].
+
* Zostały wykonane polecenia:
 +
<syntaxhighlight lang="bash">
 +
mkdir ~/.npm-global
 +
npm config set prefix '~/.npm-global'
 +
echo 'export PATH=~/.npm-global/bin:~/bin:$PATH ' >> $HOME/.bash_profile && source $HOME/.bash_profile</syntaxhighlight>
 +
 
 +
=== Wersje Node.js ===
 +
 
 +
Na serwerach MyDevil udostępniamy następujące wersje Node:
 +
* v12.22.1 - binarki <code>node12</code> i <code>yarn12</code>
 +
* v14.21.1 - binarki <code>node14</code> i <code>npm14</code>
 +
* v16.20.2 (domyślna) - binarki <code>node16</code> i <code>npm16</code>
 +
* v18.18.2 -  binarki <code>node18</code> i <code>npm18</code>
 +
* v20.10.0 -  binarki <code>node20</code> i <code>npm20</code>
 +
* v21.2.0 -  binarki <code>node21</code> i <code>npm21</code>
 +
 
 +
Zmiana wersji Node.js pod poleceniami node, npm, w przykładzie została ustawiona wersja v18, aby wskazać inną należy odpowiednio zmienić cyfrę przy node oraz npm:
 +
<syntaxhighlight lang="bash">
 +
mkdir -p ~/bin && ln -fs /usr/local/bin/node18 ~/bin/node && ln -fs /usr/local/bin/npm18 ~/bin/npm && source $HOME/.bash_profile
 +
</syntaxhighlight>
 +
 
 +
Aby ponownie zmienić wersję Node.js tym razem na 16 wystarczy wykonać polecenie ze zmianą cyfr:
 +
<syntaxhighlight lang="bash">
 +
mkdir -p ~/bin && ln -fs /usr/local/bin/node16 ~/bin/node && ln -fs /usr/local/bin/npm16 ~/bin/npm && source $HOME/.bash_profile
 +
</syntaxhighlight>
 +
 
 +
=== Projekt Node.js===
 +
 
 +
Głównym katalogiem projektu ''Node.js'' (tj. katalog, w którym znajduje się plik <code class="directory">app.js</code>) musi być folder <code class="directory">/usr/home/''login''/domains/''domena''/public_nodejs</code>. Należy również usunąć plik index.html poleceniem <code>rm /usr/home/''login''/domains/''domena''/public_nodejs/public/index.html</code>
 +
 
 +
=== Moduły Node.js ===
 +
 
 +
Aby zainstalować wybrany moduł Node.js należy skorzystać z polecenia <code>npm install -g ''nazwa_modułu''</code>. Moduły posiadające binarki zaleca się instalować w katalogu domowym. Aby móc z nich skorzystać należy koniecznie włączyć [[binexec]] i przelogować się.
 +
 
 +
{{Warning|Aby niektóre moduły npm skompilowały się poprawnie należy ustawić następujące zmienne:
 +
<nowiki>export C=clang
 +
export CXX=clang++</nowiki>
 +
a w przypadku błędu należy sprawdzić:
 +
<nowiki>export CC=gcc
 +
export CXX=g++</nowiki>
 +
}}
 +
 
 +
==== Przygotowanie aplikacji Node.js ====
 +
 
 +
Nowy projekt Node.js należy utworzyć w katalogu <code class="directory">/usr/home/''login''/domains/''domena''/public_nodejs</code> - najprostszym sposobem utworzenia odpowiedniego projektu jest stworzenie pliku app.js:
 +
 
 +
<syntaxhighlight lang="javascript">var http = require('http');
 +
var server = http.createServer(function(req, res) {
 +
    res.writeHead(200, { 'Content-Type': 'text/plain' });
 +
    res.end("hello world!\n");
 +
});
 +
server.listen(3000);</syntaxhighlight>
 +
 
 +
Widoczny w ostatniej linii port 3000 nie otworzy socketu na porcie 3000. Phusion Passenger automatycznie wybiera losowy, wolny port, przez który komunikuje się z aplikacją. Rezerwacja portu nie jest potrzebna przy uruchamianiu aplikacji przez typ nodejs.
 +
 
 +
==== Istniejący projekt Node.js ====
 +
 
 +
Istniejący projekt ''Node.js'' należy umieścić jako katalog <code class="directory">/usr/home/''login''/domains/''domena''/public_nodejs</code>. W przypadku gdy projekt nie nazywa się <code class="directory">public_nodejs</code> należy zmienić jego nazwę. Należy również zmodyfikować plik app.js tak, aby wykonywał aplikację. Zwykle poza odpowiednim require i ustawieniem listen() plik app.js nie potrzebuje zawierać więcej elementów. Trzeba również zainstalować brakujące poleceniem <code>npm install</code>.
 +
 
 +
=== Restart aplikacji ===
 +
 
 +
Restart aplikacji ''Node.js'' można wykonać za pomocą naszego [[DevilWEB|panelu zarządzania usługą]] w zakładce [[WWW]], lub przy użyciu polecenia [[Devil|systemu zarządzania kontem Devil]]: <code>devil www restart ''domena''</code>.
 +
 
 +
=== Limit procesów dla Phusion Passenger  ===
 +
Możliwość ustawienia ilości procesów dla stron typu Node.js.
 +
Składnia polecenia:
 +
 
 +
devil www options DOMENA processes <ILOŚĆ>
 +
 
 +
Gdzie:
 +
DOMENA oznacza domenę WWW typu Node.js.
 +
ILOŚĆ - ilość procesów w przedziale od 1 do 80% procesów systemowych konta hostingowego.
 +
 
 +
Opcja dostępna jest również w panelu DevilWEB:
  
=== Instalacja ===
+
Strony WWW (WWW Websites) ➡ Szczegóły (Details) ➡ Limit procesów (Number of processes) ➡ należy wpisać nową wartość oraz zapisać zmiany przyciskiem Zapisz zmiany (Save changes).
  
Należy ściągnąć najnowszą stabilną wersję ''NodeBB''. Aby to zrobić należy się [[logowanie|zalogować]] na shellu ''MyDevil'' i przejść do katalogu <code class="directory">/usr/home/''login''/domains/''domena''</code>. Następnie trzeba:
+
=== Pliki statyczne ===
  
Skasować folder <code>rm -r public_nodejs</code>  
+
Wszystkie pliki umieszczone w <code class="directory">/usr/home/''login''/domains/''domena''/public_nodejs/public</code> są serwowane jak pliki statyczne. W tym katalogu najlepiej umieścić wszystkie obrazki, skrypty, style, itp. Żądania do plików znajdujących się w tym folderze nie będą przetwarzane przez Node.js i nie będą obciążać interpretatora. Na przykład plik <code class="directory">/usr/home/''login''/domains/''domena''/public_nodejs/public/robots.txt</code> będzie dostępny pod adresem http://''domena''/robots.txt.
  
Ściągnąć repozytorium ''NodeBB'' do folderu docelowego public_nodejs oraz przejść do niego <code><nowiki>git clone -b v1.5.x https://github.com/NodeBB/NodeBB.git public_nodejs && cd public_nodejs </nowiki></code>. 
+
=== Zmienne ===
  
Zainstalować zależności <code>npm install --production</code>.
+
Ustawianie zmiennej z poziomu SSH z widocznością dla aplikacji uruchamianej przez Passengera:
 +
* Dopisanie zmiennych do ~/.bash_profile (np. export TESTENV=1).
 +
* Ważne: zmienne nie działają z ~/.bashrc i ~/.shrc
  
Utworzyć bazę danych [[MongoDB]] specjalnie dla nodebb
+
=== Logi ===
  
Uruchomić w katalogu public_nodejs konfigurację nodebb
+
{{Warning|Nie należy usuwać katalogu logs, może to spowodować brak działania stron Node.js, Ruby, Python.}}
<code>./nodebb setup</code> i podać wymagane dane, wybierając mongo jako bazę danych.
 
  
<code><pre>URL used to access this NodeBB (http://localhost:4567) domena:4567
+
Logi błędów zapisują się do pliku error.log w katalogu <code class="directory">/usr/home/''login''/domains/''domena''/logs/</code>.
Please enter a NodeBB secret ( ... ) [ENTER]
 
Which database to use (mongo) [ENTER]
 
  
19/4 13:38:54 [15804] - info: Now configuring mongo database:
+
=== Czas życia aplikacji ===
Host IP or address of your MongoDB instance (127.0.0.1) mongoX.mydevil.net
+
 
Host port of your MongoDB instance (27017) [ENTER]
+
W przypadku braku ruchu na stronie przez 24h aplikacja jest wyłączana automatycznie i ponownie automatycznie uruchamiana przy pierwszym następnym wejściu. W przypadku zmiany w konfiguracji po naszej stronie również aplikacja jest automatycznie wyłączana i uruchamiana przy następnym pierwszym wejściu na stronę.
MongoDB username moYY_ZZZ
 
Password of your MongoDB database
 
MongoDB database name (nodebb) moYY_ZZZ
 
</pre></code>
 
Następnie pojawi się pytanie o domyślny login administratora NodeBB, hasło oraz adres e-mail, który ma mu być przypisany.
 
  
Uruchomić przeglądarkę internetową i wejść na stronę forum.
 
  
 
=== Odnośniki zewnętrzne ===
 
=== Odnośniki zewnętrzne ===
* [https://nodebb.org/ Strona główna NodeBB]
 
* [https://github.com/NodeBB/NodeBB/releases Dostępne wersje NodeBB]
 
  
[[Kategoria:Node.js]]
+
* [http://nodejs.org/ Node.js]
[[Kategoria:Poradniki]]
+
* [https://www.phusionpassenger.com/ Phusion Passenger]
 +
 
 +
[[Category:Node.js]]

Aktualna wersja na dzień 01:07, 22 gru 2023

Node.js to otwarte, wieloplatformowe środowisko programistyczne.

Wstępna konfiguracja

Do uruchomienia aplikacji opartej Node.js należy najpierw zadbać o prawidłową konfigurację wstępną pod Node.js. Przed przystąpieniem do dalszych kroków należy upewnić się, że:

  • Domena jest prawidłowo dodana i skonfigurowana w naszym systemie DNS.
  • Została dodana strona WWW ze wskazaniem typu Node.js w wybranej przez siebie wersji.
  • Zostały wykonane polecenia:
mkdir ~/.npm-global
npm config set prefix '~/.npm-global' 
echo 'export PATH=~/.npm-global/bin:~/bin:$PATH ' >> $HOME/.bash_profile && source $HOME/.bash_profile

Wersje Node.js

Na serwerach MyDevil udostępniamy następujące wersje Node:

  • v12.22.1 - binarki node12 i yarn12
  • v14.21.1 - binarki node14 i npm14
  • v16.20.2 (domyślna) - binarki node16 i npm16
  • v18.18.2 - binarki node18 i npm18
  • v20.10.0 - binarki node20 i npm20
  • v21.2.0 - binarki node21 i npm21

Zmiana wersji Node.js pod poleceniami node, npm, w przykładzie została ustawiona wersja v18, aby wskazać inną należy odpowiednio zmienić cyfrę przy node oraz npm:

mkdir -p ~/bin && ln -fs /usr/local/bin/node18 ~/bin/node && ln -fs /usr/local/bin/npm18 ~/bin/npm && source $HOME/.bash_profile

Aby ponownie zmienić wersję Node.js tym razem na 16 wystarczy wykonać polecenie ze zmianą cyfr:

mkdir -p ~/bin && ln -fs /usr/local/bin/node16 ~/bin/node && ln -fs /usr/local/bin/npm16 ~/bin/npm && source $HOME/.bash_profile

Projekt Node.js

Głównym katalogiem projektu Node.js (tj. katalog, w którym znajduje się plik app.js) musi być folder /usr/home/login/domains/domena/public_nodejs. Należy również usunąć plik index.html poleceniem rm /usr/home/login/domains/domena/public_nodejs/public/index.html

Moduły Node.js

Aby zainstalować wybrany moduł Node.js należy skorzystać z polecenia npm install -g nazwa_modułu. Moduły posiadające binarki zaleca się instalować w katalogu domowym. Aby móc z nich skorzystać należy koniecznie włączyć binexec i przelogować się.

Przygotowanie aplikacji Node.js

Nowy projekt Node.js należy utworzyć w katalogu /usr/home/login/domains/domena/public_nodejs - najprostszym sposobem utworzenia odpowiedniego projektu jest stworzenie pliku app.js:

var http = require('http');
var server = http.createServer(function(req, res) {
    res.writeHead(200, { 'Content-Type': 'text/plain' });
    res.end("hello world!\n");
});
server.listen(3000);

Widoczny w ostatniej linii port 3000 nie otworzy socketu na porcie 3000. Phusion Passenger automatycznie wybiera losowy, wolny port, przez który komunikuje się z aplikacją. Rezerwacja portu nie jest potrzebna przy uruchamianiu aplikacji przez typ nodejs.

Istniejący projekt Node.js

Istniejący projekt Node.js należy umieścić jako katalog /usr/home/login/domains/domena/public_nodejs. W przypadku gdy projekt nie nazywa się public_nodejs należy zmienić jego nazwę. Należy również zmodyfikować plik app.js tak, aby wykonywał aplikację. Zwykle poza odpowiednim require i ustawieniem listen() plik app.js nie potrzebuje zawierać więcej elementów. Trzeba również zainstalować brakujące poleceniem npm install.

Restart aplikacji

Restart aplikacji Node.js można wykonać za pomocą naszego panelu zarządzania usługą w zakładce WWW, lub przy użyciu polecenia systemu zarządzania kontem Devil: devil www restart domena.

Limit procesów dla Phusion Passenger

Możliwość ustawienia ilości procesów dla stron typu Node.js. Składnia polecenia:

devil www options DOMENA processes <ILOŚĆ>

Gdzie: DOMENA oznacza domenę WWW typu Node.js. ILOŚĆ - ilość procesów w przedziale od 1 do 80% procesów systemowych konta hostingowego.

Opcja dostępna jest również w panelu DevilWEB:

Strony WWW (WWW Websites) ➡ Szczegóły (Details) ➡ Limit procesów (Number of processes) ➡ należy wpisać nową wartość oraz zapisać zmiany przyciskiem Zapisz zmiany (Save changes).

Pliki statyczne

Wszystkie pliki umieszczone w /usr/home/login/domains/domena/public_nodejs/public są serwowane jak pliki statyczne. W tym katalogu najlepiej umieścić wszystkie obrazki, skrypty, style, itp. Żądania do plików znajdujących się w tym folderze nie będą przetwarzane przez Node.js i nie będą obciążać interpretatora. Na przykład plik /usr/home/login/domains/domena/public_nodejs/public/robots.txt będzie dostępny pod adresem http://domena/robots.txt.

Zmienne

Ustawianie zmiennej z poziomu SSH z widocznością dla aplikacji uruchamianej przez Passengera:

  • Dopisanie zmiennych do ~/.bash_profile (np. export TESTENV=1).
  • Ważne: zmienne nie działają z ~/.bashrc i ~/.shrc

Logi

Logi błędów zapisują się do pliku error.log w katalogu /usr/home/login/domains/domena/logs/.

Czas życia aplikacji

W przypadku braku ruchu na stronie przez 24h aplikacja jest wyłączana automatycznie i ponownie automatycznie uruchamiana przy pierwszym następnym wejściu. W przypadku zmiany w konfiguracji po naszej stronie również aplikacja jest automatycznie wyłączana i uruchamiana przy następnym pierwszym wejściu na stronę.


Odnośniki zewnętrzne