Uruchomienie aplikacji Node.js na usłudze hostingowej

Uwaga! Na wstępie chcielibyśmy podkreślić, że nie świadczymy wsparcia w zakresie administracji i debugowania dla aplikacji Node.js. Poniższa instrukcja przedstawia jedynie opis uruchomienia aplikacji za pomocą narzędzia dostępnego w panelu administracyjnym hostingu.


Dla usług hostingowych jest możliwe uruchomienie aplikacji opartej o Node.js z poziomu modułu „Aplikacje Node.js” w panelu Direct_Admin

Zalecane jest posiadanie pakietu z dostępem do SSH.

Aplikacje Node.js mogą znacznie obciążać usługę, dla tego należy upewnić się, że parametry pakietu są wystarczające względem danej aplikacji:
https://cyberfolks.pl/specyfikacja-techniczna-uslug.pdf

Aby uruchomić aplikację Node.js wykonaj następujące kroki:

1. Dodanie aplikacji
Nową aplikację można dodać z poziomu panelu hostingu w „Pozostałe ustawienia” -> „Aplikacje Node.js”

Następnie wybieramy opcję „Create Aplication”

2. Konfiguracja aplikacji
Po stworzeniu aplikacji przechodzimy do okna edycji, gdzie możemy zarządzać wersją Node.js, katalogiem głównym aplikacji czy plikami konfiguracyjnymi.

Node.js version
Wybieramy jedną z dostępnych wersji Node.js.
Uwaga! Jeżeli oczekiwanej wersji nie ma na liście należy wykonać instalację wybranej paczki binarnej albo użyć NVS (sekcja „Instalacja Node.js – inne sposoby” – opisane na końcu instrukcji).

Adds value for NODE_ENV variable
Służy do przełączania między wersjami development lub production

Application root
W tym miejscu podajemy ścieżkę do katalogu z naszą aplikacją – jest to lokalizacja, do której zostaną wgrane pliki aplikacji (lokalizacja z plikiem startowym package.json). Katalog domowy aplikacji nie musi znajdować się w katalogu domowym domeny, może być to dowolny katalog użytkownika.
Przykład ścieżki dla katalogu domyślnego public_html:
/home/login_serwera/domains/nazwa_domeny/public_html

Ścieżkami do katalogu domowego można zarządzać z poziomu panelu administracyjnego hostingu w „Serwer www i domeny” -> „Przypisz katalog domeny”.
Z uwagi na to, że zostanie utworzony specjalny wpis do pliku .htaccess przekierowujący z katalogu domeny głównej do katalogu naszej aplikacji, zalecamy tworzyć aplikacje na osobnych domenach z odseparowanymi katalogami.

Application URL
Tutaj należy podać nazwę domeny, pod jaką będzie odpowiadać aplikacja

Application startup file
Tutaj podajemy nazwę pliku startowego – w tym przypadku app.js

Zatwierdzenie Ustawień – Create
Po ustaleniu wstępnej konfiguracji generujemy aplikację przyciskiem „Create”. Zostanie
utworzone wirtualne środowisko. W katalogu głównym domeny tworzony jest też plik
.htaccess odpowiedzialny za ustawienia przekierowania na katalog aplikacji i działanie
Passenger’a. Z tego powodu zalecamy tworzenie aplikacji w wydzielonych domenach,
katalogach, aby nie kolidowały z innymi aplikacjami/stronami, zwłaszcza jeżeli chodzi o
ustawienia w pliku .htaccess

3. Sprawdzenie działania aplikacji
Na tym etapie należy sprawdzić, czy serwer Node.js poprawnie odpowiada. Pod zadeklarowaną nazwą domeny powinna zostać wyświetlona informacja o działającej wersji Node.js.
It works!
NodeJS 16.17.1

Dopiero teraz można rozpocząć zgrywanie plików właściwej aplikacji.

4. Logowanie do wirtualnego środowiska
Aby korzystać z serwera Node.js, wymagane jest zalogowanie do wirtualnego środowiska
poprzez SSH poleceniem dostępnym u góry aplikacji w sekcji „Enter to the virtual
environment.To enter to virtual environment, run the command.”
Teraz możemy odpytać dostępną wersję Node.js oraz wersję npm następującymi
poleceniami:
npm -v
node -v

Uwaga #1 ! npm jest wbudowany dla Node.js, dla tego będzie dostępny dopiero po zalogowaniu
do wirtualnego środowiska z uruchomionym serwerem Node.js.
Uwaga #2 ! Aplikacje Node.js mogą działać bez dostępu do SSH, aczkolwiek jest wskazane
posiadanie dostępów SSH do pracy na wirtualnym środowisku i tam wykonywanie dalszych
skryptów.

4. Konfiguracja pliku startowego package.json
Do poprawnego uruchomienia operacji npm install wymagany jest plik konfiguracyjny. Można
go utworzyć ręcznie lub za pomocą polecenia:
npm init -y

Dodatkowe informacje

Run NPM Install
Jeżeli aplikacja jest uruchomiona oraz posiada wygenerowany plik package.json to opcja
Run NPM Install powinna się podświetlić jako dostępna. Pojawi się też komunikat:
NPM Install completed successfully.
Do wykonania tego polecenia jest potrzebny poprawnie zadeklarowany plik package.json.
Zalecamy posługiwanie się konsolą ssh i wirtualnym środowiskiem, podając polecenie:
npm install

Run scripts
Służy do uruchomiania poleceń zadeklarowanych w package.json. Te same polecenia
możemy wykonywać z poziomu konsoli SSH w zależności od deklaracji w pliku package.json.

Zmienne środowiskowe
Zalecamy korzystanie z pliku .env jako miejsca do deklarowania zmiennych środowiskowych

Wskazanie na port
Domyślnie aplikacja uruchamiana jest na porcie http. Jeżeli chcemy skierować aplikację na
konkretny port można to zrobić z poziomu pliku .htaccess dla domeny w następujący sposób:
DirectoryIndex disabled
RewriteEngine On
RewriteRule ^$ http://127.0.0.1:NR_PORTU/ [P,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ http://127.0.0.1:NR_PORTU/$1 [P,L]

gdzie NR_PORTU – numer portu – najlepiej podać z zakresu: 35100:35599

FAQ – Najczęściej zadawane pytania/błędy

Serwer Node.js można uruchomić na każdej usłudze, która ma dostęp do SSH. Aplikacje Node.js są dostępne na wszystkich serwerach współdzielonych. Dla serwerów VPS i Dedykowanych można dokonać ręcznej instalacji, patrz Instalacja Node.js – inne sposoby (poniżej FAQ)

Manager pakietów npm jest domyślnie wbudowany dla Node.js. Upewnij się, czy jesteś poprawnie zalogowany do środowiska wirtualnego i czy serwer jest aktywny.

Uruchomić będzie można wszystkie frameworki, dla których node.js ma spełnioną określoną wersję. Przykłady takich technologii to: React.js, Next.js. Nest.js, Nuxt.js, Vue.js, Gatsby. Nie świadczymy wsparcia technicznego w zakresie administracji i instalacji dla tych technologii

Najczęściej tego typu błąd dotyczy problemów z przekierowaniem aplikacji z katalogu domeny do katalogu aplikacji dla subdomen. Zalecamy tworzenie aplikacji node.js w osobnych domenach, gdzie katalogi i pliki .htaccess są odseparowane

Jeżeli pojawia się problem z zatrzymaniem/usunięciem, należy najpierw zatrzymać dla niej procesy. Procesy można zatrzymać z poziomu ssh/htop poleceniem kill. Uwaga: Przed usunięciem aplikacji nie należy usuwać plików Node.js oraz pliku .htaccess. Jeżeli dojdzie do takiej operacji, należy użyć opcji Destroy z poziomu Edycji aplikacji

Jeżeli pojawia się komunikat o błędnej ścieżce, należy zatrzymać aplikację i dokonać edycji. Kiedy błąd dalej się pojawia, a aplikacji nie można zatrzymać, konieczne będzie zatrzymanie procesu z poziomu ssh/htop poleceniem kill

Instalacja Node.js – inne sposoby

Serwer Node.js można zainstalować samodzielnie. Wymagany będzie dostęp do SSH.

Metoda 1 – Archiwum binarne
1. Logujemy się na danego użytkownika i następnie:
cd $HOME
2. Pobieramy plik Node.js z oficjalnej strony. Wersję dobieramy do danego projektu.
wget https://nodejs.org/dist/v18.13.0/node-v18.13.0-linux-x64.tar.xz
3. Należy pobrany plik, rozpakować go oraz przekopiować jego zawartość do konta:
tar -xvf node-v18.13.0-linux-x64.tar.xz
cp -a node-v18.13.0-linux-x64/{bin,lib,include,share} $HOME/
4. npm powinien być już dostępny, sprawdzamy wersje
npm -v
node -v
5. W przypadku braku dostępności należy ponownie ustawić linki symboliczne:
unlink npm
unlink npx
ln -s $HOME/node-v18.13.0-linux-x64/lib/node_modules/npm/bin/npm-cli.js npm
ln -s $HOME/node-v18.13.0-linux-x64/lib/node_modules/npm/bin/npx-cli.js npx


Metoda 2 – NVS
NVS jest wieloplatformowym narzędziem do przełączania się między różnymi wersjami Node.js. Następujące polecenia podajemy kolejno z poziomu SSH z katalogu domowego użytkownika:
export NVS_HOME="$HOME/.nvs"
git clone https://github.com/jasongin/nvs "$NVS_HOME"
"$NVS_HOME/nvs.sh" install

uruchomienie-aplikacji-node-js-na-usludze-hostingowej
>
Magdalena Pietraszek