Pull to refresh
  • by relevance
  • by date
  • by rating

DevOpsMinsk Meetup #9 при поддержке Wargaming пройдет 8 сентября. Онлайн

Wargaming corporate blog Conferences

8 сентября мы сможем обсудить, как построить эффективную систему взаимодействия при разработке больших энтерпрайз проектов, а также разберемся в Cloud Native. 

Рассказываем о спикерах и темах выступления.

Читать далее
Total votes 3: ↑3 and ↓0 +3
Views 147
Comments 0

Простой скрипт деплоя

Website development *
Хочу сказать сразу, цель этого поста не предоставить универсальное решение задачи развертывания кода на сервере, а показать пример, один из вариантов решения такой задачи. Подойдет ли это решение для вашего случая — решать вам.

Итак, задача выгрузки кода на сервера, одна из самых частых рутинных задач в работе программиста. Очень хорошо эта проблема освящена тут. Но до сих пор, многие решают её с помощью тупого копирования выбранных файлов по FTP, что зачатую приводит к путанице, и ошибкам. Ниже я предлагаю более или менее универсальный скрипт на языке bash, который позволит автоматизировать задачу.
Читать дальше →
Total votes 15: ↑7 and ↓8 -1
Views 5.8K
Comments 62

Развертывание Django-проектов c помощью Fabric

Django *
В одном из проектов необходимо регулярно выкладывать код из ветки stage на staging сервер. Начали делать это вручную — входишь через ssh, делаешь git push origin stage, если нужно — обновляешь базу и затем перезапускаешь apache. К концу этой недели решили, что хорошо бы все эти действия выполнять одной командой. Я прошерстил блоги — сейчас очень активно пишут про использования для этих целей библиотеки Fabric (это аналог Capistrano из Ruby on Rails).
Читать дальше →
Total votes 49: ↑40 and ↓9 +31
Views 10K
Comments 11

Использование deb-пакетов для дистрибъюции кода

Website development *
В этой статье я хочу рассказать, о том, как можно внедрить систему сборки deb-пакетов для некоторого абстрактного проекта. Плюсов в распространении и развёртывании ПО на основе пакетов несколько:
  • Атомарность пакета (представление продукта в виде одного файла);
  • Наличие скриптов пред/пост установки/удаления ПО;
  • Возможно указания зависимостей для ПО.
Кроме того, при развёртывании ПО на основе пакетов, а не на основе SVN, вы гарантировано защищены от проблем с .svn-папками.
Читать дальше →
Total votes 33: ↑28 and ↓5 +23
Views 4K
Comments 26

Простая схема деплоя мультисайтового друпала

Drupal *
Сразу оговорюсь что я во всем что касается друпала новичок и друпало-гуру пользователям наверно ничего нового не расскажу. Все нижеописанное есть результатом немногим больше годичной деятельности в области предоставления хостинга сайтов на друпале нескольким знакомым.

Думаю все знают, что друпал предоставляет такую прекрасную фичу как мультисайтовость — в папке sites создаете себе несколько папок с различными конфигами и смело натравляете все домены на одну папку с друпалом. Все гениально и просто ровно до того момента как выходит новая версия друпала — переносить папки в консоли мне было накладно, переписывать новый друпал поверх старого — как-то не по феншую, вот я и придумал следующую схемку

Читать дальше →
Total votes 28: ↑21 and ↓7 +14
Views 1.2K
Comments 12

Deployment вашего софта для OS Inferno

Software
Tutorial
К сожалению, встроенного механизма для распространения и установки дополнительного софта в OS Inferno нет. Если вы написали модуль для Limbo или полноценное приложение, и хотите им поделиться, то вариантов его распространения немного:
  1. просто выложить ваши файлы на любом сайте, и предоставить пользователям вручную устанавливать их в свою систему куда и как угодно
  2. использовать такие же mkfile/mkconfig файлы какие используются стандартными модулями и приложениями в /appl/

Как вы понимаете, первый вариант — это, фактически, не вариант. :) Это возврат назад, в пещеры. Второй вариант используется, например, для всего софта в репозитории mjl. Но и у этого подхода есть неприятные ограничения, вызванные тем, что ваши файлы в результате просто копируются в системные каталоги /dis/, /module/, etc. (точно так же, как стандартные модули и приложения из /appl/):
  • если используется *nix как host OS, и Inferno установлена общесистемно root-ом или менеджером пакетов вашего дистрибутива, то для установки дополнительных модулей/приложений потребуются права root (либо sudo mk в host OS, либо sudo emu и нативный mk)
  • глобальная установка неудобна, если хочется для своего приложения использовать модифицированную версию этих модулей/приложений
  • глобальная установка неудобна, если разным приложениям нужны разные версии одного и того же модуля (mjl решает эту проблему традиционным для *nix способом добавляя номер major версии к имени модуля, что не очень элегантно и приводит к именам вроде «util0.m»)
  • деинсталляция превращается в нетривиальную операцию, что в конечном итоге приводит к замусориванию системных каталогов
  • имена модулей/приложений разных разработчиков могут конфликтовать (впрочем, эта проблема есть и в *nix/win, и её можно обойти используя подкаталоги в /dis/ и /module/ с именем разработчика или его сайта)

Я хочу предложить альтернативный подход, разработанный по мотивам DJB'шного slashpackage. Update: этот подход был недавно принят разработчиками инферно, так что его уже можно считать не альтернативным, а официальным. :)
Читать дальше →
Total votes 11: ↑7 and ↓4 +3
Views 758
Comments 1

Автоматизируем выкладку django-проектов на сервер

Django *
Настраивать VDS'ки для выкладки django-проектов довольно утомительно бывает, да и легко что-то забыть (т.к. делаешь это не каждый день). Гораздо лучше, когда этот процесс автоматизирован: с меньшими усилиями можно получить правильно настроенный проект и набор команд для работы с ним.

Существую разные подходы к этому процессу: специфичные для питона (fabric, buildout) или неспецифичные (puppet, Chef, наборы shell-скриптов и т.д.).

Подход fabric — локально выполняемый скрипт ходит по ssh на сервер и выполняет там команды. Этот подход довольно прямолинеен и прост в отладке, тем и хорош (обзор на хабре). Из разнообразных команд fabric постепенно вырисовался велосипед под названием django-fab-deploy. Это набор fabric-скриптов, который умеет настраивать серверы под Debian Lenny или Squeeze, а потом с минимальными усилиями разворачивать там django-проекты и управлять этими проектами в дальнейшем.

С выходом Debian Squeeze взялся за django-fab-deploy посерьезнее, поправил некоторые шероховатости и теперь, думаю, самое время об этом проекте рассказать. У проекта есть документация, тут будет краткий пересказ с лирическими отступлениями.

Читать дальше →
Total votes 49: ↑47 and ↓2 +45
Views 11K
Comments 30

Масштабируемые JavaScript приложения

JavaScript *
Более месяца назад в статье FAQ по JavaScript: задавайте вопросы был задан вопрос «Подскажите примеры хорошего подхода организации JS кода к сайту на достаточно высоком уровне. Как можно узнать подробнее практики реализации например gmail?».

Пришло время ответить на данный вопрос. Я немного затянул т.к. хотел рассказать доклад на одноименную тему на Я.Субботнике. Доклад был очень коротким многие важные моменты пришлось выкинуть. Статья — более-менее полная версия.

Эта статья о том, как сделать крупное веб-приложение расширяемым и поддерживаемым: архитектура, подходы, правила.
Читать дальше →
Total votes 206: ↑202 and ↓4 +198
Views 38K
Comments 108

WPF Applications Deployment: объединение .NET сборок в одном исполняемом файле

.NET *
Sandbox
Когда требуется объединить несколько управляемых сборок в одном файле, можно воспользоваться утилитой ILMerge:

ILMerge.exe /t:winexe /out:test.exe test1.exe test2.dll

В данном примере из двух сборок будет создан объединённый исполняемый файл. Атрибут /t:winexe указывает на то, что результатом будет оконное (WinForms) приложение.

Однако, с приложениями WPF утилита ILMerge работать не умеет. Это связано с особенностями компиляции XAML-файлов, использующихся в архитектуре WPF для декларативного описания структуры, поведения и анимации пользовательского интерфейса:
  • XAML-файл компилируется в BAML-код (аналог IL), который затем размещается в ресурсах сборки.
  • С помощью объявлений пространства имён XML XAML-файл может ссылаться на другие сборки.
  • XAML-файлы могут ссылаться друг на друга используя, к примеру, такие элементы, как объединённые словари ресурсов и фреймы.

При объединении подобных сборок ILMerge следовало бы исправить все URI доступа к BAML-ресурсам, однако этого не происходит.

К счастью есть другой способ: разместить файлы сборок внутри объединённой в качестве встроенных ресурсов.
Читать дальше →
Total votes 8: ↑5 and ↓3 +2
Views 5.5K
Comments 3

Плавный перезапуск FastCGI-процессов — django_graceful

Django *
Из всех способов деплоинга django-проектов мой любимый — FastCGI. Он поддерживается большинством веб-серверов, позволяет внятно разграничить права доступа и имеет массу других преимуществ.

Однако в django его реализация не лишена недостатков. Чтобы запустить FastCGI-сервер нужно выполнить «./manage.py runfcgi» с немаленьким количеством параметров, которые если и можно запомнить, то точно не захочется писать каждый раз руками. А если это происходит в контексте обновления кода проекта на боевом сервере, то команд становится ещё больше. Приходится писать различные wrapper-ы для запуска и перезапуска, которые засоряют проект.
Читать дальше →
Total votes 53: ↑50 and ↓3 +47
Views 2.7K
Comments 29

Разворачивание образов ОС при помощи FOG

System administration *

В этой статье я постараюсь вас познакомить с бесплатным продуктом FOG, который служит созданию и развертыванию образов ОС. К своему удивлению я не увидел статей на русскоязычных ресурсах, посвященных, безусловно, этому интересному продукту.
Отмечу, что я не ставлю перед собой задачу описать абсолютно все нюансы и расписать всё. Ничего не заменит ваш личный опыт. Я хочу лишь приоткрыть занавес и помочь многим системным администраторам двигаться в нужном направлении, остальное в ваших руках.
Читать дальше →
Total votes 47: ↑44 and ↓3 +41
Views 22K
Comments 17

Locum + Capistrano + git на Windows: маленькое приключение с размещением

Ruby on Rails *
Эту маленькую заметку я постаю, видимо, больше для себя. Сегодня у меня был первый опыт выгрузки приложения RoR на хостинг Locum с использованием связки Capistrano и git на Windows 7. Пришлось помучаться — первый блин чуть не встал комом.
Под катом мое маленькое приключение
Total votes 14: ↑11 and ↓3 +8
Views 3.5K
Comments 19

Использование bat файлов для развертывания приложений

Abnormal programming *
Sandbox
В процессе трудовой деятельности пришлось столкнуться с одной задачей. Есть некоторый продукт, работающий под Windows и состоящий из нескольких компонент — ядра, протокола, моста и канала доставки. Часть компонент написана на JAVA, часть на C++. Каналов доставки может быть от одного до двадцати. Каждый компонент использует свою БД (в качестве СУБД выступает MS SQL Server). Для компонент, написанных на JAVA, структура БД создается автоматически, для компонент, написанных на C++ структуру нужно создавать вручную SQL скриптом. Каждый компонент должен работать как сервис в системе. Все это добро должно быть тщательно протестировано. Для каждого теста необходимо пересоздавать БД и системные сервисы.

Проделав это дело один раз, я задумался, а как бы этот процесс можно было максимально автоматизировать (действия не сложные, но рутинные). Решение должно быть простым и не требующим установки какого-либо софта. Поэтому сразу же выбор пал на древний, но проверенный временем файл сценариев на встроенном командном языке — Bat. Заодно проверим, на что bat скрипты еще способны.
Читать дальше →
Total votes 25: ↑18 and ↓7 +11
Views 15K
Comments 19

Космическая Змея в Магазине или Как Мы «CheeseShop» Ставили

Python *Django *
Sandbox
Доброе время суток, уважаемые читатели!

Ниже приведена увлекательная(?) история о том как наша организация решала проблему т.н. «деплоймента как у людей». Наш основной язык разработки Python, с примесями разных интересных (и не очень) пакетов (Django, Bottle, Flask, PIL, ZMQ, и т.д.).

Начнём с краткого описания одного из наших приложений:

  • Django 1.4
  • MySQL
  • Celery для крон-имитации и поддержки вспомогательных функций в фоновом режиме
  • Daemon-процесс, основанный на Django management command


Всё это дело работает под связкой gUnicorn и nginx, на ОС CentOS 5.8.

Детали, как принято, ниже.

Читать дальше →
Total votes 12: ↑12 and ↓0 +12
Views 1.4K
Comments 19

XML-сериализация для развёртывания начальных данных в Caché. Часть I

InterSystems corporate blog Programming *XML *
image
Думаю, не преувеличением будет сказать, что почти каждый разработчик информационной системы сталкивается с задачей формирования начальных данных при внедрении.
У Caché-разработчиков есть несколько стандартных подходов к инициализации начальных данных:

  • загрузка данных для классов-справочников из внешних файлов,
  • получение данных из онлайн-сервисов,
  • импорт статических данных из файлов-глобалов,
  • выполнение методов класса, создающих начальные данные из “зашитых” в код данных.

Для инициализации статических данных, небольших справочников или каких-либо конфигурационных данных системы, есть еще один способ, о котором пойдет речь в статье.
Читать дальше →
Total votes 6: ↑6 and ↓0 +6
Views 4.4K
Comments 4

Perl — еще раз о деплое

Perl *Programming *
Sandbox

Perl — еще раз о деплое


Perl является скриптовым языком, с невозможностью компиляции в машинные коды, которые могли бы непосредственно выполняться на процессоре. Это создает проблему развертывания приложения на компьютере конечного пользователя. Еще сильнее эту проблему усугубляет присутствие в вашем приложении модулей из CPAN: заставить работать модуль на любой системе порой бывает проблематично.

Существует 3 подхода для решения этой проблемы:
Читать дальше →
Total votes 17: ↑15 and ↓2 +13
Views 15K
Comments 15

Настраиваем Git развертывание для виртуальных машин Windows Azure

Microsoft Azure
Привет всем! Сегодня я постараюсь подробно описать процесс настройки Git-публикации для виртуальных машин в Windows Azure. Многие из Вас уже знают, что Windows Azure предоставляет разработчикам возможность публикации приложений в облаке посредством Git (подробное описание этого процесса можно найти здесь http://habrahabr.ru/company/microsoft/blog/150086/), но немногие знают что Git публикация функционирует за счет так называемого проекта Kudu.
Читать дальше →
Total votes 16: ↑12 and ↓4 +8
Views 5.4K
Comments 2

Питон в коробке – venv в python 3.3

Python *
Tutorial
Наверняка, большинство из тех, кто разрабатывает или деплоит Python приложения, использует виртуальные окружения. В частности через virtualenv, написанный Ian Bicking.

Идея оказалась так хороша и распространена, что нечто похожее теперь присутствует в Python 3.3 из коробки в виде модуля venv. Он почти такой же, как virtualenv, только немного лучше.
Читать дальше →
Total votes 47: ↑44 and ↓3 +41
Views 108K
Comments 23

12 антипаттернов DevOps

ScrumTrek corporate blog DevOps *
Translation
От переводчика. Продолжая серию переводов про DevOps, в этот раз хочется поговорить о том, как делать НЕ надо. Мы сталкивались с этим, каждый раз, когда приходит что-то новое, например agile. Возникают культы карго, слышаться речи, что мы особенные и у нас все не так и так далее. Так давайте же попробуем избежать этого в случае DevOps.

Итак, вы хотите стать DevOps? Хорошо, но прежде чем начать, давайте взглянем на некоторые вещи, которые вы не должны делать.

В старые добрые времена, мы просто называли их «плохие идеи», но появилась дипломатия и политкорректность, ушел «мозговой штурм» и появился «idea shower», а вместе с ним и слово «анти-паттерны».

Если «паттерн» это правильный путь, то по своей сути «анти-паттерн» является неправильным — и поэтому, чтобы не дать вам пойти неверным путем, мы составили этот список (с небольшой помощью DevOps сообщества).
Читать дальше →
Total votes 19: ↑5 and ↓14 -9
Views 15K
Comments 18