Node.js¶
Node.js to otwarte, wieloplatformowe środowisko programistyczne.
Wstępna konfiguracja¶
Do uruchomienia aplikacji opartej na Node.js należy najpierw zadbać o prawidłową konfigurację wstępną. 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 nodejs
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 SMALL.PL udostępniamy następujące wersje Node.js:
v14.21.1
- binarkinode14
iyarn14
v16.20.2
- binarkinode16
inpm16
v18.20.2
(domyślna) - binarkinode18
inpm18
v20.15.1
- binarkinode20
inpm20
v22.4.1
- binarkinode22
inpm22
Zmiana wersji Node.js pod poleceniami node
oraz npm
- w przykładzie została ustawiona wersja v22
, aby wskazać inną należy odpowiednio zmienić cyfrę przy node
oraz npm
:
mkdir -p ~/bin && ln -fs /usr/local/bin/node22 ~/bin/node && ln -fs /usr/local/bin/npm22 ~/bin/npm && source $HOME/.bash_profile
Aby ponownie zmienić wersję Node.js tym razem na v20
wystarczy wykonać polecenie ze zmianą cyfr:
mkdir -p ~/bin && ln -fs /usr/local/bin/node20 ~/bin/node && ln -fs /usr/local/bin/npm20 ~/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ć katalog /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ę.
Uwaga
Aby niektóre moduły npm
skompilowały się poprawnie należy ustawić następujące zmienne:
export C=clang
export CXX=clang++
a w przypadku błędu należy sprawdzić:
export CC=gcc
export CXX=g++
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 tworzy socket, przez który komunikuje się z aplikacją. Rezerwacja portu nie jest potrzebna przy uruchamianiu aplikacji przez typu 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 moduły 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 nodejs
. Składnia polecenia:
devil www options DOMENA processes <ILOŚĆ>
Gdzie:
- DOMENA oznacza domenę WWW typu nodejs
- 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
➡ Szczegóły
➡ Limit procesów
➡ należy wpisać nową wartość oraz zapisać zmiany przyciskiem 💾 Zapisz zmiany
.
Pliki statyczne¶
Wszystkie pliki umieszczone w katalogu /usr/home/LOGIN/domains/DOMENA/public_nodejs/public
są obsługiwane jak pliki statyczne. W tym katalogu najlepiej umieścić wszystkie obrazki, skrypty, style, itp. Żądania do plików znajdujących się w tym katalogu nie będą przetwarzane przez procesy 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(s)://DOMENA/robots.txt
.
Zmienne¶
Ustawianie zmiennej z poziomu SSH z widocznością dla aplikacji uruchamianej przez Passengera jest możliwe poprzez dopisanie zmiennych do pliku ~/.bash_profile
(np. export TESTENV=1
).
Uwaga
Zmienne nie zostaną użyte z plików: ~/.bashrc
i ~/.shrc
Logi¶
Uwaga
Nie należy usuwać katalogu logs
, może to spowodować problemy z działaniem stron typu Node.js
, Ruby
, Python
.
Logi błędów zapisują się do pliku error.log
w katalogu /usr/home/LOGIN/domains/DOMENA/logs/
.
Czas życia aplikacji¶
W przypadku braku żądań do strony przez 24 godziny
aplikacja jest wyłączana automatycznie i ponownie automatycznie uruchamiana przy pierwszym następnym wejściu. W przypadku zmiany w konfiguracji strony również aplikacja jest automatycznie wyłączana i uruchamiana przy następnym pierwszym wejściu na stronę.