Git Product home page Git Product logo

boilerplate-nest's Introduction

Boilerplate-Nest-12345

Развертывание нового приложения на основе boilerplate

1. Скопировать в отдельную папку всё содержимое, кроме папки .git

2. Заменить временные строки

Во всем проекте, включая этот файл, заменить (с учетом регистра):

  1. Строку Boilerplate-Nest-12345 на название проекта в человеко-читаемом виде
  2. Строку boilerplatenest12345 на название проекта в gitlab - для путей в файловой системе, для ссылок и пр.

3. Добавить проект в новый репозиторий

4. Удалить раздел "Развертывание нового приложения на основе boilerplate" из этого README.md

Установка и настройка

1. Установка зависимостей

yarn

2. Настройка базы данных

Пример создания пользователя и базы данных для проекта

  1. Создание пользователя и БД
su postgres -c "createuser -h postgres boilerplatenest12345_admin && createdb -h postgres boilerplatenest12345"
  1. Установка пароля и выдача прав
psql -U postgres -h postgres -c "alter user \"boilerplatenest12345_admin\" with encrypted password '123'; grant all privileges on database \"boilerplatenest12345\" to \"boilerplatenest12345_admin\";"

3. Настройка окружения через файл с переменными окружения .env

  1. Скопировать файл .env.sample в .env
  2. Исправить параметры по-умолчанию в файле .env
  3. Сгенерировать уникальные строки и установить их для AUTH_JWT_ACCESS_SECRET_KEY и AUTH_JWT_REFRESH_SECRET_KEY

4. Добавить допустимые для CORS домены

В src/main.ts для конфигурации IRestAppModuleConfig в массив cors.allowDomains добавить домены, которые будут иметь возможность совершать cross-origin запросы. Обычно это нужно для разработки, и указываются там домены frontend, frontend-admin и других сервисов.

5. Запуск миграций БД

  1. Создать миграции
yarn cli migrate:generate
  1. Применить миграции
yarn cli migrate

Запуск приложения

Режим разработки

yarn start:dev

или

yarn start:debug

Режим production

  1. Сборка
yarn build
  1. Запуск
yarn start:prod

Healthcheck

Эндпоинт для проверки работоспособности: 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']

Выгрузка и запуск на сервере

Настройка выгрузки на dev

  1. Настроить на сервере базу данных
  2. Создать папку проекта, в ней папку config
  3. В этой папке заполнить файл .env нужными значениями переменных
  4. Переименовать файл .gitlab-ci.sample.yml в .gitlab-ci.yml
  5. Файл .gitlab-ci.yml проверить на корректность, закомментировать перезапуск процесса PM2
  6. Запустить выгрузку
  7. Установить процесс в PM2 (см. пункт нижу)
  8. В файле .gitlab-ci.yml раскомментировать перезапуск процесса PM2

Настройка выгрузки на prod

  1. Раскомментировать относящиеся к prod блоки в .gitlab-ci.yml
  2. Откорректировать их при необходимости

Установка на сервере в PM2

Вариант 1 (предпочтительный)

  1. Скопировать ./ecosystem.config.sample.js в файл ecosystem.config.js папку config на сервере
  2. Отредактировать при необходимости
  3. Запустить pm2 start ecosystem.config.js для добавления конфига проекта в PM2
  4. Запустить pm2 save для сохранения изменений в PM2

Вариант 2

  1. Запустить команду для добавления конфига проекта в PM2
pm2 --name=boilerplatenest12345-nest-backend --cwd=/var/www/boilerplatenest12345 --log=/var/www/boilerplatenest12345/files/nest-backend-out.log start dist/main.js
  1. Запустить pm2 save для сохранения изменений в PM2

boilerplate-nest's People

Contributors

perlexed avatar pashakart avatar coffeeeeee avatar vkoktashev avatar

Watchers

Serg avatar  avatar

Forkers

pashakart

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.