Skip to content

Środowisko produkcyjne - SSR ​

NVM ​

Na serwerze niezbędny jest Node.js, dlatego dobrym rozwiązaniem jest użycie NVM (Node Version Manager), który oferuje obsługę wielu wersji Node'a w jednym środowisku.

Instalacja ​

  • Instalacja lub aktualizacja odbywa się za pomocą skryptu instalacyjnego. Wartość v0.39.7 zastąp aktualną wersją skryptu.
bash
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash

lub

bash
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
  • Po instalacji należy wczytać zawartość profilu użytkownika np.
bash
source ~/.bash_profile

Lub można zresetować połączenie i ponownie się zalogować do ssh.

  • Żeby sprawdzić czy instalacja przebiegła pomyślnie można wykonać komendę:
bash
nvm -v

Node.js ​

  • Sprawdzenie dostępnych wersji Node'a:
bash
nvm ls-remote
  • Wybieramy interesująca nas wersję (najlepiej LTS) oraz instalujemy poleceniem:
bash
nvm install 18

PM2 ​

PM2 to menedżer procesów dla projektów Node.js, który pomaga w zarządzaniu aplikacjami oraz utrzymuje je online 24/7.

  • instalacja globalnie dla użytkownika poprzez npm
bash
npm install pm2@latest -g
  • utworzenie pliku konfiguracyjnego w katalogu projektu (ecosystem.config.js)
js
module.exports = {
  apps : [{
    name   : "ProjectName",
    script : "npm start",
    env: {
      PORT: "3000"
    }
  }]
}
  • jeżeli na serwerze znajduje się wiele projektów tego typu należy pamiętać o tym, że trzeba dostosować port dla procesu npm start tak aby się nie powtarzał

  • uruchomienie serwera (uruchamiamy polecenie w katalogu projektu)

bash
pm2 start ecosystem.config.js
  • zapisanie listy procesów do automatycznego uruchamiania
bash
pm2 save
  • ustawienie automatycznego uruchamiania procesów, więcej można przeczytać tutaj
bash
pm2 startup

Apache ​

.htaccess ​

apache
DirectoryIndex disabled
RewriteEngine On
RewriteRule ^$ http://localhost:NR_PORTU/ [P,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ http://localhost:NR_PORTU/$1 [P,L]

Virtual Host ​

ProxyPreserveHost On
ProxyPass / http://localhost:NR_PORTU/
ProxyPassReverse / http://localhost:NR_PORTU/

Made by Moonbite