Heroku power

27 November 2014

   Задался я значит целью снова изучить работу облачной платформы для приложений - Heroku. И.. как же тут всё хорошо! И удобная консольная утилита для работы, и удобная вэб-морда для управления приложением, и десятки подключаемых модулей баз данных, логирования, статистики, безопастности и прочего.. 

   Из минусов обычно утверждают что у них там всё дорого, но в платный сегмент пока не спешу. А вот повозится с настройками автоматизации grunt'а пришлось. Стандартный buildPack не хотел запускать grunt'овские задачи. Кто-то показывал варианты форсированного запуска через путь в node_modules, но после пяти падений с огромными логами у меня сложилось впечатление что такой запуск grunt'а влечет за собой неконтролируемый запуск серверных задач. Благо есть решение в виде другого buildPack'а! Heroku-buildpack-nodejs-grunt. Теперь всё завелось как по маслу.

   Но разрабатывать на одной машине, тем более из под консоли, не очень то удобно. По этому начал изучать способы клонировать приложение. Окей, всё есть в стандартных решениях. Клон через стандартные утилиты. Вот только нужно настроить правильно соединение и аутентификацию с ssh сервером. А вот тут начинаются windows-грабли. Под окнами, где нет стандартных решений ssh'а, к текущему времени оказалось несколько оных: установленный в комплекте с git'ом, установленный cygwin'ом и конечно же putty! И какой из них запускается - ещё тот пазл. И далеко не все из них правильно видят путь к домашней папке пользователя, что бы вычитать настройки в .ssh/confing. Но благо можно задать настройки через главный файл настроек.. 

   В добавку к теме о ssh - нашел мануал про организацию обратных устойчивых туннелей. Чуточку ссылок, и строка кода. После кода, к слову, нужно поменять права запуска сервису на пользовательские, иначе опять не там будет конфигурации искать.

cygrunsrv -I AutoSshTunnel -p c:\cygwin64\bin\sutossh.exe -a "-M 20000 -R 7557:127.0.0.1:22 user@dest.hostname.com" -e AUTOSSH_NTSERVICE=yes

   И коль пошли консольные комманды - три случая использования команды 'find', облегчающие жизнь. Раньше мучился, выборочно выкачивал каждый архив из подпапок, собирал их, а потом на другой машине так же руками по файлу распаковывал. Жуть. Теперь же пара команд - и дело сделано. Спасибо askUbuntu! В добавок нашел волшебный аргумент '-atime', помогающий вычищать мусор, который не использовали к примеру уже два дня.

find -maxdepth 2 -name "*.zip" | zip masters.zip -@
find -maxdepth 2 -name '*.zip' -exec sh -c 'echo unzip -d "${1%.*}" "$1"' _ {} \;
find -maxdepth 1 -atime +2 -exec rm -rf {} \;
find -maxdepth 1 -type f -not -name "removed.conf" -name "*.conf" -exec sh -c 'sed "s/cms1-dev/cms2-stage/g" $1 > $1.tmp && mv $1.tmp $1' _ {} \;
find `pwd` -maxdepth 2 -name "done" -atime +2 -exec sh -c 'echo "${1%/done}" && echo "${1%/done}.zip"' _ {} \;


instagram ]


comments powered by Disqus

© Oleksiy Tishyn 2018