Я покупаю 2 выделенных сервера (один для живого хостинга, один для тестовой среды).
Четыре вопроса:
Как поддерживать синхронизацию рабочего сервера с промежуточным сервером? Цель состоит в том, чтобы запускать синхронизацию каждый день, но я не могу позволить себе простоя, поэтому может ли промежуточное создание зеркала, но производственное, использоваться пользователями в процессе синхронизации? А как автоматизировать этот процесс, как, может быть, cron?
Мне нужно отправить файлы из стадии в производство, я предполагаю, что это делается через FTP, или как автоматизировать это также с помощью какого-либо инструмента?
Как защитить мой промежуточный сервер изнутри? У меня есть мой основной домен, например: www.example.com
Таким образом, на prod-сервере этот URL-адрес должен быть доступен всем в Интернете. На промежуточном сервере один и тот же URL-адрес должен использоваться только внутренними людьми. Я не могу использовать подкаталог, потому что у меня уже есть много поддоменов / подкаталогов как часть сайта, и я хочу сохранить точную структуру URL-адресов для надлежащего контроля качества.
Мне нужно использовать контроль версий для кода, поэтому я предполагаю, что SVN должен быть установлен на обоих серверах, и они могут быть синхронизированы, хотя я не уверен, как разделить их между средами на SVN?
Моя БД - это MySQL и MagnoDB.
Вы должны простить мои примеры, я системный администратор Windows, но те же инструменты существуют в Unix, я в этом уверен.
Как поддерживать синхронизацию рабочего сервера с промежуточным сервером?
Для HTML и периферийных файлов это просто. Просто запускайте синхронизацию каждый день в запланированное время. я использую robocopy
, но я верю rysnc
проделает ту же работу на * nix.
Цель состоит в том, чтобы запускать синхронизацию каждый день, но я не могу позволить себе простоя, поэтому может ли промежуточное создание зеркала, но производственное, использоваться пользователями в процессе синхронизации?
Как правило, не. Если вам нужно это сделать, то на самом деле вам понадобятся ДВЕ промежуточные системы. Один из них жив, а один простаивает. Вы всегда синхронизируйте с бездействующим, а затем переключите промежуточную систему на неактивную после завершения синхронизации, так что бездействующая становится активной, а старая действующая получает следующее обновление.
Конечно, это означает, что все пользователи будут отключены от системы, когда серверы поменяются ролями. Вы говорите, что они оба должны быть на ногах 100% времени, но на самом деле, можете ли вы выделить для этого одну минуту в день? Если вы сделаете это, скажем, в 3 часа ночи (или в другое спокойное время дня), то воздействие должно быть минимальным.
А как, может быть, автоматизировать этот процесс, как работу cron?
На это нет однозначного ответа. Что мы делаем с Windows и MSSQL, так это делаем robocopy
от живого до промежуточного, чтобы обновить все статические файлы, а затем выполнить резервное копирование / восстановление MSSQL через промежуточную базу данных. Все это написано по сценарию и запускается раз в неделю, в воскресенье утром в час ночи.
Мне нужно отправить файлы из стадии в производство, я предполагаю, что это делается через FTP, или как автоматизировать это также с помощью какого-либо инструмента?
Есть много-много способов сделать это. Посмотрите на этот сайт, об этом уже спрашивали раньше. rsync
вероятно, было бы лучшим способом сделать это.
Для моего промежуточного сервера, как защитить его изнутри? ... Я не могу использовать подкаталог, потому что у меня уже есть много поддоменов / подкаталогов как часть сайта, и я хочу сохранить точную структуру URL-адресов для надлежащего контроля качества.
Вам нужен разделенный DNS. DNS-серверы, на которых работают ваши пользователи QA, должны возвращать запись A, отличную от ваших общедоступных пользователей. Нет простого способа сделать это. Лично мы просто используем другое имя хоста, поэтому вместо www.example.com
внутренний DNS имеет дополнительную запись A для staging.example.com
. Запись A не доступна в Интернете, поэтому доступ к ней могут получить только люди в офисе или через VPN.
Мне нужно использовать контроль версий для кода, поэтому я предполагаю, что SVN должен быть установлен на обоих серверах, и они могут быть синхронизированы, хотя я не уверен, как разделить их между средами на SVN?
SVN - отличный способ сделать это. Когда нам нужно выполнить развертывание ТОЛЬКО на промежуточной стадии, а не в режиме реального времени, мы создаем вилку кода, а затем выполняем проверку на промежуточном сервере. Таким образом, критические обновления по-прежнему могут быть развернуты в действующей системе, когда они будут готовы, но промежуточная система тестирует не готовую к производству кодовую базу. Затем, когда мы закончили, мы снова объединяемся с основным стволом и повторно проверяем промежуточный сервер, чтобы все они снова были в одной системе.