В основном мне интересно, какой сервер настраивается чаще всего в веб-компании. В компании, над которой я работаю, сейчас есть 1 сервер со всеми сайтами наших клиентов. Иногда мы работаем локально и загружаем, но в 9 случаях из 10 мы разрабатываем на самом живом сервере. Это не идеально и вызывает всевозможные проблемы, не говоря уже о том, что затрудняет поиск проблем (из-за того, что журналы забиты ошибками отладки и т. Д.).
Я много слышал о людях, у которых есть производственные серверы, промежуточные серверы и серверы разработки, и я думал, что это будет путь.
Я думаю, что установка такова:
Производственный сервер - На это ходят только живые сайты. Ни у кого нет доступа к FTP, кроме администратора сервера. phpSuExec установлен, поэтому каждый сайт работает как собственный пользователь. Сервер сильно оптимизирован. Все лишние порты отключены и т. Д.
Промежуточный сервер - клон рабочего сервера, без phpSuExec, но с ограниченным доступом.
Сервер разработки - Внутренний сервер, которым пользуются все сотрудники. Нет ограничений FTP, можно установить программное обеспечение для повышения производительности, такое как SASS, xdebug, и иметь менее строгие правила безопасности и т. Д.
Тогда рабочий процесс будет следующим: все работают на сервере разработки. Когда сайт должен быть просмотрен клиентом или протестирован в производственной среде, он перемещается на промежуточный сервер. Если есть проблемы, вернитесь на сервер разработки, исправьте проблемы и вернитесь на промежуточный сервер. Затем, когда все проблемы будут устранены и клиент будет доволен, мы перемещаем сайт на рабочий сервер.
Мне были бы интересны любые советы / подводные камни вышеуказанной системы и то, как это делают другие компании.
Все серверы LAMP, под управлением Ubuntu
Трехуровневая установка очень распространена по очевидным причинам.
Я рекомендую внести некоторые изменения в то, что вы уже перечислили:
Ваш промежуточный сервер должен быть точный копия производственной среды.
Это имеет огромное преимущество в том, что поэтапное -> производственное развертывание происходит максимально плавно и без ошибок, и поскольку такое развертывание может включать простои, Вы хотите это.
Тем не менее, фактический доступ к промежуточной среде может быть менее ограничен, чем в производственной среде, просто для того, чтобы DEV и QA / UA также могли получить доступ для устранения неполадок.
Вы можете захотеть ограничить это доступом только для чтения, чтобы проверить конфигурацию и прочитать файлы журнала, но это может сэкономить время в долгосрочной перспективе; обычно это зависит от того, как вы используете эти среды.
Если магазин достаточно большой, и у вас есть отдельные отделы разработки и контроля качества, то непременно следует также полностью отделить промежуточную среду от разработки; в крупных магазинах обычно есть совершенно отдельные команда выпуска который отвечает именно за этот этап развертывания.
Я согласен с @adaptr и добавляю, что каждый разработчик должен использовать свою собственную среду для разработки и проверять изменения в контроле исходного кода. Это не дает им возможности вмешиваться друг в друга и не позволяет одному разработчику сломать сервер и лишить всех работы на день. «Сервер разработки» должен публиковаться автоматически из этих отметок и будет служить средой интеграции для всех изменений.