- 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