Рассмотрим такой инструмент для 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

Зайдём на хостинг через какой-нибудь SFTP клиент, я использую WinSCP.

В той директории в какой окажитесь, нужно создать папку .ssh (с правами доступа 700) и в ней пустой файл authorized_keys (с правами доступа 600).

Чтобы установить права - правой кнопкой по папке (файлу) --> свойства. 700 - первых три чекбокса, 600 - первых два чекбокса. Выходим из хостинга.

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

Предположим что
логин SSH - user4312
ip-адрес - 104.89.207.187

$ scp -p id_rsa.pub user4312@104.89.207.187:/path/.ssh/authorized_keys

Нужно будет ввести пароль SSH доступа.

/path/.ssh/authorized_keys - это путь до файла authorized_keys папки .ssh от корня хостинга. Вместо 'path' - вводим полный путь от корня до authorized_keys.

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

$ scp -P34716 id_rsa.pub user4312@104.89.207.187:/path/.ssh/authorized_keys

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

$ ssh-add

Скорее всего будет ошибка, что agent не запущен. Включим его

$ eval `ssh-agent -s`

Повторим команду

$ ssh-add

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

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

$ gulp rs

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

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