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

Разработка и производственная среда в PHP

Я хотел бы настроить две среды для моего нового сайта, написанного на PHP. Один - разработать новые версии и протестировать их. И второе производство, где будет доступна моя реальная стабильная версия веб-сайта.

Веб-сайт в PHP будет состоять из многих PHP и других файлов (JS, изображений и т.д.). Поэтому я думаю, как подготовить эту среду наилучшим образом, чтобы упростить управление исходным кодом, быстро скопировать веб-сайт из среды разработки в производственную среду и сделать версию разработки доступной для людей в Интернете, чтобы они могли видеть фактический прогресс в работе и предлагать изменения или сообщить об ошибках.

Не могли бы вы дать мне несколько советов, куда идти от этой отправной точки? Есть ли книги об этом (с практической точки зрения?) Или у вас есть опыт или советы, что нужно отслеживать и что важно, чтобы сделать этот процесс легким и полезным для меня и других людей, участвующих в разработке нового проекта?

4b9b3361

Ответ 1

Для начала используйте следующие три:

  • SVN - это даст вам контроль источника и позволит отслеживать изменения. Вы можете захотеть получить GUI поверх этого (Tortoise является популярным), чтобы облегчить кривую обучения.

  • RSYNC - это позволит вам упростить синхронизацию между локальным и удаленным сайтом с помощью одной команды. RSYNC использует синхронизирующий механизм diff, что означает, что инкрементные синхронизации происходят в считанные секунды. Во время интенсивного программирования я иногда синхронизую 4-5 раз за один час, выталкивая небольшие изменения очень быстро, потому что я могу так легко.

  • MySQLDump. Это позволит вам импортировать/экспортировать данные с вашего сайта. Обычно я делаю это один раз в неделю, чтобы получить данные о производстве на моих локальных серверах, которые не только дают мне локальную резервную копию, но также позволяют мне работать с производственными данными в локальной тестовой среде.

Те трое в одиночку сэкономит вам много времени в долгосрочной перспективе и позволят вам масштабировать. Позже вы можете изучить автоматизированные средства сборки, инфраструктуру модульного тестирования, инфраструктуру документации xml и т.п., Чтобы создать несколько серьезных продуктов.

Ответ 2

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

Небольшое примечание: я работаю над OSX, поэтому используемые вами приложения могут немного отличаться от вас, если вы являетесь пользователем linux/windows.

Я запускаю производственный "сервер" на своем Mac, используя MAMP (www.mamp.info), чтобы легко предоставить мне сервер Apache с PHP и MySQL. Вы можете использовать аналогичный инструмент, такой как XAMPP, или установить все вручную, это действительно зависит от вас.

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

Я использую Subversion (или, короче говоря, SVN) для моих потребностей в версировании, с добавленным бонусом, что я могу легко добавить "крючки" для автоматического обновления моего онлайн-сервера при каждом отправке моей новой обновленной версии на сервер SVN. SVN также позволяет вам легко работать с несколькими людьми в одном проекте. Для получения дополнительной информации о SVN и о том, как использовать его, я предлагаю отличную (и бесплатную) онлайн-книгу, найденную здесь: http://svnbook.red-bean.com/

Короче: я работаю локально с MAMP, предоставляя мне локальный "рабочий" сервер. После этого я тестирую в Интернете по адресу staging.abc.com, чтобы увидеть, все ли работает хорошо, и, чтобы позволить другим увидеть проект (в случае, если вы хотите, чтобы ваш клиент видел, что происходит, например), и после этого я фактически публикую проект, помещая его в фактический домен.

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

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

-Dave

Ответ 3

Я предпочитаю, чтобы развитие происходило в локальном блоке разработчиков, если это возможно. Если задействованы другие разработчики, вероятно, вы захотите настроить ваш контроль версий таким образом, чтобы и схема базы данных, и javascript, и CSS, и php-код можно было легко проверить и настроить на личном ящике разработчика (при условии, что у них есть правильный LAMP/WAMP)

Я также видел, где люди поддерживают тестовый сайт на сервере, где происходит активное развитие. Я бы избегал этого для активной разработки, но использовал это для тестирования "черного ящика" последнего проверенного кода (последняя сборка).

Как только ваш тестовый сайт проверяется, тогда его вопрос экспортирует код из вашего контроля версий в место, где находится веб-сайт. С помощью svn вы можете просто обновить текущий код с обновлением svn, указав ревизию или тег, который указывает текущую версию в реальном времени.

Я бы рекомендовал сохранить некоторые настройки, такие как db access/username/pass, в отдельном включенном файле, который не контролируется версией. Держите это в другом месте, пусть разработчики подключат права доступа к своей локальной базе данных на своем ПК. На своем сервере подключите все необходимое для доступа к базе данных. Это должен быть действительно тривиальный код (определяющий несколько переменных), поэтому не контролировать его версию не должно быть большой проблемой. Если вам нравится, вы можете управлять версиями шаблонов, но я бы не поместил реальную информацию о базе данных в контроль версий.