Статьи

Моя среда разработки PHP

Я работаю в PHP на своей новой дневной работе, и, несмотря на обычное восклицание, в котором говорится, что (да, я слышу, как вы кричите «PHP !? Да!»), Я на самом деле очень доволен изменением темпа. и среда разработки, которую я использую. Мне это нравится достаточно, я думал, что поделюсь этим.:)

бродяга

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

Я также устанавливаю IP-адрес только для хоста в Vagrantfile и редактирую свой файл / etc / hosts, чтобы разрешить его, обычно это какой-то домен, такой как local.example.com или тому подобное. Преимущество всего этого? Я могу оформить заказ, набрать vagrant up и BOOM! Я могу перейти на http://local.example.com и увидеть отлично работающий, работающий экземпляр. И с / var / www / mapped обратно в каталог проекта на машине я могу внести изменения и увидеть их в виртуальной машине. Это также создает хорошую локальную среду для тестирования моих сценариев развертывания capistrano.

Capistrano

Не секрет, что я большой поклонник capistrano и забавно никогда не использовал его для развертывания rails-приложения. Я просто нахожу, что это самый простой в использовании инструмент для безболезненного развертывания проектов на удаленных серверах и возможности отката, когда я облажался. Все с одной командой. На самом деле, я даже выполнил откат производства со своего мобильного телефона во время поездки.

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

Конечно, одного только capistrano недостаточно, чтобы завершить мой набор инструментов для развертывания. Поскольку мы работаем с приложением, не относящимся к рельсам, нам нужно удалить «рельсы» из капистрано. railsless-deploy хорошо работает здесь, удаляя больше связанных с rails задач. Я также использую многоэтапные развертывания, которые используются для развертывания в стадии подготовки и производства. Наконец, после того, как приложение развернуто (но еще не запущено, так как символическая ссылка не была обновлена), мой скрипт capistrano запускает в приложении composer для сбора зависимостей.

Композитор

Когда я в последний раз работал в мире PHP (2006!), PEAR была в значительной степени де-факто системой управления зависимостями, и это была «ме». Неплохо, но не так хорошо, как rubygems, pip или npm . Вообразите мою радость на прошлой неделе, когда я обнаружил композитора , который основывается на идеях в npm. С помощью composer я могу определить файл composer.json, который определяет все зависимости, которые есть в моем приложении, независимо от того, включены они или нет. Я использовал это с пакетами на основе композиторов, проектов pear, github и т. Д. Вот пример из текущего проекта:

{
    "name": "zendframework/skeleton-application",
    "description": "Skeleton Application for ZF2",
    "license": "BSD-3-Clause",
    "keywords": [
        "framework",
        "zf2"
    ],
    "homepage": "http://framework.zend.com/",
    "require": {
        "php": ">=5.3.3",
        "zendframework/zendframework": "2.0.0rc7@dev",
        "doctrine/common": "2.2.3"
    },
    "autoload": {
      "psr-0": {
        "Zend":"vendor/zendframework/zendframework/library/Zend",
        "Album":"module/Album/src"
      }
    }
}

По сути, я просто запускаю «composer install» из каталога проекта, и все зависимости загружаются и помещаются в ./vendor. Приятным дополнением является то, что он также обрабатывает автозагрузку psr-0, что само по себе является отдельной темой.:)

Дженкинс

Наконец, я связываю все это вместе с Дженкинсом, используя его для автоматической проверки проектов при коммите, запускаю PHPUnit и php lint для проекта, а затем отправляю его в промежуточную версию, если все пойдет хорошо. Я обычно покидаю производственное развертывание для ручного запуска, но я также могу автоматизировать это, если захочу. Если вы еще не используете Дженкинс , почему нет?

На этом пока все. Короче говоря, я могу сказать, что разработка PHP не велика из-за того, что она очень многословна, но терпима. Знание инструментов из других стеков делает его интересным.:)