У нас несколько серверов и несколько веток, соответствующих этим серверам.
В SVN попадает код, на который инетпретатор по крайней мере не ругается. В ветку production попадает только тот код, который успешно погонялся на тестовом сервере.
В таком случае, я бы использовал ssh. Настроил управление нужным количеством серверов с одной консоли (ранее пробегала статейка на хабре о фичах ssh), и далее hg up просто рассылается на все сервера.
Очень многие вещи нельзя проверить — скажем миграция продакшен баз. Ее можно многократно проверять на тестовых данных, но никогда не знаешь, что получится на реальной системе. Assumption is the mother of all fuck ups.
Копии кусков базы тоже есть, естественно аннонимизированые. Но:
*) не целиком (тут всё банально — слишком большие базы)
*) случаются веселые проблемы на записях, которые были вырезаны/изменены в процессе аннонимизации. Извращенские кодировки, скажем (это, впрочем, обычно только при первой миграции случается). Вариантов бывает очень много.
Я к чему веду: не всегда нужно автоматизировать процессы. Да и TCO иногда получается ниже при ручном варианте.
IMHO правильно использовать репозиторий для вашей ОС. Если это debian, для примера, вы просто собираете их в пакетики, и кладете в stable репозиторий, и оно само расползается по тому, куда ходят люди. При этом репозитории должны быть, как минимум: development, testing и stable. На development катаются программисты на development площадке. Testing — это то, что скоро станет стабильной версией, или не станет. А stable, на него ходят клиенты.
Да, собираться и класться в репозиторий должно *только* через скрипты. Никакой ручной работы. Соответсвенно, в development попадает каждый коммит. Если коммит поломал сборку, это уже *очень* большая проблема (поломал сборку, это, в том числе и не прошли тесты, да). В stable/testing кладется тоже через скрипты, при условии коммита в эти ветки.
Да, это очень сложная система, но она позволяет добиться большой автономности.
Естесвенно нам нужен репозиторий для исходгого кода, который бы умел хуки. git, hg, svn и далее вполне подойдет.
Далее нам нужен сборщик пакетов, скорее всего у нас все будет внутри одной архитектуры. Ну или двух. amd64/i386. Для сборки нам будет нужен pbuilder, его хватит, да. Если хочется всяких извращений, то можно пойти qemubuilder.
Далее у нас идет управление репозиторием. Для этого можно взять dak (отрыв башки) или reprepro.
Теперь это все надо связать скриптами и начать перется ☺
хм, видимо мы не понимаем друг друга.
мне, как пользователю, нету принципиальной разницы в использовании sftp вместо ftp — только плюс в виде секьюрности. Хотя есть шанс, что я путаю sftp с scp ибо я опять же не вижу никакой разницы при простом копировании/переименовывании/удалении
Вы сейчас не понимаете что такое sftp и как оно работает. Вы не понимаете что такое ftp и как оно работает. Так же вы не понимаете что такое ssh. При этом вы заявляете что sftp = ssh + ftp или ftp over ssh. Это утверждение ложно. И вы не хотите разобраться почему, вы просто продолжаете стоять на своем и ставить мне минусы. Это ваше право, да.
во-первых, я вам минусов не ставил
во-вторых, я утверждаю, что с точки зрения пользователя разницы между ftp и sftp нету почти никакой. Хотите убедить меня, что я неправ — так покажите в чём именно я неправ.
С точки зрения пользователя? Возможно. Я смотрел именно с точки зрения протоколов и их реализации. И когда говорят что sftp это ftp over ssh подразумевают что взяли ssh и в него инкапсулировали ftp. И *это* утверждение ложно.
Принципиально (с точки зрения пользователя) sftp не отличается от ftp. Та же возможность удалённых операций (просмотр каталога, удаление файла). Ну, сами файлы по другому передаются, мультиплексируются по одному защищённому соединению. Принципиальной разницы нет, учитывая что ftp и ftps также должны как-то мультиплексироваться при работе через игольное ушко «жёсткого» файрвола.
Passive/active — это всего лишь особенности реализации, некритичные к целям выкладывания на сервер, о которой идёт речь в топике. Зачем такое было сделано в оригинальном несекьюрном ftp — понятно: ускорение передачи файлов за счёт отсутствия их дополнительной подготовки. Когда файлы прогоняются через шифратор, это преимущество всё равно теряется.
С помощью openssh можно запускать на удалённом конце другой ssh и, таким образом эмулировать passive (недавно на хабре была статья, как это автоматизировать с помощью ~/.ssh/config). Либо пользоваться пробросами сокетов и, таким образом эмулировать active. На худой конец, можно запускать удалённый socks сервер и через него работать обычным ftp клиентом — собственно то, что называется ftp over ssh (не sftp/ftps).
Но принципиальной разницы нет: scp, sftp, socks (и, соответственно, ftp-ssh), пробросы, удалённый логин — это всего лишь отключаемые эндпойнт-примочки к конкретной реализации шифрации/мультиплексирования сокетов. Поэтому ваша придирка к оригинальному комментатору не очень логична (и не стоит такого треда). Если мне закрыли файрволом всё, кроме исходящих http и https и я пользуюсь corkscrew для коннекта к удалённому ssh серверу, слушающему на 443 порту, — я этим не изобретаю нового протокола, хотя corkscrew — это внешняя, по отношению к [open]ssh программа. Изменяется только конфигурация эндпойнтов, а само шифрование остаётся тем же.
Проводя аналогии, если мы закручиваем винт с помощью отвёртки, входящей в мультитул, можно сказать, что мы _завинчиваем_ винт раскладным _ножом_, не называя процесс другим «ножевинчиванием» или другим словом, хотя в других ситуациях, возможно, имел бы смысл различать два процесса. И, раз уж мы завинчиваем, имеет смысл говорить именно о завинчивании, а не о забивании (мультитул может откатываться на возможность забивания, в частности, если у винта сорвана головка) и имеет смысл не уточнять, чем мы его завинчиваем — крестовой отвёрткой или плоской, хотя в мультитуле могут быть обе.
Существует два SFTP: SSH File Transfer Protocol и Simple File Transfer Protocol.
Simple File Transfer Protocol не является защищенным.
SSH File Transfer Protocol является.
Стационар (дома):
— В vim подключил плагины project и netrw.
Asus eee pc (всегда с собой):
— Поставил сервер. Разрешил доступ через ssh.
Сервер (далеко-далеко):
— Пофайлово (задумываюсь о маленьком скрипте для вима).
Итого:
Еее всегда доступен, его можно принести, показать (можно подключить к монитору/проектору), на нем можно в случае чего поправить «на месте».
Чтобы вечно не портить зрение о его маленький монитор решаю проблему синхронизации удаленным доступом с домашнего компа (когда я дома) с большим монитором и привычной клавиатурой.
Таким образом постоянное туда-сюда с сервера и обратно отбрасывается. Конечный вариант — в сеть и там его уже не править, только на еее.
Насколько это удобно судить рано, недавно так начал работать. Пока что все нравится.
Интересно услышать плюсы-минусы, кому моя идея понравилась или нет :)
Я не очень силен в варианте с репозиторием, поэтому ничего стоящего сказать вам не могу. Как разбирусь, пойму — тогда скажу. :)
Думаю, этот вариант нельзя пропустить, тем более учитывая его популярность.
Деб пакеты означают, что апгрейд должен делать только root (или пользователь-sudoer). Или вы используете какое-то решение с дебами в отдельном каталоге? Если да, то какое, — интересно.
Ну да, смысла в пакетах для развертывания приложения на одной машине — мало.
А если есть хотя бы 5-10 машин — очень удобно. Особенно, если с очередным обновлением приложения надо обновить платформу (Django, к примеру).
Скажем так, смысл есть всегда. Правда если вы живете на виртуальном хостинге, то да, тут его мало.
Основной смысл это простота востановления системы в случае краха и автоматизация, которую дает дистрибутив. Да и возможность делать свои инстоляторы тоже интересны, когда маши много ;)
ViceVersa — универсальный способ синхронизации папок, копирования, бекапа, поддержки архива. Можно создавать задания синхронизации через встроенный планировщик или по событию изменения файла.
Есть возможность фильтрации по маске. Вместо удаления можно складывать старые версии файлов. Копирование может осуществляется через ShadowCopy
Z использую для анимационных проектов с 100Gb+ гигабайтами данных).
Минус — это не SVN, нет коммит etc. Это именно апдейт + синхронизация
Когда-то давно использовали такую схему:
Ант собирает проект, запускает тесты, создает тэг в репозитарии, пакует build-директорию, коммитит его в тэг и заливает на удаленный сервер. Далее она распаковывается и заменяет собой старую. Все занимало около 5 минут.
Поддержка, апдейты, production, синхронизация версий.