Развертывание приложений CakePHP
Мне интересно узнать, как люди развертывают свои приложения CakePHP. Недавно я обратился к вопросу о создании независимой разработки CakePHP, что было бы неплохой возможностью для меня получить некоторый опыт в уровне представления (в моей работе FT я занимаюсь разработкой Java EE в области бизнеса и настойчивости).
Мои мысли немного дезорганизованы на данный момент, но я рассматриваю следующие сценарии:
-
Разработчик, работающий в среде IDE, изменяет файл, который автоматически (в фоновом режиме) синхронизируется с веб-сервером разработки, работающим локально. Этот сценарий - это то, как я в идеале хотел бы сделать разработку... внести изменения и увидеть изменения в действии без каких-либо дополнительных шагов.
-
Разработчик, работающий в среде IDE, изменяет файл, который автоматически (в фоновом режиме) синхронизируется через FTP с удаленным веб-сервером разработки. Этот сценарий был бы полезен, когда я путешествую, используя мой нетбук (который медленно запускает мою среду IDE, так как он не имеет веб-сервера в миксе).
- Администратор развертывает последнюю версию приложения CakePHP из репозитория исходного кода на локальный веб-сервер.
- Администратор развертывает последнюю версию приложения CakePHP из репозитория исходного кода на веб-сервер через FTP.
- Администратор развертывает старую версию приложения CakePHP из репозитория исходного кода на локальный веб-сервер.
- Администратор развертывает старую версию приложения CakePHP из репозитория исходного кода на веб-сервер через FTP.
Наиболее эффективными инструментами разработки являются Eclipse, Ant и Subversion. Мое предпочтение заключается в том, чтобы продолжать использовать их, но я бы подумал о переключении, если это облегчает выполнение сценариев.
Вопросы:
- Являются ли эти разумные сценарии или должны ли я думать о разработке и развертывании по-другому?
- Какие существуют инструменты, которые могут помочь упростить разработку/развертывание? Было бы лучше, если бы я сделал свое собственное решение с помощью Ant, скриптов и т.д.
- Как мы обрабатываем проблемы с базами данных во время развертывания? Как задаются свойства подключения к базе данных для конкретного развертывания? Что делать, если обновление до более новой версии (или возврат к старой версии) приложения CakePHP требует изменения схемы базы данных и переноса данных?
- Как настроить свойства, которые различаются между развертываниями? Например, рассмотрите расширенные уровни отладки и регистрации, используемые во время разработки, не позволяя отправлять платежи на платежные шлюзы во время разработки и т.д.
- Как обновление или восстановление развертывания влияет на клиентов? Например, что, если они находятся в середине транзакции (например, покупка продукта)?
- Как мы обрабатываем разные типы установки CakePHP? Возможно, файлы необходимо установить в разных местах в зависимости от типа установки. Как узнать, где должны быть установлены файлы? Книга CakePHP описывает разработку, производство и расширенные установки.
Извините за столько вопросов в одном сообщении, но я думаю, что все вопросы связаны друг с другом, и подумал, что было бы полезно продолжить обсуждение в одном месте.
Ответы
Ответ 1
Являются ли эти разумные сценарии или должны ли я думать о развитии и развертывании по-другому?
Кажется разумным, хотя FTP-синхронизация заставляет меня думать о Dreamweaver.:)
Рассмотрим использование IDE, которая позволяет вам подключаться к серверу через (S) FTP или использовать одно из следующих...
Какие существуют инструменты, которые могут помочь упростить разработку/развертывание? Было бы лучше, если бы я сделал свое собственное решение с помощью Ant, скриптов и т.д.
Jenkins, Capistrano, Phing, Ant, git push/pull
, rsync
и т.д.
Как мы обрабатываем проблемы с базами данных во время развертывания? Как задаются свойства подключения к базе данных для конкретного развертывания? Что делать, если обновление до более новой версии (или возврат к старой версии) приложения CakePHP требует изменения схемы базы данных и переноса данных?
Используйте cake schema generate
и cake schema run update
.
Как мы настраиваем свойства, которые различаются между развертываниями? Например, рассмотрите увеличенные уровни отладки и регистрации, используемые во время разработки, не позволяя отправлять платежи на платежные шлюзы во время разработки и т.д.
Имена файлов, которые отличаются (т.е. core.php.prd
vs core.php.dev
) и переименовываются при установке.
Как обновление или возврат развертывания влияет на клиентов? Например, что, если они находятся в середине транзакции (например, покупка продукта)?
Таким образом, ваши файлы приложений не заканчиваются в несогласованном состоянии, вы должны начать с проверки новой копии приложения в новой папке. Скопируйте все файлы, отправленные пользователем, переименуйте *.prd
файлы, а затем переключите старую копию с новой копией (путем переименования или использования символических ссылок). Сеансы должны храниться где-нибудь, что сохранится при обновлении (т.е. php
или database
, а не cake
).
Как мы обрабатываем разные типы установки CakePHP? Возможно, файлы необходимо установить в разных местах в зависимости от типа установки. Как узнать, где должны быть установлены файлы? Книга CakePHP описывает разработку, производство и расширенные установки.
Установка для разработчиков настолько же безопасна, как любое приложение PHP, которое использует файлы .htaccess
для перенаправления запросов (люди не будут видеть ваш код, если вы не удалите/неправильно сконфигурируете mod_rewrite
и PHP). Производственная установка немного сложнее, если вы не можете редактировать корни документов ваших виртуальных хостов. Расширенная установка позволяет установить Cake в любом месте файловой системы, но добавляет больше сложности (поскольку ваши файлы размещаются в двух отдельных местах, но могут находиться в одном репо)