Открыть список
Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

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

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

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

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

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

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

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

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

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

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

Читать дальше →
Всего голосов 28: ↑21 и ↓7 +14
Просмотры1.2K
Комментарии 12

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

Софт
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: этот подход был недавно принят разработчиками инферно, так что его уже можно считать не альтернативным, а официальным. :)
Читать дальше →
Всего голосов 11: ↑7 и ↓4 +3
Просмотры758
Комментарии 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 посерьезнее, поправил некоторые шероховатости и теперь, думаю, самое время об этом проекте рассказать. У проекта есть документация, тут будет краткий пересказ с лирическими отступлениями.

Читать дальше →
Всего голосов 49: ↑47 и ↓2 +45
Просмотры11K
Комментарии 30

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

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

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

Эта статья о том, как сделать крупное веб-приложение расширяемым и поддерживаемым: архитектура, подходы, правила.
Читать дальше →
Всего голосов 206: ↑202 и ↓4 +198
Просмотры37.7K
Комментарии 108

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

.NET
Из песочницы
Когда требуется объединить несколько управляемых сборок в одном файле, можно воспользоваться утилитой 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-ресурсам, однако этого не происходит.

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

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

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

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

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

Системное администрирование

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

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

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

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

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

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

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

PythonDjango
Из песочницы
Доброе время суток, уважаемые читатели!

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

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

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


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

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

Читать дальше →
Всего голосов 12: ↑12 и ↓0 +12
Просмотры1.4K
Комментарии 19

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

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

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

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

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

PerlПрограммирование
Из песочницы

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


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

Существует 3 подхода для решения этой проблемы:
Читать дальше →
Всего голосов 17: ↑15 и ↓2 +13
Просмотры15.1K
Комментарии 15

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

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

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

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

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

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

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

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

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

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

Выкладка python-проектов с помощью pip и wheel

Разработка веб-сайтовPython
Из песочницы
Привет, Хабрахабр!

В этом посте я буду говорить о выкладке Python-проектов: о том как положить на сервер код и все требуемые сторонние модули. Многие из нас сталкивались с проблемой развертки проекта на боевой машине, но на хабре об этом мало пишут; я хочу поделиться своим опытом.

image

Читать дальше →
Всего голосов 29: ↑28 и ↓1 +27
Просмотры6.1K
Комментарии 20