Инструкция по настройке и запуску сервера на Ubuntu для приложений, написанных на Node.js. Инструкция также описывает настройку Nginx и Let's Encrypt.
{REPO_URL}
– URL нужного репозитория из GitHub.
{DIRNAME}
– директория, в которой будет располагаться проект.
{REPO_NAME}
– директория, созданная внутри {DIRNAME}
. Называется так же, как и репозиторий.
{APP_NAME}
– название приложения.
{DOMAIN}
– домен приложения.
{WWW.DOMAIN}
– домен приложения с www.
{PORT_NUMBER}
– порт, который прослушивается приложением в файле index.js
или index.ts
.
sudo apt update
– загрузить обновления пакетов Linux.sudo apt upgrade
– установить загруженные обновления Linux.curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
– установить nvm manager.source ~/.bashrc
– вернуться к чтению bash.nvm
– проверить установку.nvm install node
– установка Node.js.mkdir {DIRNAME}
– создать папку, в которой будет храниться проект и его файлы/cd projects
– перейти в папку проекта.git clone {REPO_URL}
– клонирование репозитория.cd {REPO_NAME}
– перейти в папку с репозиторием.npm install
– установка зависимостей.npm start
– запуск приложения и проверка.ctrl+c
– нажать дважды, чтобы остановить приложение.npm install pm2 -g
– глобальная установкаpm2
(отвечает за автоматизацию и стабильность работы приложения).pm2 start index.js --name {APP_NAME}
– программа для запуска нашего приложения.pm2 startup
– программа для запуска нашего приложения в случае перезагрузки линукса.pm2 save
– программа для сохранения конфигурации pm2.
Включение файрвола
sudo ufw status
– проверить наличие файрвола.sudo ufw enable
– включить файрвол, если он выключен.sudo ufw app list
– список доступных сервисов для работы с файрволом.sudo ufw allow ssh
– включение ssh.sudo ufw allow http
– включение http.sudo ufw allow https
– включение https.sudo ufw reload
– перезапуск файрвола для обновления настроек.
Настройка Nginx
sudo apt install nginx
– установка nginx.cd /etc/nginx/sites-available/
– список доступных сайтов.ls
– должно быть «default».cat default
– просмотреть содержимое файла «default» (важно, чтобы там не было пусто).cd
– вернуться в корневую директорию.nano /etc/nginx/sites-available/{APP_NAME}
– создание конфигурации в отдельном файле с помощью редактора Nano. В конфигурации можно указать любое кол-во доменов.
Конфигурация:
server {
listen 80;
server_name {DOMAIN} {WWW.DOMAIN};
location / {
proxy_pass http://localhost:{PORT_NUMBER};
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
Продолжение настройки Nginx
nginx -t
– должно показать две строки. В конце первой: ok, в конце второй: successful.ln -s /etc/nginx/sites-available/{APP_NAME} /etc/nginx/sites-enabled/{APP_NAME}
– скопировать созданный сервер в папку sites-enabled с именем{APP_NAME}
.nginx -t
– должно показать две строки. В конце первой: ok, в конце второй: successful.sudo service nginx restart
– перезапуск Nginx.sudo service nginx status
– в строке Active должно быть написано зелёным цветом active (running).
Установка SSL
curl -o- https://raw.githubusercontent.com/vinyll/certbot-install/master/install.sh | bash
– установка certbot от Let’s Encrypt.certbot --version
– проверить версию certbot (чтобы убедиться, что он действительно установился).sudo certbot --nginx -d {DOMAIN} -d {WWW.DOMAIN}
– добавляем столько доменов, сколько нужно.
———Конец———
Полезные команды
pm2 restart {NAME}
– перезапуск приложения после обновления (чтобы сбросить кэш).git stash
– «сохранение» текущей версии проекта локально перед командойgit pull
.git pull {REPO-URL}
– получить обновление приложения из GitHub.