Репост из моего бложика, но наверняка кому-нибудь пригодится и здесь.
Возникают ситуации, когда нужно залить куда-нибудь файлы (например, статичный HTML на хостинг), где есть только доступ по убогому FTP. В более удачных случаях есть rsync или SSH, поэтому можно применять готовые инструменты развёртывания, но такой возможности не было.
Поскольку желание делать всё руками отсутствовало, но работать всё-же хотелось, вчера за вечер накидал на Ruby простенькое и работающее решение для развёртывания статики через FTP: милые utochki, которые плавают, чудесно крякают и заливают файлы на хостинг.
Как работают utochki?
Как и любой хороший инструмент, они просто делает свою работу, и делают её хорошо. Сейчас имеются две команды: push (залить) и pull (слить). Если «сливатель» устроен довольно просто, то push спроектирован так, чтобы процесс заливания файлов проходил как транзакция:
1. Подключаемся.
2. Заливаем все файлы во временную директорию (1).
3. Перемещаем все файлы из целевого каталога в ещё одну временную директорию (2).
4. Перемещаем все файлы из временной директории (1) в целевую.
5. Удаляем все временные директории (1 и 2) и прочий оставшийся мусор.
6. Отключаемся.
Таким образом, достигается неплохая надёжность решения при сохранении простоты реализации.
Уже хочу!
Для того, чтобы использовать utochki нужно поставить gem utochki и создать в корневом каталоге проекта конфигурационный YAML-файл utochki.yaml следующего вида:
После этого можно совершенно без проблем плавать с уточками:
eveel@notazik{~/Work/suckless-ru}% utochki push
USER не_палимся
MKD /не_палимся/tmp/1270370845
PASV
STOR /не_палимся/tmp/1270370845/index.html
MKD /не_палимся/tmp/1270370845-www
PASV
NLST /не_палимся/www
PASV
NLST /не_палимся/tmp/1270370845
RNFR /не_палимся/tmp/1270370845/index.html
PASV
LIST /не_палимся/tmp/1270370845-www
PASV
LIST /не_палимся/tmp/1270370845-www
PASV
LIST /не_палимся/tmp/1270370845
PASV
LIST /не_палимся/tmp/1270370845
Да, и команда utochki pull сольёт файлы с сервера в каталог с именем «имя-pub-директории-UNIXTIME»:
eveel@notazik{~/Work/suckless-ru}% utochki pull
USER u227112
PASV
LIST /не_палимся/www
PASV
LIST /не_палимся/www
PASV
RETR /не_палимся/www/index.html
eveel@notazik{~/Work/suckless-ru}% ls | grep www
www-1270370944
Значит просто не сталкивался с проблемой. Есть хостинг, который умеет только FTP. Есть сайт, сделанный из статического HTML. Для того, чтобы не дрочиться каждый раз с ручной заливкой сайта на сервер, есть уточки, которые кря-кря и файлы на месте.
Что проще: набрать одну команду (utochki pull или utochki push) и продолжить работу, или же сидеть и забрасывать файлы руками, используя mc или любой другой FTP-capable файловый менеджер? :)
Пользую файлзиллу в качестве фтп клиента. Кинуть файлы на сервер — это одно простое действие и все произойдет.
По ssh захожу просто наутилусом, gvfs — наше всё.
Для этого надо запускать файлзиллу и самостоятельно логиниться на серваке. Почему бы это замечательное и интереснейшее занятие не поручить машине, которая изначально создавалась для упрощения выполнения рутинных задач?
А что, уточек этих твоих не надо исполнять и давать им какие-то там команды, а еще они же откуда-то должны узнать что именно ты собрался деплоить, куда, как… Конфиг после или до деплоя надо бы поредактировать и т.п. Эти ваши утки ничего не упрощают, просто извращают и без того простую задачу заливки кучки файлов по фтп.
Вот откровенно не понимаю, чего такого они делают вообще и как этим пользоваться. Говорю же, статья кривая. И где же пример того самого YAML файла, который теоретически мог связать всю картину воедино?
Толи я такой тупой, толи статья кривая, но я не понял, «нафига?» и чем оно вообще полезно.
Статья не кривая, остаётся единственный вариант.Значит просто не сталкивался с проблемой. Есть хостинг, который умеет только FTP. Есть сайт, сделанный из статического HTML. Для того, чтобы не дрочиться каждый раз с ручной заливкой сайта на сервер, есть уточки, которые кря-кря и файлы на месте.
Подскажите, в каком месте приходится дрочиться, заливая сайт по ftp? Я почему-то никогда не испытывал проблем. Может что-то не так делал? =\
Так что там у вас кря-кря?
По ssh захожу просто наутилусом, gvfs — наше всё.
Вот откровенно не понимаю, чего такого они делают вообще и как этим пользоваться. Говорю же, статья кривая. И где же пример того самого YAML файла, который теоретически мог связать всю картину воедино?
Спасибо за напоминание. Забыл ссылку на оригинальный пост в бложике. Вообще, этот пример конечно есть:
Ftp не секьюрно из коробки и поднимать еще надо.
Вариант с SFTP рассмотрю, но нужно убедиться в том, что не придётся делать ещё один