upd 07.11.2021: теперь для проектов используется инструмент для автоматизации github action:
https://github.com/features/actions
FTP Deploy:
https://github.com/SamKirkland/FTP-Deploy-Action
Проблема
Каждый раз при изменении сайта мне приходится копировать изменения на хостинг. Для этого я выполняю такие действия:
- открываю FTP клиент;
- подключаюсь к серверу;
- удаляю файлы на сервере;
- копирую новые файлы на сервер;
- отключаюсь и закрываю FTP клиент.
В данном посте я хочу автоматизировать эти действия.
Исследование
Единственное что мне было неизвестно: как выполнить команду на удаленном сервере.
Ответ по ссылке:
https://stackoverflow.com/a/7363641/1775459
Написание скрипта
Скрипт оказался маленьким. Это хорошо:
#!/bin/bash
# Скрипт выкладывает данные на сервак
LOGIN="тут ваш логин"
HOST="тут имя вашего сервера"
scp -r ./dist $LOGIN@$HOST:~/tmpdir
ssh $LOGIN@$HOST 'bash -s' <<'ENDSSH'
# эти команды выполнятся на вашем удаленном сервере
rm -rf yourwebsite
mv tmpdir yourwebsite
ENDSSH
Некоторые пояснения к скрипту:
#!/bin/bash
# Скрипт выкладывает данные на сервак
LOGIN="тут ваш логин"
HOST="тут имя вашего сервера"
scp -r ./dist $LOGIN@$HOST:~/tmpdir
ssh $LOGIN@$HOST 'bash -s' <<'ENDSSH'
# эти команды выполнятся на вашем удаленном сервере
rm -rf yourwebsite
mv tmpdir yourwebsite
ENDSSH
- Команда scp копирует папку dist на сервер в соответствующую папку. Папка dist - это папка, в которой находятся файлы сайта. Если файлы вашего сайта находятся в другой папке, необходимо указать именно ее.
- Новые файлы на сервере копируются сначала в новую папку tmpdir. Это временная папка.
- Старые файлы полностью удаляются, а на их место перемещается все содержимое временной папки.