Развертывание приложения CakePHP
Мне интересно узнать, как люди развертывают свои приложения CakePHP. Недавно ко мне обратились с просьбой заняться разработкой CakePHP для фрилансеров, что было бы хорошей возможностью для меня получить некоторый опыт на уровне презентаций (в моей работе FT я занимаюсь разработкой Java EE на уровнях бизнеса и настойчивости).
На данный момент мои мысли немного дезорганизованы, но я рассматриваю следующие сценарии:
Разработчик, работающий в Среда IDE изменяет файл, который автоматически (в фоновом режиме) синхронизируется с веб-сервером разработки, работающим локально. Этот сценарий - то, как я в идеале хотел бы заниматься разработкой... вносить изменения и иметь возможность видеть изменения в действии без каких-либо дополнительных шагов.
Разработчик, работающий в среде IDE, изменяет файл, который автоматически (в фоновом режиме) синхронизируется по FTP с веб-сервером разработки, работающим удаленно. Этот сценарий был бы полезен, когда я путешествую, используя мой нетбук (который запускает мою IDE достаточно медленно, так как в нем нет веб-сервера).
- Администратор развертывает последнюю версию приложения CakePHP из репозитория исходного кода на локально работающий веб-сервер.
- Администратор развертывает последнюю версию приложения CakePHP из хранилища исходного кода на веб-сервер по FTP.
- Администратор развертывает более старую версию приложения CakePHP из хранилища исходного кода на веб-сервер, работающий под управлением в местном масштабе.
- Администратор развертывает более старую версию приложения CakePHP из хранилища исходного кода на веб-сервер по FTP.
Инструменты разработки, которые мне больше всего нравятся, - это Eclipse, Ant и Subversion. Я предпочитаю продолжать их использовать, но я бы подумал о переключении, если это облегчит реализацию сценариев.
Вопросы:
- Являются ли эти разумные сценарии, или мне нужно подумать о развитии и развертывание по-другому?
- Какие существуют инструменты, которые могут помочь упростить разработку/развертывание? Было бы лучше, если бы я запустил свое собственное решение с помощью Ant, скриптов и т. Д.?
- Как мы решаем проблемы с базой данных во время развертывания? Как задаются свойства подключения к базе данных для конкретного развертывания? Что делать, если обновление до более новой версии (или возврат к более старой версии) приложения CakePHP требует изменения схемы базы данных и переноса данных?
- Как настраиваем ли мы свойства, которые различаются в разных развертываниях? Например, рассмотрите возможность увеличения уровней отладки и ведения журнала, используемых во время разработки, предотвращения отправки платежей на платежные шлюзы во время разработки и т.д.
- Как обновление или возврат развертывания влияют на клиентов? Например, что, если они находятся в середине транзакции (например, покупка продукта)?
- Как мы обрабатываем различные типы установки CakePHP? Файлы, возможно, потребуется установить в разных расположения в зависимости от типа установки. Как мы можем узнать, где должны быть установлены файлы? Книга CakePHP описывает разработку, производство и передовые установки.
Извините за так много вопросов в одном посте, но я думаю, что все вопросы связаны, и подумал, что было бы полезно сохранить обсуждение в одном месте.
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 в любом месте файловой системы, но добавляет больше сложности (поскольку ваши файлы находятся в двух разных местах, но могут находиться в одном репозитории)