Как мне настроить среду разработки для внедрения кода в живой сайт? - PullRequest
5 голосов
/ 06 апреля 2009

В прошлом я всегда редактировал все свои сайты в прямом эфире; не очень беспокоился о том, что мои 2 посетителя увидели сообщение об ошибке.

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

Должен ли я скопировать и вставить когда-либо один файл в подпапку и отредактировать их, а затем скопировать обратно, когда я закончу? Что если в моем коде есть полные URL-адреса (они перестанут работать, если я переместлю их)? Может быть, я могу использовать некоторые .htaccess взломать, чтобы обойти это? Как насчет базы данных фиктивных тестовых данных? Должен ли я дублировать все мои таблицы MySQL и вместо этого ссылаться на них?

Я использую CakePHP для конкретного проекта, который меня беспокоит, но мне любопытно узнать, какие подходы люди используют для Cake (какие могут иметь инструменты, чтобы помочь с этим?) и без рамки.


Я получил много рекомендаций для SVN, что звучит замечательно, но, к сожалению, мой хост не поддерживает это: \

Ответы [ 5 ]

18 голосов
/ 06 апреля 2009

Лучшее, что вы можете сделать, - это создать промежуточную среду, в которой вы тестируете свои изменения. Промежуточная среда (в идеале) является полной рабочей копией вашей производственной системы. Это предотвратит многие головные боли и непреднамеренные производственные сбои.

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

5 голосов
/ 06 апреля 2009

Я бы порекомендовал поставить код вашего сайта под полный контроль версий (git или subversion). Протестируйте и сохраните исходный код на отдельном частном изолированном сервере и просто проверьте последнюю стабильную версию на производственном сайте, когда она будет готова к выпуску.

Для поддержки баз данных, даже для небольших проектов, я поддерживаю отдельные базы данных разработки и производства. Вы можете создать версию SQL, используемую для генерации и поддержки вашей схемы, а также для тестирования или загрузки данных вместе с остальной частью вашего сайта. Управляйте средой базы данных, используемой вашим сайтом, из легко разделяемого файла конфигурации и попросите свое решение по управлению версиями игнорировать его.

Абсолютные URL будут проблемой. Если вы не можете избежать их, вы всегда можете сохранить имя хоста в том же файле конфигурации и читать его по мере необходимости ... за исключением таблиц стилей и ресурсов Javascript, конечно. Моим вторым выбором для этой проблемы было бы волшебство перезаписи URL или его эквивалент на сервере разработки, а моим последним выбором было бы просто возиться с файлом /etc/hosts, когда я хотел проверить функции, которые от них зависят.

3 голосов
/ 06 апреля 2009

Я установил сервер разработки на своем ноутбуке, который максимально дублирует мой веб-сервер (программное обеспечение и конфигурация сервера, операционная система, структура файловой системы, установленное программное обеспечение и т. Д.). Таким образом, я могу написать код на своем ноутбуке и проверить это локально; как только у меня там все работает, я копирую его на сервер. Иногда возникают некоторые проблемы из-за небольших различий между двумя компьютерами, но они всегда быстро решаются (и в случае, если это не так, у меня есть сайт в репозитории SVN, поэтому я всегда могу вернуть его).

На другом веб-сайте, который я поддерживал, я использовал немного другую тактику: я обозначил URL-путь внутри сайта, который будет являться версией для разработки базового сайта. То есть http://www.example.com/devweb обычно зеркально отображает http://www.example.com, http://www.example.com/devweb/foo/bar.php будет отражать http://www.example.com/foo/bar.php и т. Д. Я создал папку devweb в корневом каталоге документа, но вместо копирования всех файлов я настроил сервер так, чтобы если запрошенный файл не существует в каталоге /devweb, он будет искать его в корне документа. Это была более хрупкая установка, чем отдельный сервер разработки.

2 голосов
/ 16 апреля 2009

У меня есть версия config / database.php, которая использует переменную сервера php «ИМЯ СЕРВЕРА», чтобы определить, на какой системе работает приложение. Затем, когда я клонирую мое git-репо через домашнюю систему, сайт разработки (который имеет те же характеристики, что и действующий компьютер), и рабочий компьютер, все они подключаются к своим соответствующим базам данных.

Я вставил сюда, но я также считаю, что он доступен в пекарне.

http://pastebin.com/f1a701145

2 голосов
/ 06 апреля 2009

У меня есть несколько сайтов, написанных на CakePHP. Я разрабатываю и тестирую на своем локальном компьютере, используя базу данных на своем производственном сервере (у меня есть только логин MySQL, который работает для моего статического IP-адреса).

Весь код проверяется в Subversion, и тогда у меня есть сервер непрерывной интеграции - Hudson:

https://hudson.dev.java.net/

Это создает и развертывает мой проект на рабочей машине. Он просто проверяет код в Subversion для конкретного проекта, а затем запускает простой скрипт для SSH / копирования файлов в промежуточную или производственную папку на сервере. Вы можете либо настроить это как ручной процесс (который у меня есть в настоящее время), либо вы можете настроить его так, чтобы он развертывался после проверки кода. Для этого можно настроить множество других инструментов CI (для посмотрите и на Xinc).

http://code.google.com/p/xinc/

Что касается абсолютных URL-адресов, вы всегда можете настроить что-то в вашем хост-файле, чтобы вместо этого разрешить сайт локально на вашем компьютере. Это работает для меня, просто не забудьте вынуть его потом:)

Надеюсь, это поможет ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...