Gulp-rsync для Windows 10

Рассмотрим такой инструмент для web-разработки как gulp-rsync. С его помощью будет происходить моментальная загрузка сайта на хостинг и синхронизация файлов

Установка gulp-rsync в проект

Сначала установим gulp-rsync в папку проекта

npm i gulp-rsync --save-dev

Если не знакомы с gulp, рекомендую сначала ознакомиться.

Подключим плагин gulp-rsync и создадим таск rs в gulpfile

var gulp = require('gulp'),
    rs = require('gulp-rsync');

gulp.task('rs', function() {
    return gulp.src('site/**')
        .pipe(rs({
            root: 'site',
            hostname: 'yourLogin@yourIp',
            destination: 'sitePath',
            port: 25212,
            include: ['*.htaccess'],
            exclude: ['**/Thumbs.db', '**/*.DS_Store'],
            recursive: true,
            archive: true,
            silent: false,
            compress: true
    }))
});
  • root - выбор папки для деплоя
  • hostname - ваш SSH-логин @ ip или адрес вашего сайта (например, user2583@sitename.ru)
  • destination - выбор папки на хостинге, куда будет загружаться сайт
  • port - эта строчка нужна лишь в том случае, если для SSH доступа нужен нестандартный порт (например, 25212)
  • include - какие файлы включать для переноса на хостинг
  • exclude - какие файлы не включать
  • recursive: true - рекурсивно передавать все файлы и каталоги
  • archive: true - режим архива
  • silent: false - отключение ведения журнала
  • compress: true - сжатие данных во время передачи

Настройка SSH в Windows 10

Первое с чего стоит начать, это узнать поддерживает ли хостинг SSH доступ. Далее нужно включить его самому или попросить техподдержку хостинга включить доступ по SSH.

Настроим беспарольный доступ к хостингу с помощью ключей доступа, чтобы не вводить пароль каждый раз.

Мы сгенерируем два ключа: открытый ключ (публичный) и закрытый (приватный). Открытый ключ скопируем на сервер (хостинг), приватный останется только у вас на компьютере.

Генерация ключей на вашем устройстве

Теперь нам понадобится оболочка bash. Откроем bash. Терминал будет со значком доллара.

Создадим папку для хранения ключей доступа .ssh. Для этого введём команду

mkdir -p ~/.ssh

Установим необходимые права доступа на неё

chmod 700 ~/.ssh

Перейдём в папку .ssh

cd ~/.ssh

Сгенерируем ключи доступа id_rsa (приватный) и id_rsa.pub (публичный). Несколько раз нужно будет нажать клавишу enter

ssh-keygen

Сохранение id_rsa на хостинге

Сохраним, сгенерированный в предыдущем пункте приватный ключ на хостинге:

scp -p id_rsa.pub username@site.ru:~

Создание ключей авторизации на хостинге

Заходим по SSH:

ssh username@site.ru

Ввводите пароль.

Создадим папку .ssh

mkdir -p ~/.ssh

Установим права 700.

chmod 700 ~/.ssh

Добавим наш ключ в authorized_keys.

cat id_rsa.pub >> ~/.ssh/authorized_keys

Установим права 600.

chmod 600 ~/.ssh/authorized_keys

Удаление id_rsa.pub на хостинге

Теперь удалим публичный ключ на хостинге, т.к. мы его добавили в файл authorized_keys.

rm -f ~/id_rsa.pub

Завершаем сессию.

logout

Добавление id_rsa на ваше устройство

Запустим ssh-agent

eval `ssh-agent -s`

Теперь добавим id_rsa (закрытый ключ) в ssh-agent

ssh-add ~/.ssh/id_rsa

Настройка беспарольного доступа завершена. Проверим rsync в действии.

Откроем bash в папке проекта и запустим деплой командой

gulp rs

Полезные ссылки

  • Официальная страница плагина gulp-rsync
  • Настройка проекта gulp
  • Установка оболочки bash
Изучаем английский
EnglishRussian
RootКорень
DestinationПункт назначения
IncludeВключать
ExcludeИсключать
SilentБесшумный
SSH (Secure SHell)Защищённая оболочка
Bash (Bourne Again SHell)'Возрождённый' shell
admin