Должен ли я сделать мой репозиторий DocumentRoot для моего сайта? - PullRequest
5 голосов
/ 23 февраля 2012

Я установил Mercurial на моем сервере, но мне неясно, как все должно быть.Я ищу больше примеров различных настроек, но, возможно, я использую неправильные ключевые слова.Прямо сейчас, это будет только горстка разработчиков, и я не уверен, должен ли я просто сделать репо как DocumentRoot.Я действительно не знаю, какие вопросы задавать, так как это для меня ново, но я был бы признателен, если бы кто-то мог дать некоторые знания и рекомендации.У меня сейчас есть несколько вопросов: как мне настроить свои серверы и репозитории?Должен ли я установить отдельный VirtualHost для тестового клона, прежде чем запустить его?Все будет полезно!Заранее спасибо!

Ответы [ 3 ]

2 голосов
/ 23 февраля 2012

У меня нет Ответ , чтобы дать вам, так как многие переменные и потребности влияют на рабочий процесс, но вот несколько ссылок, чтобы вы начали:

  1. http://www.zdnetasia.com/a-development-workflow-for-mercurial-62204755.htm
  2. https://www.mercurial -scm.org / вики / Workflows
  3. http://www.webdevelopment.nicholastuck.com/tools/one-project-one-repository-mercurial-used-right/

Я также рекомендую вам прочитать это превосходное введение Mercurial: http://hginit.com/

В SO также можно найти различные вопросы о рабочих процессах с Mercurial, например, взглянуть на боковые панели справа.

Если у вас возникнет более конкретный вопрос, не стесняйтесь спрашивать снова!

2 голосов
/ 23 февраля 2012

Вероятно, нет причин делать это.Я бы держал их отдельно, но настраивал автоматизированный процесс (либо пользовательский сценарий, либо непрерывная интеграция (CI)) для развертывания из Mercurial на сайт с помощью одной команды.При желании вы можете сделать каждый запуск триггера развертыванием.

РЕДАКТИРОВАТЬ: При непрерывной интеграции ответственность за развертывание лежит на сервере CI.Если вы используете SSH, CI будет извлекать из hg, экспортировать, а затем загружать через SSH.Это должно решить ваши проблемы.Для сравнения серверов CI, которые поддерживают Mercurial, см. этот вопрос .

1 голос
/ 03 марта 2012

Я бы сделал ваш каталог DocumentRoot подкаталогом первого уровня вашего репозитория, и вот несколько причин, почему:

  1. Если вы используете что-то вроде Apache для управления вашим сервером, вы можете поместить другиеметаинформация, например файлы конфигурации с доступными сайтами и с включенными сайтами, в одном каталоге, поскольку они на самом деле не являются частью документов сайта.
  2. Точно так же вы можете сохранить каталог "docs" правильнорядом с кодом.
  3. Если корнем вашего хранилища является ваш DocumentRoot, при прочих равных условиях вы также обслуживаете свой каталог .hg, где находится вся история вашего хранилища, и ваш файл .hgignore, такого родавещи.Конечно, это можно исправить с помощью файла .htaccess, но проще просто иметь дочернюю папку.

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

Я запускаю на своем компьютере экземпляр VirtualBox , который выглядит как можно ближе на то, как выглядит мой развернутый сервер, по крайней мере, настолько близко, насколько я могу получить файлы конфигурации.Я бы сказал, что этот подход менее подвержен ошибкам, чем дополнительная запись VirtualHost.В зависимости от проекта, я могу сделать это идентичным минус, возможно, некоторые записи DNS, поэтому я могу установить все, чтобы указать либо на test.myproject, либо на production.myproject, и этот I всегда автоматизировать (Iиспользуйте chef , но это является излишним для меньшего проекта), чтобы его можно было тестировать, и чтобы он не шутил.Нет ничего хуже, чем запускать дымовые тесты, которые стирают вашу базу данных - и конфигурация случайно указывает на вашу базу данных.Запуск виртуальной машины позволяет безболезненно тестировать обновления в среде или ОС вашего сервера, а также можно обнулить и восстановить снимок, если вы хотите перейти к более раннему состоянию конфигурации машины.

Если вы действительнохотите запретить доступ разработчиков SSH к вашим компьютерам - и IMO, это плохая идея, потому что, если у вас есть проблемы на рабочем сервере, вы помешали своим разработчикам диагностировать или исправить - тогда я думаюЛучше всего использовать что-то вроде hudson , который представляет собой среду непрерывной интеграции.Вы предоставляете ssh доступ только пользователю Hudson для запуска сценария развертывания, но любой (с правами доступа, установленными в Hudson) может выполнить это задание.Фактически, это удобно иметь в среде, где у вас есть, например, некоторые сотрудники по управлению продуктами, которые вы хотите иметь возможность обновлять производственный сервер, не имея возможности войти в систему. В этой версии «для бедных» используется sudo, чтобы позволитьВаши разработчики запускают команду от имени другого пользователя, который имеет , имеет доступ по SSH - и разрешает им только запускать скрипт публикации.

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

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