Рубрики
Uncategorized

Как CI / CD с использованием PM2 для вашего проекта Node.js

Почему? У вас есть проект Node.js на вашем местном компьютере, но вы не знаете, как развернуть его … Теги с учебником, PM2, узлом, CICD.

У вас есть проект Node.js в вашем локальном компьютере, но вы не знаете, как развернуть его на удаленный сервер или вы используете старомодный способ, скопировав содержимое с вашего компьютера на удаленный сервер, используя FTP?

Ну, вы можете автоматизировать этот процесс и сделать свою жизнь проще, используя PM2 * Вставить HOORAY GIF здесь *

PM2 — менеджер процессов для Node.js. Это похоже на диспетчер задач в мониторе Windows и Activity в MacOS.

Вы можете Удар, но не ограничивается- Управляйте вашим приложением, масштабированием, запуском и остановкой. Но самая важная особенность, которую мы хотим, это Развертывание Отказ

В этом посте мы узнаем, как развернуть наше приложение на наш удаленный сервер и запустить/построить его с помощью одной команды консоли.

Шаг 1: Создайте проект

Во-первых, мы, очевидно, нужен проект. Мы создаем папку и CD в нее.

mkdir pm2-deploy; cd pm2-deploy

Затем мы инициализируем папку как проект узла.

npm init -y

Затем мы можем идти вперед и установить Экспресс Подавать статические файлы в среде узла.

npm i express

И нам нужно создать файл JS, чтобы написать наш код, который будет служить папке публичный Что нам также нужно создать.

Я создал index.js в корневом каталоге. Вы можете переименовать его, что вы хотите, но не забывайте, что вам нужно изменить Главная поле в package.json Файл также.

Нам также нужен HTML-файл, который будет подан в этой общей папке.

Ваша структура файлов теперь выглядит так:

Вот мой index.js

Экспресс обслуживает статическую папку с именем публичный и его содержание в порту 3000; Здесь ничего не хочет.

В index.html Мы ничего не делаем особенного.

Теперь мы можем использовать

npm start

Мы должны увидеть выходную кнопку COUSOLE.LOG, который является PM2 Project теперь Live @ localhost: 3000 Отказ

Мы можем проверить, работает ли это, идут на этот порт. Перейти к localhost: 3000 В браузере, если вы видите УРА! Замечательно.

Шаг 2: Установите PM2 глобально

Нам нужно установить пакет PM2 NPM глобально. Мы можем установить его с помощью

npm i -g pm2

Теперь на шаге 3!

Шаг 3: инициализировать Git

У нас не может быть CI/CD без системы управления версией, верно? Поэтому нам нужно подтолкнуть наш проект на Git Service. Я буду использовать GitHub для этого.

Когда вы создаете Git Reppo, вы увидите необходимые инструкции о том, как нажать существующий проект. Но вот необходимые команды, на всякий случай:

git init
git remote add origin git@github.com:/.git
git add .
git commit -m "Initial Commit"
git branch -M main
git push -u origin main

Примечание. Я настоятельно рекомендую использовать SSH-соединение вместо использования HTTPS для GitHub. Ваша жизнь станет лучше и Secureler:)

Шаг 4: Настройка удаленного машины

На этом этапе я не буду входить в детали того, как создавать/зарезервировать виртуальную удаленную машину, но имейте в виду, что я использую Ubuntu на машине EC2 (AWS).

Во-первых, нам нужно подключиться к удаленной машине, используя SSH SSH -I. path_to_key_file Remote_username @ Remote_ip

Я предполагаю, что вы уже сделали NVM, NPM установки, если нет, вы не можете пойти дальше и проверить NVM Repo здесь: https://github.com/nvm-sh/nvm#installing-and-updating

Одна важная вещь здесь. Нам нужно переместить строки, которые были добавлены NVM для нашего файла .bashrc на вершину. Ваша система может использовать .bash_profile или что-то еще. Просто обратите внимание на вывод монтажа NVM.

Это линии, которые нам нужно перемещать. Откройте свой любимый редактор и переместите их в верхнюю часть файла.

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

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

NPM Я -G PM2.

После установки

PM2 Startup

Предоставляет вам простую инструкцию о том, как сделать PM2 начать автоматически каждый раз, когда ваша удаленная система перезагружается. Я настоятельно рекомендую сделать это.

Теперь, когда мы установили PM2, нам нужно создать ключ SSH и добавить его в GitHub.

В удаленной машине вы можете идти вперед и ввести

ssh-keygen -t ed25519 -C ""

Дальше чтение о том, как создать ключ SSH https://docs.github.com/en/github/authentication-go-github/generating-a-new-ssh-key-and-Adding-it-to-the-ssh-Agent.

Keygen будет задать вам имя ключа. Если вы хотите изменить его ( Я настоятельно советую вам не делать этого ) Вы должны дать полный путь здесь.

Вы можете просто нажмите Enter, когда просим пароль.

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

cat /home/ubuntu/.ssh/id_ed25519.pub

Продолжай и скопируйте текст, который вы видите, начиная с ssh- и заканчивая вашим электронным письмом (включая).

Тогда иди к https://github.com/settings/ketys Войдите в Github, затем нажмите Новый SSH ключ кнопка. Вы можете дать название и вставить скопированный текст в поле ключевое поле.

Теперь мы дали разрешение на нашу удаленную машину для подключения к нашему GitHub. Но нам нужно подключиться к GitHub только один раз Чтобы отметить соединение, надежное в нашей удаленной машине. Для этого мы можем клонировать репозиторий в удаленную машину.

git clone git@github.com:T410/pm2-deploy.git

Конечно, это будет ваше имя пользователя и ваше имя репо. Консоль спросит вас, хотите ли вы продолжить подключение. Тип Да End HiT Enter.

Примечание: мы клонировали репо в папке пользователя./Главная/Убунту для меня. Теперь полный путь проекта — /home/ubuntu/pm2 - развертывание Отказ Мы будем использовать этот путь для обновления Ecosystem.config.js Файл на следующем шаге.

И теперь мы хорошо закрываем удаленное подключение к серверу.

Шаг 5: Настройка файла ECOSYSTEM.config.js

Теперь, когда у нас есть удаленный сервер и запущенный и запущенный и запустил проект в наш репозиторий, нам нужно правильно настроить Ecosystem.config.js Файл, чтобы сказать PM2, где наш проект, что делать с этим, и где толкать это.

Файл будет выглядеть так:

Обратите внимание, что есть 2 раздела, которые мы экспортируем:

  • Программы
  • развертывать

Имя поле в приложения Раздел — это имя нашего проекта, который будет показан в списке процессов PM2.

Сценарий Поле — это скрипт, который PM2 будет работать, когда мы развертываем проект на удаленный сервер. В этом случае он будет таким же, как Главная поле в package.json файл.

Остальные поля довольно неясно.

  • Пользователь Имя пользователя, которое вы используете для подключения к удаленному серверу, используя SSH
  • хозяин это IP удаленного сервера
  • путь Где вы хотите, чтобы ваш проект был развернут на вашем удаленном сервере? Помните, что мы уже клонировали репо на наш удаленный сервер. Мы можем идти вперед и написать этот путь здесь
  • репо Является ли репозиторий URL в формате, как Git: github.com:/user/repo.git
  • Ref это эталонная ветвь. Какая ветвь мы хотим, чтобы удаленный сервер тянуть
  • ключ это Локальный путь ключа, который мы используем для подключения нашей машины с использованием SSH
  • «Пост-развертывание» принимает команды, которые будут запускаться на Удаленная машина После потянув репо из Github

Шаг 6: Развертывание

Мы настроили нашу машину и PM2. Теперь мы можем развернуть наш проект на удаленный компьютер.

Перед развертыванием нам нужно совершить и продвигать изменения, которые мы сделали. После этого, для первого запуска, нам нужно сказать PM2, что ему необходимо настроить проект.

pm2 deploy ecosystem.config.js production setup

С помощью этой команды PM2 подключается к удаленному, клонирует репо из GitHub. Теперь мы можем развернуть проект.

pm2 deploy ecosystem.config.js production

Ура!

Теперь вы спрашиваете себя: теперь что? Ну, мы не настроили сервер, как Nginx, но мы можем проверить, работает ли проект или нет с скручивание . Конечно, нам нужно подключиться к удаленной машине, прежде чем делать это.

curl http://localhost:3000

Если вы видите вывод index.html на экране, это отличные новости! Вы сделали это!

А также вы можете перечислить приложения PM2, работающие с этой командой

pm2 ls

Мы добились больших успехов здесь. Мы узнали, как развернуть наш проект только с одной командой.

Вот образец репо:

T410/PM2-развертывание

Это выборки проекта, который демонстрирует, как настроить Ecosystem.config.js Файл для PM2, сделанный для этого учебника https://dev.to/t410/how-to-ci-cd-using-pm2-for-your-node-js-project-404f.

Я знаю, что не сказал вам, как установить nginx и обслуживать порт, который мы используем для нашего проекта Но я определенно сделаю это в ближайшее время и обновить здесь.

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

Оригинал: «https://dev.to/t410/how-to-ci-cd-using-pm2-for-your-node-js-project-404f»