- deploy-srv - Сервер автодеплоя
- deploy-url - Домен/url рамещения сервера автодеплоя (deploy.super.com,super.com\api\deploy)
- vcs - (github, gitlab, bitbucket ...)
Предварительно регистрируем git webhook на deploy-url в вашем vcs
- Программист делает git push
- vcs дергает хук который в свою очередь обращается к POST deploy-url
- deploy-srv получает запрос с секретным ключом(проверяем его), смотрит на req.body.refи если заначение равноrefs/heads/masterвызывает скрипт деплоя приложеня
- Корневая директория приложения /var/www/super-app/
- Директория для API /var/www/super-app/api-repo
- Директория для клиента (front-end) /var/www/super-app/client-repo
В корневую директорию клонируем репозитории API и клиента. Настраиваем скрипты автодеплоя в соотвествии с этими папками.
https://github.com/zmts/autodeploy-node
Небольшой самописный node.js сервер при обращении к которому запускается процесс деплоя ваших приложений.
super-api.pm2-config.json for typical api
{
  "name" : "super-api",
  "script": "/var/www/super-site/api-repo/bin/www", // initial script path
  "instances": 1,
  "max_memory_restart": "1000M",
  "interpreter_args": "--max-old-space-size=1024",
  "env_production": {
    "NODE_ENV": "production"
  }
}
ssr.pm2-config.json for Nuxt.js SSR
{
  "name" : "my-nuxt-ssr",
  "script": "npm",
  "args": "run start",
  "interpreter_args": "--max-old-space-size=1024",
  "instances": 1,
  "max_memory_restart": "1000M",
  "env_production": {
    "NODE_ENV": "production",
    "NUXT_HOST": "localhost",
    "NUXT_PORT": 7000
  }
}
"max_memory_restart": "1000M" // is working
"max_memory_restart": "1G" // is not working
Стартуем приложение не от рутового юзера sudo -Hu not_root_user pm2 restart super-api.pm2-config.json --env production
Переменные окружения выносим в .env файл
HOST = 'localhost'
PROTOCOL = 'http'
PORT = 4000
SOME_API_KEY = 'key-4959b5b46fbf1f506ec5c407ba5883ad'
ADMIN_EMAIL = '[email protected]'
https://coderrocketfuel.com/article/deploy-a-nodejs-application-to-digital-ocean-with-https motdotla/dotenv#229