Веб-разработка с Sphinx на виртуальной машине для общих и выделенных серверов

Фон

Я разрабатываю веб-приложение со стандартным стеком LAMP. Я новичок в веб-разработке и изначально планировал просто передать свой код по FTP (после завершения) моему хостинг-провайдеру (в настоящее время BlueHost, но может измениться в будущем).

Поиск Сфинкса

Недавно я решил добавить на свой сайт функцию расширенного поиска, основанную на поиске Sphinx. Очевидно, это означало, что мне нужно было установить Sphinx на мою машину для разработки. Когда придет время запустить сайт, мне придется установить (через ssh) Sphinx на моем рабочем сервере. Это может потребовать много времени для отладки тонких различий в установках Sphinx для разработки и производства (и остальной части среды, если на то пошло).

Я все еще учусь

Я наткнулся на виртуальные машины, и похоже (поправьте меня, если я ошибаюсь), некоторые разработчики создают виртуальные машины для каждого проекта и загружают виртуальную машину на свой рабочий сервер. Это избавляет их от необходимости отлаживать свой код после его загрузки на рабочий сервер, тем самым увеличивая вероятность успеха.

Вопрос

Мой вопрос таков: имеет ли смысл разрабатывать на виртуальной машине и пытаться загрузить ее на мой рабочий сервер, когда разработка приложения будет завершена? Если да, можно ли это обычно делать для общих серверов или только для выделенных серверов? Если нет, не могли бы вы объяснить, что вы думаете о лучшем способе решения потенциальной проблемы различий между вашим сервером разработки и рабочим сервером.


person ServAce85    schedule 21.06.2011    source источник


Ответы (2)


Большинство общих серверов имеют очень ограниченные права. Некоторые могут даже не позволить вам запустить sphinx, не говоря уже об экземпляре виртуальной машины на вашем сервере.

Обычный процесс заключается в том, что у вас есть 3 сервера/окружения (в идеале было бы неплохо 4).

  1. Сервер разработки — это ваша локальная рабочая машина и вы на этой машине. Это может быть в совершенно другой среде, чем ваш рабочий сервер.

  2. Промежуточный сервер. В идеале этот сервер должен быть идентичной копией вашего рабочего сервера. Этот сервер обычно содержит нестабильную версию вашего приложения со всеми последними коммитами. Если ваш промежуточный сервер будет как можно ближе (по системе) к вашему рабочему серверу, это поможет вам выявлять и решать проблемы среды до того, как они возникнут, чтобы ослепить вас на рабочем сервере.

  3. Рабочий сервер — это ваш рабочий сервер. Как только у вас будет стабильная версия на промежуточном сервере, вы просто развернете кодовую базу на своем рабочем сервере. Именно здесь помогает наличие идентичных производственных и промежуточных серверов, поскольку вам не нужно беспокоиться о различиях в среде, которые могут все испортить.

Кроме того, у вас может быть зеркало вашего производственного сервера для отладки любых проблем, связанных со средой/данными.

Если вы работаете на общем сервере, лучше всего настроить два домена с вашим веб-приложением. Разместите на своем сервере что-то вроде http://beta.webapp.com и используйте его в качестве промежуточного сервера.

Я не могу комментировать виртуальные машины, я не использовал их в производственной системе так, как вы описываете, но я думаю, что это будет то же самое.

person JohnP    schedule 22.06.2011
comment
Отличное объяснение, но это все еще оставляет меня с несколькими вопросами. Если вы предполагаете, что большинство веб-приложений развертываются с использованием выделенных серверов, то почему я читаю обо всех этих компаниях из списка Fortune 500, использующих услуги облачного хостинга, такие как RackSpace и облако Amazon? Я понимаю, что это для обработки по требованию/пропускной способности/и т. д., но как они дают стабильный результат без ошибок (с учетом того, что вы сказали мне выше)? Спасибо! - person ServAce85; 22.06.2011
comment
@ ServAce85 у вас все еще есть выделенный сервер, обычно это отправная точка. Оттуда вы в основном распределяете нагрузку на свои экземпляры CDN или EC2. Виртуальная машина по-прежнему является средой, поэтому они просто устанавливают те же самые среды на свои машины для разработки. Среда не будет радикально отличаться. Проблема здесь будет заключаться в том, чтобы вы дублировали среду, которую ваш хостинг-провайдер предоставляет на вашем локальном компьютере. Для других это не проблема, поскольку они используют свои собственные серверы и сами контролируют виртуальную машину. - person JohnP; 22.06.2011

JohnP покрыл много земли. Я бы добавил, что вы можете взглянуть на VirtualBox. Это бесплатно и работает очень хорошо, по моему опыту. Он должен позволить вам запустить виртуальную машину, сконфигурированную по вашему выбору, например, точно так же, как ваш хост развертывания.

person Community    schedule 22.06.2011