Вопрос или проблема
Сейчас у меня работает несколько виртуальных машин с Ubuntu. Это развивалось со временем. У меня есть несколько машин, которые предоставляют два сайта с apache, один сайт с apache, один сайт с nginx и несколько сайтов с nginx. Было очень удобно использовать Portainer и Nginx Proxy Manager.
Я хочу изменить это на один веб-сервер, который будет запускать все сайты. Поскольку это просто проектные сайты, которые работают около 2-4 лет, это изменяется и не используется слишком много ресурсов. Есть ли лучший способ сделать это или это правильный путь?
В будущем я хотел бы предоставлять каждому, кто хочет веб-сайт, немного пространства и одну учетную запись FTP. Нет проблемы в том, чтобы использовать одну и ту же версию PHP, но также я был бы тем, кто обновляет сайт, следит за сертификатами и так далее.
Цель состоит в том, чтобы мне было легко предоставить кому-то веб-пространство (для WordPress, самописных сайтов и т. д.) и упростить для себя обслуживание.
Ответ или решение
Если вы хотите оптимизировать управление множеством сайтов на разных ВМ и упрощённо администрировать их, то идеальный подход предусматривает централизованную и масштабируемую архитектуру. Объединим ваши сайты на одну веб-VM, управляя ими через единую точку. Давайте рассмотрим шаги и лучшие практики, которые помогут достичь этого.
F – Фундамент: Определение требований
На первом этапе необходимо чётко определить требования к вашей веб-инфраструктуре. Вам важно учесть следующие моменты:
-
Производительность и масштабируемость. Поскольку ваши сайты несут лишь учебную нагрузку, текущей производительности одного сервера должно хватить. Тем не менее, рекомендуется предвидеть рост нагрузки и предусмотреть возможность горизонтального масштабирования, например, с помощью контейнеризации.
-
Администрирование и обновление. Наличие одного веб-сервера облегчает управление обновлениями. Использование автоматизированных систем, таких как Ansible для управления конфигурациями, поможет поддерживать сервер в актуальном состоянии.
O – Оптимизация: Выбор инструментов
Для того чтобы сделать инфраструктуру управляемой и легкодоступной, следует использовать подходящие инструменты:
-
Контейнеризация с Docker. Перемещение всех ваших сайтов в Docker-контейнеры облегчит их развертывание и поддержку. Используйте Docker Compose для управления множеством контейнеров одновременно.
-
Объединение прокси. Nginx или Traefik можно использовать как обратный прокси-сервер для маршрутизации трафика к соответствующим контейнерам, что обеспечит поддержку SSL-сертификатов и улучшит безопасность соединений.
R – Решения: Обеспечить гибкость
Рекомендуемая конфигурация и инструменты:
- VM один веб-сервер. Все сайты управляются на едином сервере. Это снижает затраты на ресурсы и упрощает управление.
- Nginx Proxy Manager или Traefik для управления маршрутизацией трафика и сертификатами SSL, что избавляет от ручного администрирования каждого сайта.
E – Эффективность: Процесс развертывания
Создайте простой и эффективный процесс развертывания новых веб-пространств:
-
Скрипты автоматизации. Используйте скрипты для автоматического создания нового веб-пространства (папки), настройки сервера и подключения SSL.
-
FTP-доступ. Для пользователей лучше создать автоматизированные процессы предоставления доступа: авто-гипернастройки FTP и создание учётных записей через API.
S – Поддержка: Обеспечение безопасности и актуальности
Не забывайте о безопасности и своевременном обновлении:
-
Регулярные обновления. Систематическое обновление PHP и серверного ПО — это необходимость для обеспечения устойчивости и безопасности.
-
Мониторинг и сохранение данных. Используйте инструменты вроде Prometheus и Grafana для мониторинга производительности и сетевой активности, а также создавайте резервные копии данных.
T – Трансформация: Гибкость на будущее
Переход на централизованную архитектуру с использованием решений для автоматизации, контейнеризации и упрощения администрирования не только соответствует сегодняшним задачам, но и обеспечивает гибкость для любых будущих изменений. Это облегчит работу вам, позволяя сосредоточиться на развитии проектов без перегрузок по необходимости управлять инфраструктурой вручную.
Таким образом, данная стратегия позволяет достичь высокой степени автономности и управляемости вашей IT-инфраструктуры, что соответствует поставленным задачам и требованиям.