PHP
Исключая:
необходимо ввести:
<?php
if($x == NULL)
{
?>
<p><?= $x . ' is null' ?></p>
<?php
}
?>
(не уверенный, почему ТАК изменил № 5 на № 1 снова, но безотносительно)
Я использовал Capistrano с PHP (хотя это больше похоже на Rails, поскольку оно написано на Ruby).
Это было действительно просто использовать , но это говорит о том, что мне не пришлось сильно масштабироваться. Тем не менее, мы выполняем развертывание на различных промежуточных / производственных серверах, и многоступенчатое расширение было полезно в этих сценариях.
Однако, как и в большинстве вещей, в Ruby есть множество ловушек и «магии», которые могут сбить с толку, если вы: вы новичок в Capistrano и пытаетесь сделать с ним что-то сложное.
Что касается того, как он сравнивается с другими инструментами развертывания, я не могу комментировать. Я знаю, что мы использовали Phing, но не знаю, почему мы перешли на Capistrano.
Мы используем пинг, и он нам пригодился. Мы не используем его для упаковки, но заставить его делать то, что вы ищете, не должно быть слишком сложно. В основном мы используем его для общих задач, таких как очистка кешей, создание сайтов разработки и других задач, помогающих в разработке. Это было большим подспорьем, и, насколько я понимаю, это похоже на клон муравья, хотя, возможно, он не обладает всеми функциями, которые есть у муравья.
Если бы мне пришлось реализовать такую систему развертывания, я бы, вероятно, выбрал несколько иное решение, чем то, что вы описали выше. Вместо того, чтобы иметь код, который выполняется локально в моей системе, подключается к списку удаленных серверов и выполняет там «работу», я бы упаковал модуль средства обновления с остальной частью кода и попросил бы его получать данные обновления с моего сервера по запросу. (точнее, когда я «сказал» ему это сделать). Таким образом, у вас будет гораздо меньше забот (вам просто нужно передать обновленный код через http по запросу, а удаленный сервер сделает все остальное). Только мои 2 цента.
Если вам нравится Capistrano, но вы хотели бы, чтобы он был немного больше PHP, посмотрите Fredistrano .
Я написал автоматизированную сборку (экспорт SVN, Zend Guard кодирование и т. д.) и систему развертывания с использованием Phing один раз, и было довольно сложно использовать. Всякий раз, когда мне приходилось писать специальное задание, я чувствовал, что должен перепрыгивать через множество обручей, чтобы заставить его работать.
Итак, в наши дни я просто пишу простые сценарии bash, которые создают с проверкой SVN, кодируют, создают тег в SVN и развертывают через rsync. Он может быть низкотехнологичным, и у Phing могут быть некоторые превосходные функции, но, по крайней мере, он мне не мешает.
Я написал для этого свой собственный инструмент, похожий на rsync, потому что я работаю с очень плохим интернет-соединением в странах третьего мира и имею всевозможные сбои и нехватку соединений, так что rsync не работает .
В своей удаленной системе вы должны хотя бы написать небольшой сценарий, который выполняет резервное копирование, перед запуском миграции.
Лучше, если вы используете полностью независимую зеркальную систему на своей веб-хост-системе и включаете несколько небольших, но фундаментальных модульных тестов после миграции. Затем выполните корневое переключение, чтобы разместить обновленный веб-сайт в сети. Для этого потребуется запустить несколько интерактивных служб в режиме только для чтения во время миграции (к сожалению, эта функция реализуется не многими людьми).