/ PHPStorm

Как загружать, редактировать, синхронизировать файлы по FTP в PHPStorm

В этой статье я расскажу о том, как в PHPStorm настраивать FPT/SFTP-подключения для работы с файлами на удалённом сервере. После прочтения этой статьи вы будете знать, как в PHPStorm работает загрузка файлов на сервер. Как добавить несколько FTP-подключений и одновременно загружать файлы на все настроенные сервера.

Для чего это нужно

Очень часто так бывает, что вы разрабатываете проект локально, и после приобретения проектом лицеприятного вида появляется необходимость в публикации этого сайта на хостинге, или личном сервере. Допустимый вариант - использовать фтп-менеджер, по типу FileZilla, WinSCP, или им подобные. И с их помощью загружать файлы на сервер, как только вы закончите работу. Однако, во-первых, иногда очень напрягает постоянные переключение между вкладками, особенно, когда правки происходят в режиме лайф. И, во-вторых, PHPStorm имеет встроенный функционал по работе с удалёнными серверами, и, во-многом, мощнее большинства файловых менеджеров.

Благодаря PHPStorm-у теперь можно настроить подключения к удалённому серверу, настроить автоматическую загрузку файлов и их синхронизацию, можно редактировать удалённый файлы по FTP прямо из любимой IDE. В общем, что только не делают разработчики IDE, только бы мы писали качественный код. Потому, преимущества использования встроенных инструментов, по сравнению с FileZilla и компанией - есть.

Настройка FTP-подключения в PHPStorm

Для демонстрации процесса настройки FTP в PHPStorm я создам новый проект, а так же, создам новый дроплет на DigitalOcean, на который буду загружать файлы проекта.

Прежде всего, нужно настроить FTP соединение с удалённым сервером. Для этого нужно перейти в меню настроек File > Settings, где открыть вкладку Build, Execution, Deployment > Deployment, и нажать на кнопку добавления нового подключения: settings_add_button

Где во всплывающем меню будет предложено выбрать тип подключения, который мы будем использовать: FTP, FTPS, SFTP: settings_add_server_select_type

Какую опцию выбирать зависит от того, куда вы подключаетесь. Грубо говоря, если у вас собственный сервер, и к примеру, вы хотите подключиться от имени root-а, или другого пользователя на сервере, то нужно выбрать SFTP.
Если вы подключаетесь к shared-хостингу, то они обычно предоставляют доступ только по FTP.

После чего нам будет предложено указать имя сервера. Это имя ни на что не влияет, нужно только для удобства. Но я бы советовал давать имена серверам осознанно, например badocode.ru, PROD_server, _dev_server, ... name_server

И указав имя, получим такое окно с настройками, на котором остановимся подробнее: settings

где 1 - это опция, которая указывает на то, будет ли доступен этот сервер в других ваших PHPStorm-проектах. То есть, вы можете настроить это подключение один раз, и выставив эту галочку, работать в любом своём проекте, не настраивая его повторно в других проектах
2 - тип подключения, который указывали шагом назад (который можем изменить в любой момент)
3 - хост, к которому подключаемся
4 - порт сервера (для SFTP обычно 22, но на сервере можно настроить какой угодно)
5 - имя пользователя
6 - пароль (и галочка сохранить пароль, чтобы не вводить его повторно)

После того, как указали все параметры, нужно протестировать это подключение на корректность введённых данных, нажав на кнопку Test Connection (соглашаясь со всеми всплывающими окнами).

В результате чего, должны получить сообщение об успешной проверке success

Теперь осталось только настроить пути к проекту, папку выгрузки на сервер. Здесь нужно указать, в какой директории на сервере находятся файлы вашего проекта. К примеру, на VDS, файлы, обычно расположены по пути /var/www/html, если это хостинг, то username/public_html, public_html, или что-то типа того. Потому укажем путь, нажав на кнопку: select_path

Теперь, последний шаг для удачного деплоя - укажем путь, куда будут загружаться файлы. Для этого нужно перейти на вкладку Mappings и выбрать путь Deployment path (обычно, при указанном пути к проекту на предыдущей вкладке, Deployment path задаётся как /). paths

Если вы хотите, чтобы на удалённый сервер заливался проект, без определённых папок/файлов, то можете указать исключения на вкладке Excluded Paths, какие папки/файлы будут игнорироваться при деплое.

Готово! Нажимаем OK, и сервер добавлен.

Подключаемся к настроенному серверу

Подключение мы настроили. Но пока непонятно, как к нему подключиться. Для того, чтобы появилась удобная панель работы с FTP-серверами, откроем в меню Tools > Deployment > Browse Remote Host, в результате чего, появится новая панель Remote Host, которую можете открыть кликнув по ней tolls

И всё, теперь мы полноценно настроили подключение по FTP, и можем из PHPStorm загружать, или редактировать файлов на удалённом сервере. Удобство в том, что можно перенести файлы на сервер либо выделив все нужные локальные файлы, скопировав Ctrl + C, перевести фокус на удалённый сервер, и Ctrl + V.
Или же, выделив нужные файлы, нажмите правую кнопку мыши, Deployment > Upload to ... upload_to

Теперь в правом меню Remote Host, в списке файлов сервера появятся ваши файлы, которые вы можете открывать, и редактировать по фтп. И к примеру, если вы открыли файл, отредактировали его, то редактор сам подскажет вам, что в файле были произведены изменения, которые стоило бы залить на сервер. И для того, чтобы загрузить изменения на FTP сервер, нужно нажать на кнопку: upload_to_button

Как синхронизировать файлы по фтп с удалённым сервером

Теперь мы уже знаем, как можно добавлять и редактировать файлы в PHPStorm по FTP. Осталось только настроить проект таким образом, чтобы была возможность загружать файлы на сервер без подтверждения, без постоянных кликов на кнопку загрузки файлов. То есть, чтобы мы могли отредактировать файл локально, и он, в лайв режиме загрузился на сервер без дополнительных подтверждений с нашей стороны.

Для этого опять зайдём на страницу настроек File > Settings, настройки деплоя Build, Execution, Deployment > Deployment > Options setting_auth2-1

где 1 - режим загрузки файлов при их изменении:

  • Always - синхронизировать сразу же при изменении
  • On explicit save action - загрузка на сервере при нажатии Ctrl + S
  • Never - не синхронизировать

2 - режим поиска и разрешения конфликтов версий файлов:

  • No - загружать локальный файл на сервер без дополнительных проверок
  • Compare timestamp & size - сравнивать дату изменения локального файла с серверным, или его размер
  • Compare content - сравнивать содержимое файла с его предыдущей версией

То есть, когда PHPStorm обнаружит, что за то время, пока вы редактировали свой файл локально, его кто-то изменил на сервере. И, если настроено разрешение конфликтов версий файлов, то он уведомит вас о том, файл отредактирован кем-то, чтобы вы не затёрли чужие правки. Удобно, когда над проектом работает несколько человек.

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

Загрузка файлов не несколько серверов одновременно (группа серверов)

Иногда возникает необходимость в загрузке файлы одновременно на несколько удалённых серверов. И в этом PHPStorm нам может здорово помочь. Для того, чтобы из PHPStorm-а деплоить файлы на несколько серверов, нам нужно создать группу серверов для деплоя.

Для того, чтобы создать такую группу серверов, откроем панель File > Settings, и перейдём на вкладку Build, Execution, Deployment > Deployment, где нажмём на кнопку добавления нового сервера (как было в предыдущих шагах), только в этот раз выбираем опцию Server group server_grou-p

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

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

В итоге, группа из двух сервером выглядит так: 2-servers-list

Теперь, когда всё настроено, можем выделить нужные файлы проекта, которые необходимо залить, нажать ПКМ, и в контекстном меню Deployment кликнуть Upload to ... server group upload_to_server_group

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

На момент создания группы серверов у вам уже могут иметься добавленные сервера. Вы можете переместить их в группу, используя drag-n-drop.
Если в PHPStorm не работает drag-n-drop, то попробуйте, используя зажатую кнопку Alt.

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

Резюме

Теперь вы знаете, как в PHPStorm работать по FTP, как работает загрузка файлов одновременно на несколько серверов, как всё это настраивать и успешно применять в своей работе. В этой статье я, для демонстрации использовал демо-сервер, который заказывал на DigitalOcean. И если вам нужен дешевый и качественный сервер (топ за свои деньги), то приглашаю вас зарегистрироваться по инструкции из этой статьи, и получить дополнительные 50$ на использование их услуг.