Подтвердить что ты не робот

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

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

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

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

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

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

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

Вопросы:

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

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

4b9b3361

Ответ 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 в любом месте файловой системы, но добавляет больше сложности (поскольку ваши файлы размещаются в двух отдельных местах, но могут находиться в одном репо)