Как я уже писал в прошлой заметке — я вновь сел за написание кода. Кроме python, мне доводится немного программировать на php создавая собственные плагины или темы для сайтов на wordpress. Для работы я использую Linux, а в качестве среды разработки (редактора кода) удобную и бесплатную среду Geany. Поскольку php разработка всегда подразумевает необходимость размещения скриптов на удаленном веб-сервер, то может возникнуть вопрос как в geany выгрузить файлы по ssh/ftp на сервер в интернете.
Готовой настройки в Geany для этих целей нет, но есть возможность прописать собственные команды для сборки (компиляции) проекта. Именно этой возможностью я и воспользовался прописав туда команду синхронизации локальной папки проекта с удаленным сервером программой rsync (для доступа по ssh) или lftp (для ftp).
Установка
Прежде чем приступить убедитесь, что все необходимые программы у вас установлены. В большинстве случаев ssh и rsync уже установлены в системе, если нет, то установите их в соответствии с вашим дистрибутивом. Например в Ubuntu\Debian это делается так:
sudo apt-get install ssh rsync
Для установки geany и lftp соответственно команда:
sudo apt-get install geany lftp
Настройка SSH авторизации по ключам
Поскольку мне чаще всего приходится работать с сервером по протоколу SSH, то первым делом необходимо настроить «прозрачную» аутентификацию по ключу, чтобы во время выполнения команды загрузки не было запроса пароля. Делается это очень просто:
ssh-keygen -t rsa -q -N '' -f ~/.ssh/id_rsa ssh-copy-id -i ~/.ssh/id_rsa user@remote.host
Где user — пользователь удаленного сервера, remote.host — адрес удаленного сервера. После этого при подключении к указанному серверу командой ssh user@remote.host пароль запрошен не будет, а вы сразу попадете в консоль сервера. Если имя локального пользователя и удаленного совпадает, то можно и вовсе набирать ssh remote.host. Теперь можно приступить к использованию rsync для синхронизации проекта.
Использование rsync для синхронизации по ssh
В интернет масса мануалов, но я повторю их тут, чтобы вы никуда не бегали. Чтобы скачать директорию с удаленного сервера на свой компьютер используйте команду:
rsync -zavP user@remote.host:/path/to/project/files/ /path/to/local/files/
А чтобы загрузит на сервер соответственно наоборот:
rsync -zavP /path/to/local/files/ user@remote.host:/path/to/project/files/
Где /path/to/local/files/ — полный путь к папке с проектом на вашем компьютере, а user@remote.host:/path/to/project/files/ — полный путь на удаленном сервере начиная с корня после двоеточия. До двоеточия, соответственно, логин и сервер для подключения по ssh, для которых мы уже настроили авторизацию по ключам.
Синхронизация файлов по ftp
Для синхронизации по протоколу ftp используем команду lftp, которая так же проста как и rsync. Для загрузки файлов с сервера на компьютер вам поможет команда:
lftp -e 'mirror -e /path/to/project/files/ /path/to/local/files/; bye;' -u user,pass remote.host
С локального компьютера на сервер:
lftp -e 'mirror -R /path/to/local/files/ /path/to/project/files/; bye;' -u user,pass remote.host
Как видите здесь уже не так безопасно, поскольку придется вбивать пароль и логин пользователя в команду, но и протокол ftp в принципе уже давно устарел и признан не безопасным.
Настройка Geany для автоматической загрузки файлов
Теперь, когда все подготовительные работы проведены можно настраивать Geany на автоматическую загрузку файлов проекта на сервер по ssh или ftp. Для этого создаем новый проект «Проект\Новый…» (у вас уже создан проект то кликайте сюда)
При создании вам будет предложено указать название, а так же файл и папку проекта. После задания имени проекта скопируйте путь к каталогу, там будут располагаться все ваши файлы, которые необходимо будет загружать на сервер. Именно этот путь и надо будет указать в команде загрузки.
Вам будет предложено создать папку проекта, если она еще не была создана. Для начала стоит создать хотя-бы один пустой файл проекта с расширением определяющим язык программирования. Например для php создайте файл с расширением php (так geany поймет на каком языке вы собрались программировать), после чего откройте свойства проекта «Проект\Свойства».
Перейдите на вкладку «Сборка» и укажите свою команду сборки. Кликните по кнопке под номером 2 и напишите например «Загрузить», а в строку команда вбейте одну из перечисленных выше команд загрузки на сервер в зависимости от используемого протокола (ssh или ftp). Должно получится примерно вот так:
Не забудьте нажать «OK». После этого в меню «Сборка» у вас появится пункт «Загрузить», который отправит файлы проекта на сервер. Либо можно просто жать F9.
А внизу окна редактора появится отчет об успехе (или неудачи) загрузки. Ровно тот, что выдает указанная команда в консоли терминала.
Таким нехитрым способом мы существенно облегчаем себе жизнь проводя разработку и тестирование на локальной машине, а на сервер выгружая в одно касание клавиши F9.
Если вам есть, что добавить — добро пожаловать в комментарии!
Внимание! Нажимая кнопку "Отправить комментарий" вы соглашаетесь с политикой конфиденциальности сайта.