вторник, 3 апреля 2012 г.

Настройка деплоймента в PhpStorm

Деплоймент (deployment) - очень важный момент в работе разработчика. Я напомню, что локальную разработку я веду на FreeBSD VM, на которой настроены все необходимые веб-сервисы. Данный способ разработки позволяет эмулировать реальную среду продакшена, где будет работать мой код. Раньше я просто расшаривал свои проекты по Samba, сканировал необходимую папку и работал с ней удаленно. У данного способа есть большой минус - скорость работы. PhpStorm индексит по Samba очень медленно, иногда может надолго подвисать.

Потому сейчас я работаю с локальной папкой, а PhpStorm все автоматически аплоадит (деплоит) по SFTP на виртуальную машину. Так IDE работает быстрее, индексация проекта теперь занимает намного меньше времени.

Перейдем от слов в делу. Допустим, у меня есть локальная папка "community" с Magento CE и такая же папка на VM.

1. Открываем настройки деплоймента Project Settings => Deployment:


2. Добавляем новый сервер. Для этого нужно нажать на плюсик, дать ему имя и выбрать тип соединения. В моем случае это SFTP:


3. Заполняем табу "Connection":


Стоит заметить, что в поле "Root path" лучше указывать директорию VM, в которой лежат все ваши проекты, чтобы можно было использовать данный сервер и для их деплоя.

4. Заполняем табу "Mappings":


- "Local path": локальная папка с проектом
- "Deployment path on server '%YOUR_SERVER_NAME%'": удаленная папка с проектом

5. Заполняем табу "Excluded Paths":


Здесь можно настроить папки, которые мы не ходим деплоить на VM и наоборот. В данном случае я указал что не хочу получать с удаленного сервера содержимое папки "var", в которой хранится кеш, репорты, логи и прочая служебная информация о проекте.

6. Настраиваем автоматический аплоад на удаленный сервер, чтобы после каждого сохранения файла, он PhpStorm отправлял его на сервер. Для этого нужно зайти в Project Settings => Deployment => Options и выставить чекбоксы вот так:


Поздравляю, все настроено. Открываем любой файл, делаем в нем изменение, сохраняем и видим что PhpStorm автоматически загрузил этот файл на сервер:


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

22 комментария:

  1. Намного проще было бы расшарить наоборот - локальные файлы на виртуалку (к тому же у тебя мак, так что лучше не по самбе, а по nfs). Так локально все будет работать быстро и на виртуалке тоже тормозов особо заметно не будет.

    ОтветитьУдалить
    Ответы
    1. Ты не внимательно читал мою статью. Или прочитал только 1й абзац.

      Удалить
  2. Игорь, поправь "...способа есть большой Синус - скорость работы." :)

    ОтветитьУдалить
  3. здравтсвуйте. у меня такой вопрос, как синхронизировать изменения, которые делаю через админку вордпресса с этим же проектом на phpStorm. Прочитала разные статьи, но конкретно ничего не нашла. Не могли бы дать направление, в какую сторону копать. Спасибо.

    ОтветитьУдалить
    Ответы
    1. Привет. Никак. Только работать напрямую с папкой проекта через SMB/FTP/SFTP.

      Главный минус - скорость. Индексация будет происходить намного медленнее, но терпимо.

      Удалить
    2. Спасибо, по ФТП получается. :)

      Удалить
    3. Если я верно понял ваш вопрос:

      1 - есть полная синхронизация с деплоем.
      Правый клик на проекте (или конкретной папке) -> deployment -> sync...
      В результате увидете список измененых файлов и сможете решить какие обновить локально а какие на деплое

      2 - если у вас в настройках деплоя для опции "Warn when uploading over newer file" выбран вариант "compare content" и стоит галка "Notify of remote changes"
      то шторм проверит и предупредит вас о том, что файл изменён, если вы его начнёте редактировать в самом шторме

      Удалить
  4. А есть способ увеличить скорость загрузки на сервер? У меня все время в районе 6 кб/c, что явно медленнее, чем по фтп. И нетбинс куда быстрее загружает тоже.

    ОтветитьУдалить
    Ответы
    1. Попробуй залить файл на сервер через SCP протокол (например, с помощью вин-обертки WinSCP). Если скорость такая же маленькая, то проблема не в IDE, а в канале.

      Удалить
  5. Честно говоря, меня больше интересует возможность отключения локального сохранения файлов. Либо чтобы файлы синхронизировались автоматический.
    Столкнулся со следующей проблемой:
    Мне периодический необходимо загрузить большое количество файлов в различные папки моих проектов. Если я их перетаскиваю в панель проекта они попадают в панель проекта на локальном компьютере, но что бы они загрузились на сервер - приходится целиком загружать проект на сервер - а это сорок минут. Либо выгружать по одному файлу иди папке, но это проблематично, когда большое количество файлов.
    Если поступить по другому и сначала залить файлы на сервер, то опять же чтобы начать их увидеть в проекте, приходится сливать проект с сервера целиком. Как правильно решить такую проблему?

    ОтветитьУдалить
    Ответы
    1. не нашли решение? у меня такая же проблема ( Кнопка синхронизировать при ftp ничего не делает

      Удалить
    2. Заходим tools - deployment - browse remote host. Там выбираем корневую папку, которая соответствует корневой папке вашего проекта. Правой кнопкой по ней и выбираем Sync With Local. Открывается окошко, буря подгружает все изменения которые нашла и вверху нажимаем зеленую двойную стрелочку, которая означает загрузить с удаленного сервера на ва комп все измененные файлы.

      Удалить
  6. никак не получается настроить ftp соединение :(
    подскажите, возможно ли так вообще настроить?)
    в общем на компе никаких проектов не создано еще.
    пытаюсь создать проект New Project From Existing Files -> Web server is on remote host, files are accessible via FTP/SFTR/FTPS
    но при попытке скачать файлы с сервера пишет, что ни файлов, ни директорий не найдено?
    подскажите что не так делаю?

    ОтветитьУдалить
    Ответы
    1. к самому ftp пишет, что успешно подключается =\
      а вот root path выбрать не могу - нажимаю три точки, открывается окно, происходит подключение, но никаких папок не находит =\

      Удалить
  7. Этот комментарий был удален автором.

    ОтветитьУдалить
  8. А ещё можно поправить "Перейдем от слов в делу." Наверно правильнее "к делу"?
    Было бы неплохо написать как активировать сам Deployment, так как у меня, почему то, по умолчанию он отключён, а в Plugins не могу найти, на репо тоже нет, не понимаю в чём проблема.

    ОтветитьУдалить
  9. А как сделать так, чтобы автоматически изменения с сервера подтягивались в папку на компьютере, т е без ручной работы с tools - deployment - browse remote host?

    ОтветитьУдалить
  10. 20 ошибок в скриптах и 3 предупреждения. Верифи код...

    ОтветитьУдалить