Как на выделенном сервере создать несколько dev окружений?
Всем привет!
Есть один выделенный сервер с установленной ОС Debian/Ubuntu где ни будь в selectel.
Есть 3 разработчика, нужно на этом сервере создать 3 изолированных окружения с LEMP стеком. Чтобы у каждого был свой SSH доступ, cron, nginx, php-fpm, mysql, файлы и. т.д. и чтобы они не могли вылезать за пределы своего окружения.
Подскажите, пожалуйста, в какую сторону смотреть? Какие вообще варианты бывают, простые сложные?
Anton B, разобрался, создал контейнеры, через nft пробросил порты к ssh и nginx, всё круто! НО, теперь возникла проблема как сделать так чтобы контейнеры имели статичный ip...
Anton B, что такое nft ?
lxc позволяет задавать статичные адреса, это есть в доках
создаешь и привязываешь к контейнеру сетевуху, к примеру eth0, через config device add, далее назначаешь ей адрес. команды где то были, но надо искать
Anton B, нашел, как то быстро)) я делаю вот так
lxc network attach lxdbr0 avasa-nextcloud eth0 eth0
lxc config device set avasa-nextcloud eth0 ipv4.address 10.9.25.2
В подавляющем большинстве случаев все описанные приложения умеют работать в пределах одной установки с разными пользовательскими правами (php-fpm с оговорками, при должном красноглазии можно запустить три экземпляра, настроив в локальной сети дополнительный ip адреса для каждого), пользователи linux позволяют независимые подключения по ssh (один и тот же адрес), точно так же пользователи mysql могут быть настроены для работы со своими базами данных (создание БД потребует действия от администратора, либо подготовить простенький скрипт заранее и использовать sudo)
Не надо ничего выдумывать с виртуалками. LEMP прекрасно изолируется и конфигурируется на уровне пользователя и php-fpm pool. Если требуются какие-то дополнительные ограничения, то есть Cgroup и Disk Quota.
Кстати мой вариант подразумевает shared хостинг - все на одном хосту и не слишком требовательны
2 вариант это Docker с упаковкой всего в контейнеры
3 вариант это полноценные виртуалки на KVM
ssh + Docker + Traefik, по БД можно хоть три контейнера поднять разных с mysql, или настроить доступы в рамках одного кластера.
Хотя тут можно и без докера даже обойтись тк php и nginx умеют в owner'a. в пыхе достаточно три разных пула на хосте под каждого пользователя настротить, nginx так же под пользователями у которых есть fpm pool настроить пользователя, ну а в БД итак можно разграничить доступы просто рута не давайте и усе.
Самый наипростейший вариант - три VPS, изоляция надежней некуда
Вариант посложнее - три LXC или кубика
Вариант еще посложнее - три виртуалки на KVM
Вариант самый сложный - никаких виртуалок, контейнеров, кубиков, все разводим правами и настройками конфигов - говорят, что так можно
Sanes, Есть целесообразность с точки зрения программиста. Есть целесообразность с точки зрения админа. А есть - с точки зрения бизнеса. Бизнесу может оказаться "здесь и сейчас и на один раз", тогда три виртуалки - самое быстрое решение.