Я бы посоветовал сделать вашу тестовую стратегию развертывания готовым к установке установочным скриптом, поскольку в любом случае он вам в любом случае понадобится.
Несколько советов, которые могут показаться очевидными для некоторых, но на которые стоит обратить внимание:
- Ваш файл конфигурации, сохраненный в вашей VCS, должен быть шаблоном и должен иметь имя, отличное от имени файла, который в конечном итоге будет содержать фактические настройки. Например.
config-dist.php
или config-sample.conf
или sample/config-mysql.php
или что-то в этом роде. В противном случае вы в итоге будете случайно проверять файл конфигурации конкретного сервера поверх вашего шаблона.
- При развертывании PHP ожидайте, что некоторые пользователи не смогут запускать серверные сценарии с помощью какого-либо механизма, кроме самого веб-сервера. Установщик на основе PHP практически не подлежит обсуждению.
- Вы должны включить удобный для пользователя механизм обновления, и для этого Wordpress является отличным примером проекта для подражания. PHP-скрипт может (а) загрузить последнюю сборку, (б) использовать функции ftp для обновления файлов вашего приложения и (в) выполнить скрипт обновления, который вносит соответствующие изменения в базу данных и т. Д.
- Ради всего святого, не делайте так, как [ отредактировано ], и заставляйте своих пользователей загружать и устанавливать отдельные патчи для каждого выпуска. Пусть они загрузят последний (окончательный) выпуск, который содержит все обновления на сегодняшний день и последовательно применяет правильные функции
ALTER TABLE
.
Независимо от того, развертываются ли файлы через SVN или через FTP, механизм установки / обновления должен быть одинаковым: получить последние файлы, запустить скрипт обновления. Программа обновления использует версию, указанную в сценарии PHP, и версию, указанную в БД, и использует эти знания для применения соответствующих исправлений БД по порядку. Что касается того, как сгенерировать эти патчи, здесь есть другие вопросы , к которым вы можете обратиться за дополнительной информацией.
Что касается страницы «Обслуживание», просто используйте указанную выше версию для ее запуска (сравните версию в БД с версией в коде PHP). Также полезно иметь возможность пометить сайт как «общедоступный» для публики, но сделать его видимым для администраторов (как это делает Joomla), что можно активировать с помощью флагов базы данных или файловой системы.
Что касается автоматического извлечения кода из SVN, я бы сказал, что вам лучше использовать скрипт cron или триггеры фиксации, чем встраивать его в ваше приложение, поскольку это не будет иметь отношения к конечным пользователям.