Как запустить одну версию веб-приложения при разработке следующей версии? - PullRequest
5 голосов
/ 09 марта 2009

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

Ответы [ 4 ]

7 голосов
/ 09 марта 2009

1) Отдельные URL-адреса www.yoursite.com против test.yoursite.com. вы также можете сделать www.yoursite.com и www.yoursite.com/development и т. д. Вы также можете создать / beta или /staging..

2) Храните отдельные базы данных, одну для производства и одну для разработки. Напишите скрипт, который будет копировать вашу действующую базу данных в базу данных разработчика. Держите одну базу данных для каждого типа сайта, который вы создаете. (Возможно, вы захотите создать бета-версию или промежуточную базу данных для своего тестировщика). Сделайте свою собственную работу в базе данных dev. Если вы измените структуру базы данных, сохраните изменения в виде файла .sql, который можно загрузить и запустить в базе данных действующего сайта при включении этих изменений.

3) Объединение функций с вашими различными сайтами с контролем версий. В настоящее время я играю с настройкой Subversion для веб-приложений, в которой есть моя стабильная (транк), одна для подготовки и одна для разработки. Теги разработки + ветки объединяются в промежуточные, а затем промежуточные теги / ветви объединяются в стабильные. Контроль версий позволит вам управлять вашим исходным кодом любым удобным для вас способом. Вам нужно будет найти методологию, которая работает для вас, и использовать ее.

4) Рассмотрите возможность автоматизации сборки. Он автоматически опубликует ваш сайт для вас. Взгляните на http://ant.apache.org/. Это может привести к автоматической проверке вашего кода и загрузке его на каждый конкретный сайт, если вам нужно.

5) Игрушка месяца: Существует утилита под названием cUrl , которую вы можете найти ценной. Это многое делает из командной строки. Это может быть хорошо для вас, если вы не хотите использовать все или часть Ant.

Удачи!

2 голосов
/ 09 марта 2009

У Jas Panesar лучший ответ, если вы спрашиваете об этом с точки зрения разработки, конечно. То есть, если вы просто спрашиваете, как легко сохранить ваши новые разработки отдельно от сайта, который уже запущен. Однако, если ваш вопрос на самом деле спрашивал, как запустить обе версии одновременно, то вот мои два цента.

Ваша настройка во многом связана с этим, но я всегда рекомендую сначала запускать веб-серверы на основе процессов. То есть не использовать многопоточные серверы (менее подходящие для этого вопроса) и не встраивать в веб-сервер (то есть не использовать mod_python, который является важной частью здесь). Итак, у вас есть один или несколько процессов, получающих HTTP-запросы от вашего веб-сервера (Apache, Nginx, Lighttpd и т. Д.). Теперь, когда вы хотите попробовать что-то вживую, не влияя на ваш обычный работающий сайт, вы можете запустить процесс, обслуживающий запросы, которые никогда не получают обычные запросы на него, как другие. То есть обычные пользователи этого не видят.

Вы можете настроить поддомен, который указывает на этот домен, и вы можете установить промежуточное ПО, которое перенаправляет «специального» пользователя на бета-версию. Это позволяет вам развертывать новые функции для одних пользователей, но не для других.

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

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

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

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

Тем не менее, это ваше первое веб-приложение? Вы можете, вероятно, сломать это. Вероятно, у вас мало пользователей :-) Но это здорово, что вы даже задаете этот вопрос. Многие «профессионалы» справедливо об этом спрашивают, и даже тогда меньшее количество отвечает на них.

2 голосов
/ 09 марта 2009

Обычно вы используете контроль версий и имеете два домена: your-site.com и test.your-site.com. Тогда your-site.com всегда будет обновляться до версии trunk, которая является текущей последней версией доставки. Вы бы занялись разработкой в ​​ветке trunk, и test.your-site.com обновился бы до этого. Затем вы периодически сливаете изменения из ветки разработки в транк.

0 голосов
/ 09 марта 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...