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

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

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

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

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

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

Средствами разработки, которыми я являюсь самым довольным, является Eclipse, Муравей и Подрывная деятельность. Мое предпочтение состоит в том, чтобы продолжить использовать их, но я рассмотрел бы переключение, если выполнение так помогает достигнуть сценариев.

Вопросы:

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

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

16
задан erturne 1 January 2010 в 17:29
поделиться

1 ответ

Будучи ленивым, я не проверяю это, но не должна эта работа

private int FindClosest(IEnumerable<int> numbers, int x)
{
    return
        numbers.Aggregate((r,n) => Math.Abs(r-x) > Math.Abs(n-x) ? n
                                 : Math.Abs(r-x) < Math.Abs(n-x) ? r
                                 : r < x ? n : r);
}
-121--3853861-
def func(*args): 
    pass

Когда вы определяете функцию этого пути, * args будет массив аргументов, переданных функции. Это позволяет вашей функции работать, не зная заранее, сколько аргументов будет передано ей.

Вы делаете это и с аргументами ключевых слов, используя * * kwargs :

def func2(**kwargs): 
    pass

См.: Произвольные списки аргументов


В вашем случае вы определили класс, который действует как словарь. Метод dict.pop определяется как pop (клавиша [, по умолчанию]) .

Метод не использует параметр default . Однако определение метода с помощью * args и передача * args в dict.pop () позволяет вызывающему абоненту использовать параметр default .

Другими словами, можно использовать метод pop класса, например dict.pop :

my_a = a()
value1 = my_a.pop('key1')       # throw an exception if key1 isn't in the dict
value2 = my_a.pop('key2', None) # return None if key2 isn't in the dict
-121--832277-

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

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

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

Какие инструменты могут упростить разработку/развертывание? Лучше бы мне свернуть свое собственное решение с Ant, скрипты и т.д.?

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

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

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

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

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

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

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

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

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

12
ответ дан 30 November 2019 в 23:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: