Бывает необходимо сделать так, чтобы изменения на локальной копии проекта сразу выгружались на сервер. Конечно, для полноценной разработки так лучше не делать. Тем не менее, иногда такая потребность возникает. Поэтому я решил написать эту статью. Будет заметкой для меня. А может поможет и вам 🙂
Пойдем по порядку.
Добавление удаленного сервера
Первым делом нужно добавить сервер, куда будем деплоить обновленные файлы. Откроем нужный проект, перейдем в настройки (Preferences) и найдем раздел «Deployment» через поиск, нажимаем на пункт «Deployment».
Далее нажимаем на плюс для добавления нового сервера:
Далее выбираем тип соединения. Можно выбрать FTP, но я настоятельно рекомендую использовать строго SFTP, т.к. это безопасней и надежней.
Далее, в появившемся окошке придумываем название сервера и нажимаем ОК:
Отлично! Настройки сервера указали
Добавление конфигурации сервера
Далее нужно указать конфигурацию подключения к серверу. Найдем пункт «SSH configuration» и нажмем на кнопку, на которую указывает стрелка на скриншоте. Возможно, если у вас нет конфигураций, то вы сразу увидите форму для параметров конфигурации.
Откроется окно SSH Configurations. У меня уже есть некоторые конфигурации, но для примера добавлю новую. Нажимаем на плюс и заполняем форму.
Если вы все указали правильно и нажмете Test Connection, то получите такое сообщение:
Далее выбираем только что созданную конфигурацию, сначала нажимаем на кнопку Apply, а потом на OK
Настройка путей (Mappings)
Теперь нас интересует вкладка «Mappings». По сути, она определяет соответствие путей на локальной машине и на сервере.
У меня при попытке открыть файловую систему сервера вылезла такая ошибка:
Это связано с особенностями работы моего хостинга и тем, что мы используем SFTP. Адрес на сервере не указан, и PHP Storm пытается обратиться в корень сервера, куда даже у меня нет доступа. Поэтому во вкладке Connection, в поле «Root path» можно воспользоваться кнопкой «Autodetect», которая сама найдет корень сервера, доступный вам.
У меня получились такие пути:
Вообще рекомендую указывать те директории проекта, с которыми вы будете непосредственно работать. Например, если это разработка темы, то лучше в маппингах указать директорию темы на сервере и на своем компьютере. Если плагин — то директорию плагина.
Настройка исключений (Excluded Paths)
Не все файлы проекта может быть нужно выгружать. Например, в случае с WordPress будет странно выгружать файл wp-config.php или директории wp-admin и wp-includes. Потому что wp-config.php для каждого сервера уникален, а директории wp-admin и wp-includes не должны участвовать в процессе разработки, т.к. это ядро системы. Поэтому будет логично выпилить их:
У меня получились такие директории:
Тут в директориях можно увидеть, что на локалке я использую XAMPP. Если хотите установить его на своем Mac, то предлагаю ознакомиться с инструкцией по установке XAMPP.
Конечно, ранее я написал, что нужно выделять нужную директорию сразу и работать только с ней. Но что если, например, вы работаете и с темой и с плагином? Тогда как раз исключения и нужны. Чтобы не грузить медиафайлы а работать только с нужными разделами, мы можем в маппингах указать директорию wp-content, а из нее исключить все ненужные директории. Например, если используете composer, то у вас есть папка vendor, в которой огромная куча файлов и директорий. Будет странно все это отслеживать и грузить на сервер. Такие вещи лучше отдельно повторно установить на сервере.
Завершение настройки сервера
Отлично! Теперь нажимаем на кнопки Apply и OK. Настройка сервера готова.
Запуск автодеплоя
После сохранения настройки сервера ничего не произойдет. Потому что теперь для нашего проекта нужно указать этот сервер и указать, что должен работать автодеплой.
Поэтому сначала идем во вкладку Tools -> Deployment -> Browse Remote Host
Так у нас откроется вкладка с файловой системой сервера. Туда и оттуда уже можно перетаскивать файлы с помощью Drag And Drop
Еще, чтобы выгрузить какой-то файл на сервер в соответствии с настроенными Mappings, можно нажать на нужный файл правой кнопкой мыши, выбрать пункт Deployment и пункт Upload to…
Но это не очень удобно. Лучше грузить все автоматически. Поэтому снова идем в пункт Tools -> Deployment -> Automatic upload
Дальше нам предложат выбрать сервер, который мы хотим использовать для автодеплоя. Выбираем тот, который мы настроили для этого проекта:
Вуаля! Теперь автодеплой должен заработать 🙂