Развертывание приложения CakePHP


Мне интересно узнать, как люди развертывают свои приложения CakePHP. Недавно ко мне обратились с просьбой заняться разработкой CakePHP для фрилансеров, что было бы хорошей возможностью для меня получить некоторый опыт на уровне презентаций (в моей работе FT я занимаюсь разработкой Java EE на уровнях бизнеса и настойчивости).

На данный момент мои мысли немного дезорганизованы, но я рассматриваю следующие сценарии:

  • Разработчик, работающий в Среда IDE изменяет файл, который автоматически (в фоновом режиме) синхронизируется с веб-сервером разработки, работающим локально. Этот сценарий - то, как я в идеале хотел бы заниматься разработкой... вносить изменения и иметь возможность видеть изменения в действии без каких-либо дополнительных шагов.

  • Разработчик, работающий в среде IDE, изменяет файл, который автоматически (в фоновом режиме) синхронизируется по FTP с веб-сервером разработки, работающим удаленно. Этот сценарий был бы полезен, когда я путешествую, используя мой нетбук (который запускает мою IDE достаточно медленно, так как в нем нет веб-сервера).

  • Администратор развертывает последнюю версию приложения CakePHP из репозитория исходного кода на локально работающий веб-сервер.
  • Администратор развертывает последнюю версию приложения CakePHP из хранилища исходного кода на веб-сервер по FTP.
  • Администратор развертывает более старую версию приложения CakePHP из хранилища исходного кода на веб-сервер, работающий под управлением в местном масштабе.
  • Администратор развертывает более старую версию приложения CakePHP из хранилища исходного кода на веб-сервер по FTP.

Инструменты разработки, которые мне больше всего нравятся, - это Eclipse, Ant и Subversion. Я предпочитаю продолжать их использовать, но я бы подумал о переключении, если это облегчит реализацию сценариев.

Вопросы:

  • Являются ли эти разумные сценарии, или мне нужно подумать о развитии и развертывание по-другому?
  • Какие существуют инструменты, которые могут помочь упростить разработку/развертывание? Было бы лучше, если бы я запустил свое собственное решение с помощью Ant, скриптов и т. Д.?
  • Как мы решаем проблемы с базой данных во время развертывания? Как задаются свойства подключения к базе данных для конкретного развертывания? Что делать, если обновление до более новой версии (или возврат к более старой версии) приложения CakePHP требует изменения схемы базы данных и переноса данных?
  • Как настраиваем ли мы свойства, которые различаются в разных развертываниях? Например, рассмотрите возможность увеличения уровней отладки и ведения журнала, используемых во время разработки, предотвращения отправки платежей на платежные шлюзы во время разработки и т.д.
  • Как обновление или возврат развертывания влияют на клиентов? Например, что, если они находятся в середине транзакции (например, покупка продукта)?
  • Как мы обрабатываем различные типы установки CakePHP? Файлы, возможно, потребуется установить в разных расположения в зависимости от типа установки. Как мы можем узнать, где должны быть установлены файлы? Книга CakePHP описывает разработку, производство и передовые установки.

Извините за так много вопросов в одном посте, но я думаю, что все вопросы связаны, и подумал, что было бы полезно сохранить обсуждение в одном месте.

Author: erturne, 2010-01-01

1 answers

Являются ли эти сценарии разумными, или мне нужно думать о разработке и развертывании по-другому?

Кажется разумным, хотя синхронизация FTP заставляет меня думать о Dreamweaver. :)

Рассмотрите возможность использования интегрированной среды разработки, которая позволяет подключаться к серверу по FTP, или используйте одно из следующих средств...

Какие существуют инструменты, которые могут помочь упростить разработку/развертывание? Было бы лучше для меня свернуть свое собственное решение с помощью Ant, скриптов и т. Д.?

Дженкинс, Капистрано, Финг, Муравей, git push/pull, rsync, и т.д.

Как мы решаем проблемы с базой данных во время развертывания? Как задаются свойства подключения к базе данных для конкретного развертывания? Что делать, если обновление до более новой версии (или возврат к более старой версии) приложения CakePHP требует изменения схемы базы данных и переноса данных?

Используйте cake schema generate и cake schema run update.

Как мы настраиваем свойства, которые различаются в разных развертываниях? Например, рассмотрите возможность увеличения уровней отладки и ведения журнала, используемых во время разработки, предотвращения отправки платежей на платежные шлюзы во время разработки и т.д.

Назовите файлы, которые соответственно отличаются (т.Е. core.php.prd против core.php.dev), и переименуйте при установке.

Как обновление или возврат развертывания влияют на клиентов? Например, что, если они находятся в середине транзакции (например, покупка продукта)?

Чтобы файлы вашего приложения не оказались в несогласованном состоянии, вам следует начать с извлечения новой копии приложения в новую папку. Скопируйте все файлы, отправленные пользователем, переименуйте файлы *.prd, а затем замените старую копию новой копией (переименовав или используя символические ссылки). Сеансы должны храниться где-то, что переживет обновление (т. Е. php или database, а не cake).

Как мы обрабатываем различные CakePHP типы установки? Файлы могут потребоваться установить в разных местах в зависимости от типа установки. Как мы можем узнать, где должны быть установлены файлы? Книга CakePHP описывает разработку, производство и передовые установки.

Установка разработки так же безопасна, как и любое PHP-приложение, которое использует файлы .htaccess для перенаправления запросов (люди не увидят ваш код, если вы не удалите/неправильно настроите mod_rewrite и PHP). Производственная установка немного сложнее если только вы не можете редактировать корни документов ваших виртуальных хостов. Расширенная установка позволяет устанавливать Cake в любом месте файловой системы, но добавляет больше сложности (поскольку ваши файлы находятся в двух разных местах, но могут находиться в одном репозитории)

 12
Author: deizel, 2013-09-13 13:04:31