Node.js: Różnice pomiędzy wersjami
(→Restart aplikacji) |
|||
(Nie pokazano 67 wersji utworzonych przez 5 użytkowników) | |||
Linia 1: | Linia 1: | ||
− | |||
''Node.js'' to otwarte, wieloplatformowe środowisko programistyczne. | ''Node.js'' to otwarte, wieloplatformowe środowisko programistyczne. | ||
− | === Wstępna konfiguracja | + | === Wstępna konfiguracja === |
− | Do uruchomienia | + | 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 [[WWW| | + | * Została dodana [[WWW|strona WWW]] ze wskazaniem typu Node.js w wybranej przez siebie wersji. |
+ | * 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: | ||
+ | * v14.21.1 - binarki <code>node14</code> i <code>yarn14</code> | ||
+ | * v16.20.2 - binarki <code>node16</code> i <code>npm16</code> | ||
+ | * v18.20.2 (domyślna) - binarki <code>node18</code> i <code>npm18</code> | ||
+ | * v20.17 - binarki <code>node20</code> i <code>npm20</code> | ||
+ | * v22.4.1 - binarki <code>node22</code> i <code>npm22</code> | ||
+ | |||
+ | Zmiana wersji Node.js pod poleceniami node, npm, w przykładzie została ustawiona wersja v22, aby wskazać inną należy odpowiednio zmienić cyfrę przy node oraz npm: | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | mkdir -p ~/bin && ln -fs /usr/local/bin/node22 ~/bin/node && ln -fs /usr/local/bin/npm22 ~/bin/npm && source $HOME/.bash_profile | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | Aby ponownie zmienić wersję Node.js tym razem na 20 wystarczy wykonać polecenie ze zmianą cyfr: | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | mkdir -p ~/bin && ln -fs /usr/local/bin/node20 ~/bin/node && ln -fs /usr/local/bin/npm20 ~/bin/npm && source $HOME/.bash_profile | ||
+ | </syntaxhighlight> | ||
=== Projekt Node.js=== | === 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"> | + | 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: | {{Warning|Aby niektóre moduły npm skompilowały się poprawnie należy ustawić następujące zmienne: | ||
<nowiki>export C=clang | <nowiki>export C=clang | ||
− | export CXX=clang++</nowiki>}} | + | export CXX=clang++</nowiki> |
+ | a w przypadku błędu należy sprawdzić: | ||
+ | <nowiki>export CC=gcc | ||
+ | export CXX=g++</nowiki> | ||
+ | }} | ||
+ | |||
==== Przygotowanie aplikacji Node.js ==== | ==== Przygotowanie aplikacji Node.js ==== | ||
− | Nowy projekt Node.js należy utworzyć w katalogu <code class="directory"> | + | 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'); | <syntaxhighlight lang="javascript">var http = require('http'); | ||
Linia 31: | Linia 63: | ||
==== Istniejący projekt Node.js ==== | ==== Istniejący projekt Node.js ==== | ||
− | Istniejący projekt ''Node.js'' należy | + | 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 === | ||
− | Restart aplikacji ''Node.js'' można | + | 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: | ||
+ | |||
+ | 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 <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. | ||
+ | |||
+ | === 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 === | ||
+ | |||
+ | {{Warning|Nie należy usuwać katalogu logs, może to spowodować brak działania stron Node.js, Ruby, Python.}} | ||
+ | |||
+ | Logi błędów zapisują się do pliku error.log w katalogu <code class="directory">/usr/home/''login''/domains/''domena''/logs/</code>. | ||
+ | |||
+ | === 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 === | === Odnośniki zewnętrzne === | ||
Linia 41: | Linia 108: | ||
* [http://nodejs.org/ Node.js] | * [http://nodejs.org/ Node.js] | ||
* [https://www.phusionpassenger.com/ Phusion Passenger] | * [https://www.phusionpassenger.com/ Phusion Passenger] | ||
− | [[Category: | + | |
+ | [[Category:Node.js]] |
Aktualna wersja na dzień 14:52, 12 lis 2024
Node.js to otwarte, wieloplatformowe środowisko programistyczne.
Spis treści
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:
- v14.21.1 - binarki
node14
iyarn14
- v16.20.2 - binarki
node16
inpm16
- v18.20.2 (domyślna) - binarki
node18
inpm18
- v20.17 - binarki
node20
inpm20
- v22.4.1 - binarki
node22
inpm22
Zmiana wersji Node.js pod poleceniami node, 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 20 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ć 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ę.
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 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
Nie należy usuwać katalogu logs, może to spowodować brak działania stron 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 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ę.