Как правильно организовывать работу нескольких приложений на 1 VDS?
Развернул 2 приложения на 1 VDS (на разных портах). При развертывании приложений задался вопросом имеет ли смысл создавать отдельного пользователя на отдельное приложение?
Конечно, думаю что с точки безопасности - это вроде как имеет смысл, а с точки зрения производительности? Будет ли система потреблять больше ресурсов или ничего не изменится?
И надо ли создавать для каждого приложения отдельно виртуальное окружение? Может, иметь только 1 общее, просто пути прописать для каждого приложения?
Да, понимаю, что виртуальное окружение работает как песочница - чисто под нужды проекта, но если несколько проектов могут работать на 1 виртуальном окружении - это же какая экономия места на диске...
Кто как решает эти вопросы?
Ответы (2 шт):
я не хочу агитировать Вас за очевидное, но я бы поместил каждое приложение в отдельный докер - контейнер, а перед ними поставил бы nginx, который по именам "разруливает", на какой из контейнеров "кинуть коннект".
А всё это описал в одном докер-композе.
Премущества:
Все приложения работают на стандартных портах, разница - только имени. Например, app1.mydomain.ru и app2.mydomain.ru
во вторых, у Вас есть строгая изоляция. даже не на уровне виртуальных окрежений, а на гораздо более "изолированном" уровне докер-контейнеров.
Предположим, вы встали не с той ноги и переписали одно из приложений на Go. Нет проблем! в виде контейнера оно установится на Ваш хостинг точно так же.
Экономия места тут работает так: если мы "наследуемся" от одного образа - то место занимают только "различия".
Ну, и наконец, это "очень протоптанная дорога": сейчас так делают примерно все и примерно всё. :-) Это означает, что советов - надают!
Создание различных пользователей и/или различных виртуальных окружений зависит от схожести стеков самих приложений.
Из личного опыта, я не создаю различных пользователей для приложений, но точно создаю раздельные виртуальные окружения.
С приложениями работаю через screen, утилита позволяет работать с "окнами" терминала.
sudo apt install screen
Чтобы создать окно используется флаг -S
screen -S some_screen_name
После чего ты окажешься в "отдельном" окне терминала, там же ты можешь работать с конкретным приложением.
Чтобы выйти обратно нужно нажать ctrl + A и потом D
Чтобы перейти в уже созданное окно, используется флаг -r
screen -r some_screen_name
Таким образом можно создать несколько необходимых папок с виртуальными окружениями и комфортно с ними работать через screen.
Если ты решишь делать отдельных пользователей, то screen будет так же удобен.