Процесс обновления живого сайта - PullRequest
5 голосов
/ 21 августа 2011

Каков наилучший процесс обновления живого сайта?

Я вижу, что на многих веб-сайтах (например, StackOverflow) есть предупреждения о том, что заранее будет время простоя для обслуживания. Как это обычно закодировано? Есть ли у них значение конфигурации, которое определяет, отображать ли такое сообщение в заголовке сайта?

Кроме того, что вы делаете, если ваш локальный хост отличается от производственного сервера, и вам необходимо убедиться, что все работает так же, как после передачи? В моем случае я настроил файл development.mydomain.com (требуется аутентификация .htaccess), который имеет свою собственную базу данных и, по сути, является моей конечной областью подготовки перед загрузкой всего на рабочий сайт. Это хороший подход к постановке?

Наконец, простая загрузка SFTP - путь? Я читал немного о некоторых более сложных методах, таких как использование серверных перехватчиков в Git. Не уверен, как это работает точно, или это тот подход, который я должен использовать.

Большое спасибо за просветление ..

babonk

Ответы [ 3 ]

2 голосов
/ 21 августа 2011

Это (приблизительно), как это делается в Google App Engine:

Каждый раз, когда вы развертываете приложение, оно связывается с поддоменом в соответствии с его версией:

version-1-0.example.com

version-1-1.example.com

, в то время как example.com связано с одной из версий.

Когда у вас есть новая версия серверного программного обеспечения, вы развертываете ее на version-2-0.example.com, и, когда вы уверены, что она запущена, вы ассоциируете example.com с ней.

Я не знаю деталей, потому что Google App Engine делает это для меня, я просто установил текущую версию.

Кроме того, когда у SO или другого большого сайта время простоя, скорее всего это проблема аппаратного обеспечения, а не программного обеспечения.

0 голосов
/ 21 августа 2011

С PHP (и Apache, я полагаю) это намного проще, чем с некоторыми другими настройками (например, с необходимостью перезапуска процессов). В идеале у вас должна быть система, которая знает, как передавать только измененные файлы (например, rsync).

Я использую Springloops (http://www.springloops.com/v2/) для размещения моего git-репозитория и автоматического развертывания по [S /] FTP. Если у вас нет тысяч файлов, развертывание выглядит почти мгновенным.

Если вы действительно хотите, вы можете иметь файл .htaccess (или эквивалентный) для перенаправления на страницу «на обслуживании» во время развертывания. Если вы не усредняете по крайней мере несколько запросов в секунду (или это иное критически важно), вам может даже не понадобиться этот шаг (не оптимизируйте преждевременно!).

Если бы это был я, у меня был бы файл .htacess, содержащий инструкции по перенаправлению, и я настроил бы его на перенаправление только в часы вашего обслуживания. Если у вас нет предстоящего развертывания, переименуйте файл в «.htaccess.bak» или что-то в этом роде. Затем в вашем PHP-скрипте:

<?php if (file_exists('/path/to/.htaccess')) : ?>
<h1 class="maintenance">Our site will be down for maintenance...</h1>
<?php endif; ?>

Затем, чтобы ДЕЙСТВИТЕЛЬНО проявить фантазию, настройте ловушку Springloops перед развертыванием, чтобы убедиться, что перенаправление обслуживания настроено, и ловушку после развертывания, чтобы вернуть ее обратно в случае успеха.

Просто некоторые мысли.

-Landon

0 голосов
/ 21 августа 2011

Это действительно будет зависеть от вашего сайта и платформы / технологии для вашего сайта. Для простого веб-сайта вы просто обновляете файлы с помощью FTP или, если сервер доступен локально, вы просто копируете новые файлы. Если ваш веб-сайт размещен в каком-либо облачном сервисе, вы должны выполнить любые действия, которые они вам предлагают, потому что облачный хостинг обычно не дает вам прямого доступа к файлам. Для сложных веб-сайтов, имеющих внутреннюю базу данных, нередко каждый раз, когда вы обновляете код, вам также необходимо обновить свою базу данных. Чтобы убедиться, что оба обновления обновляются одновременно, вам придется отключить ваш веб-сайт. Чтобы свести к минимуму время простоя, вы, вероятно, захотите иметь хорошо протестированный скрипт обновления для выполнения реальной работы. Таким образом, вы можете закрыть сайт, запустить скрипт и запустить его снова.

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