Организация и деплой веб приложений на сервере ubuntu?
Я в девопсе новичок, почитал много статей. Как навести на сервере порядок, когда хостишь веб приложения?
Вот что выделил для себя, подскажите, что забыл или что неверно понял.
Если у вас завалялась исчерпывающая дока по моей задаче, поделитесь пожалуйста.
Мой список охватывает в тч базовые моменты по безопасности.
Дано:
1. сервер на ubuntu
2. домен (app.ru)
3. веб-приложения на разных стеках (один на nodjs+mongo, второй на php+mysql и тд)
надо:
корректная работа веб-приложений со своими доменами 3 уровня (site.app.ru, api.app.ru, welcome.app.ru)
автоматическая или полуавтоматическая сборка приложений при пуше в мастер на гитхабе/гитлабе (то есть без загрузки новой версии через ftp=)) )
мой план действий:
1. к root отключаем доступ по паролю делаем только по ssh. и в дальнейшем root используется только для создания новых юзеров и изменений конфигов, не более
2. для каждого веб-приложения создаем своего юзера. юзеров называем по домену, чтобы было удобнее ориентироваться: site.app.ru, api.app.ru, welcome.app.ru
3. привязываем каждого юзера к домену (пока не понял как это нужно сделать)
3. на каждом юзере уже устанавливаем нужное ПО - nodejs, php, mysql, mongo и тд. плюс в том, что у разных юзеров могут быть разные версии ПО
4. устанавливаем гит и изменениях вручную обновляем код и деплоим: git pull, yarn install, yarn build, yarn start
Лучше повесить докер и в нем сервисы держать — поможет поднимать/убивать без аффекта на весь сервер
Юзера лучше одного, внутри докер-контейнеров все само будет резовлиться
По части деплоя: пушите в гит
Далее смотря какая система, если гитлаб, то на сервере нужно поставить гитлаб-агент, через который будете деплоить, если гитхаб — можно через GithubActions и плагины
Удобно поставить деплоер какой-нибудь, с помощью которого будете таски на сервере запускать удаленно с хоста (в нашем случае из среды CI/CD), например capistrano, или deployer на php (простой, но им даже Баду пользуется)
Отдельно рассмотрел бы вам что-то облачное, чтобы не админить руками сервер, например Хероку или Digital Ocean, они поддерживают простой деплой изнутри хостинга, просто направляя на репозиторий и при обновлении они сами подтянут изменения и перезапустят корректно контейнеры
Забудь про рута. Заходи админным пользователем, для повышения привелегий есть sudo.
Надо разные стеки для разных приложений? Поздравляю - тебе нужен докер. Приложения билдятся в отдельные контейнеры по мере деплоя кода в гит, прилетел мердж в мастер-ветку - и поехала CI/CD, собирать контейнеры и выкатывать их на сервер.