Как правильно содержать несколько сайтов на одном сервере?
Привет! Меня зовут Андрей.
Я занимаюсь веб-разработкой, но знаний в серверной части немного. У меня есть VPS сервер на котором в процессе разработки хостятся различные сайты. Получается есть:
- Папки с сайтами.
- Единая БД.
На выходе имеем проблемы в виде:
- В адресах сайтов порты по типу dev.site.com:2421
- Установлена куча разного софта
Хотелось бы делать все через докер.
В идеале так, что на каждый сайт есть свой docker-compose, в котором все нужное уже есть и чтобы было изолировано.
Я и сейчас могу так сделать, но каждый сайт и каждую его составляющую нужно придумывать свои рандомные порты, чтобы они не пересекались:
- php dev.site.com:2341
- bd dev.dite.com:1234
- redis dev.site.com:5422
и т.д.
Это бесит.
Подскажите, пожалуйста:
- Как можно решить проблему портов? Жить можно и с ними, но кажется это не серьезно. Пользую nginx на базовом уровне.
- Это вообще нормальная структура, когда каждый сайт отдельно со своей бд и прочими сервисами в отдельном каталоге? Или правильнее делать иначе? Например, БД запускать одну для всех и раздавать доступы.
Возможно вообще какие-то другие подходы применяются, я не прав и вообще нужно под каждый сайт отдельный сервер заводить.
Для докер сети можно nginx ещё упаковать который будет маршрутизацию делать по именам хостов внутри докерной сети, кажется даже это плюс к безопасности схемы
Используйте nginx как reverse proxy либо на самом хосте VDS, либо например через https://github.com/nginx-proxy/nginx-proxy
Тогда порты будут стандартные для всех сайтов - 80 и 433
У проектов бывают слишком разные требования. В LAMP не все укладываются.
Чем костыли придумывать чтобы что-то работало из докера, а что-то без - лучше какой-то единый подход.
Sanes, что-то работает на одной версии php, что-то на другой. Базы данных разных типов. Что-то на питоне. Что-то требует сборок через NPM, который так же может отличаться версией и т.д.
И все это нужно ставить на сервер, стараясь не создать конфигов. Ручками.
Докер все же поэффективнее в плане рутинных трудозатрат.
AndersDir,
разные версии PHP без всяких докеров работают. Докер не для этого.
Если хотите получить более или менее нормальную ОС, то делать надо на LXD, а лучше на контейнерах Virtuozzo.