Деплой (deploy) приложения NodeJS + Express + MySQL на сервер VPS

На примере хостинга Beget, с использованием Git bash или PowerShell

1. Регистрация аккаунта и создание нового сервера

  1. Регистрация аккаунта и создание нового сервера не представляют особой сложности. Одновременно с созданием сервера установить предлагаемую версию операционной системы (я установил сборку LEMP (Linux, Nginx, MySQL, PHP)).
  2. Установить Git bash (если не хотите пользоваться PowerShell).

[свернуть]
2. Подключение к серверу через SSH

Внимание! В примерах подключение под root (с правами суперпользователя), но лучше создать нового пользователя (например, user) и работать под ним!

  1. Запустить Git bash (или PowerShell).
  2. Выполнить команду ssh root@IP_server, где IP_server - внешний IP созданного вами сервера.
  3. Если в системе отсутствуют SSH-ключи, то необходимо их сгенерировать на локальной машине (подробнее...) и затем разместить в файле /root/.ssh/authorized_keys.

Для получения ключа rsa вашего сервера наберите в Git bash команду (где server_ip - IP-адрес вашего сервера, например 192.168.2.1):

$ ssh-keyscan -t rsa server_ip

Пример ответа:

# server_ip SSH-2.0-OpenSSH_4.3
server_ip ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAwH5EXZG...

Затем скопируйте всю строку ответа (ssh-rsa AAAAB3NzaC1yc2EAAAABIwA...) и добавьте этот ключ в конец файла ~/.ssh/known_hosts (в папке пользователя на локальном компьютере).

[свернуть]
Команды перезапуска сервисов Nginx, MySQL, PHP-FPM

Используйте следующие команды для перезапуска сервисов:

  • Nginx: systemctl restart nginx
  • MySQL: systemctl restart mysql.service
  • PHP-FPM: systemctl restart php8.1-fpm.service

[свернуть]

Обновление и установка дополнительных приложений (модулей)

Для выполнения команд с учетом привилегий суперпользователя необходимо использовать sudo.

  1. Обновить операционную систему (у меня Ubuntu): 
    1. sudo apt-get update 
    2. sudo apt-get dist-upgrade
  2. Установить Midnight Commander или mc - аналог Norton Commander и FAR Manager, обладает всеми традиционными возможностями типичного двухпанельного файлового менеджера:
    • apt install mc
  3. Установить сервер nginx (установится в папку /etc/nginx) (LEMP его уже содержит):
    • sudo apt-get install nginx
  4. Установить NodeJS:
    • sudo apt-get update 
    • sudo apt-get install nodejs
    • node -v (проверить версию)
  5. Установить npm:
    • sudo apt-get install npm
    • npm -v (проверить версию)
  6. Установить менеджер процессов Node.js pm2:
    • npm install pm2@latest -g

[свернуть]

Проверка работы nginx

  1. Отредактировать файл default в папке /etc/nginx/sites-available. Например, для простейшего сайта, состоящего из одного html-файла index.html в папке /home/TEST:
  2. Проверить валидность файла default командой nginx -t (при необходимости исправить ошибки).
  3. Перезагрузить сервер nginx:
    • sudo service nginx restart

Подробнее о настройке читай https://nginx.org/ru и смотри https://www.youtube.com (примерно с 15:40).

[свернуть]
Установка базы данных MySQL (LEMP ее уже содержит)

  1. Установить базу данных MySQL:
    • sudo apt-get install mysql-server
    • mysql (проверить установку)
  2. Для просмотра пользователей БД MySQL:
    • select user, authentication_string, plugin, host from mysql.user;
  3. Создать новую базу данных:
    • create database db_name;
    • show databases; (проверить создание базы данных)
  4. Создать нового пользователя и передать ему root-права (подробнее...):
    • create user 'user_name'@'localhost' identified by 'user_password';
    • select user from mysql.user; (проверяем создание)
    • grant all privileges on db_name.* to 'user_name'@'localhost'; (назначаем привилегии)
    • flush privileges; (перезагружаем таблицы назначения привилегий)
    • проверить создание пользователя командой п. 2
  5. Выйти из mysql (exit) и в новом окне Git bash создать SSH-туннель (если необходимо подключаться с локального компьютера):
    • ssh -L33060:localhost:3306 -n user_name@IP_server

[свернуть]
Деплой (deploy) приложения на NodeJS + Express + MySQL

  1. На сервере перейти в папку /home
  2. Скачать в папку /home с github.com приложение:
    • git clone https://github.com/git_login/project_name.git
  3. Отредактировать файл default в папке /etc/nginx/sites-available так, чтобы он перенаправлял на папку проекта и прослушивал (проксировал) нужный порт, например:
  4. В командной строке перейти в папку приложения и запустить исполняемый файл приложения (у меня это server.js):
    • node server.js
  5. В браузере 
  6. Отредактировать параметры подключения к базе данных в приложении.

[свернуть]

Установка SSL-сертификата (Nginx + Ubuntu)

Установить certbot (мануал) для автоматического обновления сертификатов Let'sEncrypt.

  1. установить snapd :
    • sudo apt update
    • sudo apt install snapd
  2. Убедиться, что ваша версия snapd обновлена:
    • sudo snap install core
  3. Удалить certbot-auto и любые пакеты ОС Certbot:
    • sudo apt-get remove certbot
  4. Установить certbot:
    • sudo snap install --classic certbot
  5. Подготовить команду certbot:
    • sudo ln -s /snap/bin/certbot /usr/bin/certbot
  6. Подключить сертификаты через nginx:
    • sudo certbot --nginx
  7. Проверить доступ на сайт по https.

[свернуть]

Добавить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.