Веб-разработка с использованием Sphinx на виртуальной машине для общих и выделенных серверов
Фон
Я занимаюсь разработкой веб-приложения со стандартным стеком LAMP. Я новичок в веб-разработке и первоначально планировал просто передать свой код по FTP (после его завершения) моему хостинг-провайдеру (в настоящее время BlueHost, но может измениться в будущем).
Поиск сфинкса
Недавно я решил добавить функцию расширенного поиска на свой сайт с помощью поиска Sphinx. Очевидно, это означало, что мне пришлось установить Sphinx на мою машину для разработки. Когда придет время запустить сайт, мне придется установить (через ssh) Sphinx на свой рабочий сервер. Это может потребовать много времени для отладки тонких различий в разработке и производственных установках Sphinx (и остальной среды в этом отношении).
Я еще учусь
Я наткнулся на виртуальные машины, и похоже (поправьте меня, если я ошибаюсь), некоторые разработчики создают виртуальные машины для каждого проекта и загружают виртуальную машину на свой рабочий сервер. Это избавляет их от необходимости отлаживать свой код после его загрузки на рабочий сервер, что увеличивает вероятность успеха.
Вопрос
У меня такой вопрос: имеет ли смысл разрабатывать на виртуальной машине и пытаться загрузить ее на свой рабочий сервер после завершения разработки приложения? Если да, то может ли это быть сделано для общих серверов или только для выделенных серверов? Если нет, не могли бы вы объяснить, что, по вашему мнению, является лучшим способом решения потенциальной проблемы различий между вашими серверами разработки и производственными серверами.
2 ответа
Большинство общих серверов имеют очень ограниченные разрешения. Некоторые могут даже не позволить вам запустить sphinx, не говоря уже о экземпляре виртуальной машины на вашем сервере.
Обычный процесс состоит в том, что у вас есть 3 сервера / среды (в идеале 4 было бы неплохо).
Сервер разработки - это ваша локальная рабочая машина и вы на этой машине. Это может быть в совершенно другой среде, чем ваш рабочий сервер.
Промежуточный сервер - в идеале этот сервер должен быть идентичной копией вашего живого сервера. Этот сервер обычно содержит нестабильную версию вашего приложения со всеми последними коммитами. Наличие вашего промежуточного сервера как можно ближе (с точки зрения системы) к вашему производственному серверу поможет вам выявить и решить проблемы в среде, прежде чем они возникнут, чтобы вас ослепить на рабочем сервере.
Рабочий сервер - это ваш живой сервер. Если у вас есть стабильная версия на промежуточном сервере, вы просто развернете базу кода на своем действующем сервере. Это то место, где ваши рабочие и промежуточные серверы, идентичные друг другу, помогают, так как вам не нужно беспокоиться о разнице в окружающей среде.
Кроме того, у вас может быть зеркало рабочего сервера для устранения любых проблем, связанных с окружающей средой / данными.
Если вы работаете на общем сервере, лучше всего, если в вашем веб-приложении настроены два домена. Имейте что-то вроде http://beta.webapp.com/ на своем сервере и используйте его в качестве промежуточного сервера.
Я не могу комментировать виртуальные машины, я не использовал их в производственной системе, как вы описываете, но я думаю, это будет то же самое.
ДжонП покрыл много земли. Я бы добавил, что вы можете взглянуть на VirtualBox. Это бесплатно и работает очень хорошо по моему опыту. Это должно позволить вам запускать виртуальную машину, настроенную так, как вы захотите, например, точно так же, как ваш хост развертывания.