October 18

Гайд по Ubuntu серверам и запуску Node JS софтов

Статья написана с прицелом на запуск консольных скриптов, которые не требуют использование графического интерфейса в обычном понимании этого слова. Имейте в виду: для запуска программ, типа BAS / ADS RPA автоматизации и других подобных вещей, данный гайд не подходит!

Оглавление:

🖥️Выбор и покупка сервера

Для запуска консольных скриптов не требуется много мощностей. Подойдут даже самые дешевые серверы, но лучше всегда делать запас по мощности. Примерная цена подобных виртуальных серверов ~5$ :

  • Операционная система: Ubuntu Server 22.04 - золотой стандарт. Минусов, на мой взгляд, нет - одни плюсы
  • Процессор(CPU/vCPU): 2 ядра
  • Оперативная память(RAM): 4гб
  • SSD накопитель: от 20гб. Объём зависит от количества скриптов, которые вы собрались поставить

Где купить? Оплата криптой: xorek.cloud | pq.hosting

Остановимся на xorek.cloud. Ниже пошагово продемонстрировал процесс:

1. Переходим в "Мой аккаунт"

2. Откройте левое меню и выберите "Виртуальные серверы"

3. Нажимаем "Заказать"

4. Выбираем интересующий нас сервер и нажимаем кнопку заказать. Я остановил свой выбор на DE-R9-4

5. Выбираем операционную систему Ubuntu 22.04, соглашаемся с правилами предоставления услуг и оплачиваем заказ

После оплаты, ждём некоторое время, пока хостер установит для вас сервер

Когда ваш сервер будет готов, на почту придёт информация для авторизации на сервере. Информация имеет такой вид:

Нас интересуют несколько параметров:

IP, Порт, Логин и Пароль. Если в письме не указан Порт для подключения, значит он является стандартным: 22

На этом работа с сайтом хостера окончена, переходим к подключению

💻SSH-клиенты

Все взаимодействия с удалённым сервером, осуществляются путём подключения через SSH туннель. Для подключения к SSH туннелю используются SSH-клиенты.

SSH-клиенты — это программы, которые позволяют пользователям безопасно подключаться к удалённым компьютерам через сеть с использованием протокола SSH (Secure Shell). SSH обеспечивает зашифрованное соединение между клиентом и сервером, защищая данные от перехвата или изменения.

Что бы подключится к нашему удалённому серверу, нам необходимо использовать консоль нашей операционной системы или же, воспользоваться одной из программ, представленных ниже:

MobaXterm - на мой взгляд, лучшее решение для бытовых задач. Встроенный файловый менеджер, возможность подключаться к удалённым рабочим столам, сохранение сессий и паролей, индикаторы параметров сервера [Отображает загруженность процессора, оперативной памяти, показывает свободное место на диске]. Не требует регистрации, бесплатной версии хватает с головой. Только для Windows!

Termius - модный, стильный, молодёжный кросс-платформенный SSH-клиент. Встроенный SFTP модуль обмена файлами, сохранение сессий и паролей. Поддержка Windows, macOS, Linux, Android и iOS.

PuTTY - Популярный SSH-клиент для Windows, поддерживает SSH, SCP, SFTP, а также другие сетевые протоколы.

OpenSSH — Один из наиболее распространённых SSH-клиентов. Он предустановлен в большинстве Unix-подобных операционных систем (например, Linux, macOS).

Так же, стоит упомянуть удобный файловый менеджер FileZilla, который работает непосредственно с файлами и осуществляет их обмен между вашим пк и сервером. Поддержка Windows, Linux, macOS.

Что бы гайд был максимально универсальным, остановимся на Termius. Проходим регистрацию, скачиваем установщик и устанавливаем программу.

🔐Подключение к серверу

Выбираем раздел Host и нажимаем New Host

Укажите ip сервера и название сессии

Промотайте вниз, укажите данные от аккаунта и SSH порт, если он отличается от 22. Нажмите Connect

Нажмите Add and continue, что бы сессия сохранилась в клиенте

Готово! Мы подключились к серверу

⚙️Предварительная настройка сервера

Для запуска софтов, нам необходимо предварительно установить среду Node JS и дополнительный утилиты, которые, в дальнейшем, облегчат нам жизнь.

Я заранее упаковал всё необходимое в один скрипт, который облегчит установку. Скопируйте команду и запустите на своём сервере:

wget https://tekkaido.com/files/node_server_init.sh && sudo chmod +x node_server_init.sh && ./node_server_init.sh

Данная команда автоматически проверит и установит все обновления для Unbuntu Server 22.04, а так же установит Node JS, Unzip, Screen, Nano и PM2.

Если во время установки появляется розовое окно - нажимаем Enter и продолжаем установку

Если сервер никак не реагирует на Enter, то нажмите сочетание клавиш Ctrl + C или CMD + C. Стрелкой вверх, на клавиатуре, выберите и запустите команду установки заново.

Завершение установки:

Теперь пройдёмся по каждой утилите более подробно

📜Утилиты для работы на сервере

- Node JS и утилита NPM

Среда для запуска Java Script кода

- Unzip

Утилита для распаковки zip-архивов

- Screen

Утилита для работы с окнами сервера. Запуск скриптов в фоновом режиме

- Nano

Текстовый редактор внутри окна терминала

- PM2

Удобный менеджер процессов для Java Script. Альтернатива для запуска скриптов в фоновом режиме и отслеживания их состояния. Автоматическое логирование всех процессов, снепшот процессов и автозапуск при перезагрузке сервера

⚡Полезные команды

Что бы освоится и ориентироваться в Ubuntu системе, ниже приведу ряд команд, для взаимодействия с файловой системой и скриптами:

Системные команды:

ls -1 - выведет в консоль список содержимого внутри папки, где сейчас находится пользователь. 1 означает вывести один файл/папку в ряд
  cd имя_папки - перейти в указанную папку
cd ../ - вернёт вас на 1 папку назад
mkdir имя_папки - создаст папку с нужным названием
rm имя_файла - удалит указанный файл
rm -rf имя_папки - удалит указанную папку
cp -r имя_папки ./путь_до_новой_папки/новое_имя_папки - скопировать папку с другим названием или в другую деректорию
cp имя_файл новое_имя_файла - скопировать файл с другим названием или в другую деректорию
mv имя_файл новое_имя_файла - изменить название файла

Nano - текстовый редактор:

nano имя_файла.расширение - открыть файл в текстовом редакторе или создать новый текстовый файл с необходимым расширением

Управление внутри редактора осуществляется посредством стрелок.

Сохранить файл: Ctrl + O или CMD + O, далее указываем название файла и нажимаем Enter

Закрыть редактор: Ctrl + X или CMD + X, если изменения не сохранены, вам предложат это сделать

Screen - диспетчер фоновых окон


Данная утилита помогает запускать софт в фоновом режиме. Если запустить код напрямую из главного окна, то при закрытии терминала - работа кода остановится

screen -S название_окна - создаст новое окно, которое будет работать в фоновом режиме
screen -r название_существующего_окна - откроет окно, которое уже работает в фоновом режиме
screen -list покажет все окна, которые были созданы
screen -S номер_окна -X quit - удалит существующее окно

Внутри окна нажмите сочетание клавиш Ctrl+A+D или CMD+A+D, что бы выйти из него в главное окно терминала

PM2 - процесс менеджер для Java Script кода

Подходит для скриптов, где нету меню, т.к. внутри pm2 отсутствует возможность управления

pm2 start code.js - запустить код через процесс менеджер
pm2 stop имя_процесса - остановить выполнение кода
pm2 restart имя_процесса - перезапустить процесс
pm2 delete имя_процесса - удалить процесс из менеджера
pm2 monit - показать окно с информацией о всех процессах
pm2 save - сохранить снепшот всех запущенных процессов
pm2 startup - запустит все процессы после перезапуска системы, которые были сохранены в снепшоте

Unzip - распаковщик zip архивов

unzip имя_архива.zip имя_папки_куда_распаковать

🚀Запуск софта

В данном гайде, в качестве примера будет приведён запуск софта для NotPixel, как через Screen, так и через PM2

Создадим папку soft, где будут хранится все наши софты

Запуск через Screen

Переходим в папку soft и создаём новый screen с названием notpixel

После того, как вы нажмёте Enter, то консоль отчистится - значит вы внутри нового окна

Загрузим софт командой, которая указана в приватке, в посте с обновлением

После успешной загрузки и установки, можем запускать софт и проводить остальные манипуляции

После запуска скрипта, выходим из screen`а, сочетанием клавиш Ctrl+A+D или CMD+A+D. Софт будет работать в фоновом режиме.

Вернутся к окну screen -r notpixel

Запуск через PM2

Переходим в папку soft и запускаем команду, которая указана в приватке в посте с обновлением

Выполняем настройку софта, добавляем аккаунты, после всех манипуляций - выходим из софта

Заходим в папку NotPixel

Переименовываем файл pm2startup.cjs в ecosystem.config.cjs, если файл ещё не переименовали

mv pm2startup.cjs ecosystem.config.cjs

Выполняем команду

pm2 start ecosystem.config.cjs && pm2 monit

Выйти из мониторинга можно сочетанием клавиш Ctrl+C или CMD+C

pm2 monit - вернутся к мониторингу

Все логи софта доступны по пути /root/.pm2/logs/

Дополнительная информация о работе PM2: https://pm2.keymetrics.io/docs/usage/quick-start/