У вас есть проект 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»