Во всем проекте, включая этот файл, заменить (с учетом регистра):
- Строку
Boilerplate-Nest-12345
на название проекта в человеко-читаемом виде - Строку
boilerplatenest12345
на название проекта в gitlab - для путей в файловой системе, для ссылок и пр.
yarn
Пример создания пользователя и базы данных для проекта
- Создание пользователя и БД
su postgres -c "createuser -h postgres boilerplatenest12345_admin && createdb -h postgres boilerplatenest12345"
- Установка пароля и выдача прав
psql -U postgres -h postgres -c "alter user \"boilerplatenest12345_admin\" with encrypted password '123'; grant all privileges on database \"boilerplatenest12345\" to \"boilerplatenest12345_admin\";"
- Скопировать файл
.env.sample
в.env
- Исправить параметры по-умолчанию в файле
.env
- Сгенерировать уникальные строки и установить их для
AUTH_JWT_ACCESS_SECRET_KEY
иAUTH_JWT_REFRESH_SECRET_KEY
В src/main.ts
для конфигурации IRestAppModuleConfig
в массив cors.allowDomains
добавить домены, которые будут
иметь возможность совершать cross-origin запросы. Обычно это нужно для разработки, и указываются там домены
frontend, frontend-admin и других сервисов.
- Создать миграции
yarn cli migrate:generate
- Применить миграции
yarn cli migrate
yarn start:dev
или
yarn start:debug
- Сборка
yarn build
- Запуск
yarn start:prod
Эндпоинт для проверки работоспособности: GET /api/v1/health
(указан в Swagger'е)
Приложение может отдавать стандартные метрики NodeJS
в формате Prometheus. Метрики отдаются по адресу GET /api/v1/metrics
.
В Grafana просматривать метрики можно на NodeJS Application Dashboard
Доступ к эндпоинту защищен токеном. Для того чтобы включить отдачу метрик, необходимо добавить переменную окружения
APP_METRICS_TOKEN
с уникальной сгенерированной строкой. В дальнейшем эту же строку нужно использовать при
конфигурации Prometheus для получения метрик с приложения.
Пример конфигурации Prometheus для получения метрик, с учетом того, что Prometheus в Docker, NodeJS приложение
работает на порту 9360 в хост системе, а ключ APP_METRICS_TOKEN
равен vXsNqGs3VvGQ5eA8fDfu
:
- job_name: 'nodejs-app'
metrics_path: '/api/v1/metrics'
authorization:
credentials: 'vXsNqGs3VvGQ5eA8fDfu'
static_configs:
- targets: ['host.docker.internal:9360']
- Настроить на сервере базу данных
- Создать папку проекта, в ней папку config
- В этой папке заполнить файл
.env
нужными значениями переменных - Переименовать файл
.gitlab-ci.sample.yml
в.gitlab-ci.yml
- Файл
.gitlab-ci.yml
проверить на корректность, закомментировать перезапуск процесса PM2 - Запустить выгрузку
- Установить процесс в PM2 (см. пункт нижу)
- В файле
.gitlab-ci.yml
раскомментировать перезапуск процесса PM2
- Раскомментировать относящиеся к prod блоки в
.gitlab-ci.yml
- Откорректировать их при необходимости
- Скопировать
./ecosystem.config.sample.js
в файлecosystem.config.js
папку config на сервере - Отредактировать при необходимости
- Запустить
pm2 start ecosystem.config.js
для добавления конфига проекта в PM2 - Запустить
pm2 save
для сохранения изменений в PM2
В случае если ecosystem.config.js
уже существует, нужно конфигурацию текущего приложения добавить в этот существующий файл, в массив module.exports.apps
.
- Запустить команду для добавления конфига проекта в PM2
pm2 --name=boilerplatenest12345-nest-backend --cwd=/var/www/boilerplatenest12345 --log=/var/www/boilerplatenest12345/files/nest-backend-out.log start dist/main.js
- Запустить
pm2 save
для сохранения изменений в PM2