# Środowisko produkcyjne - SSR
# NVM
Na serwerze niezbędny jest Node.js, dlatego dobrym rozwiązaniem jest użycie NVM (opens new window) (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.7zastąp aktualną wersją skryptu.
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
lub
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.
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ę:
nvm -v
# Node.js
- Sprawdzenie dostępnych wersji Node'a:
nvm ls-remote
- Wybieramy interesująca nas wersję (najlepiej LTS) oraz instalujemy poleceniem:
nvm install 18
# PM2
PM2 (opens new window) 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
npm install pm2@latest -g
- utworzenie pliku konfiguracyjnego w katalogu projektu (ecosystem.config.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 starttak aby się nie powtarzałuruchomienie serwera (uruchamiamy polecenie w katalogu projektu)
pm2 start ecosystem.config.js
- zapisanie listy procesów do automatycznego uruchamiania
pm2 save
- ustawienie automatycznego uruchamiania procesów, więcej można przeczytać tutaj (opens new window)
pm2 startup
# Apache
# .htaccess
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/