Pull to refresh

Capistrano: удалённое развёртывание приложений

Website development *
В этой статье описывается пример использования инструмента Capistrano для удалённого развёртывания приложений. В качестве примера берётся приложение на PHP.

Capistrano — это инструмент, который может выполнять задачи на удалённой машине через ssh-доступ. Он разработан на языке руби и широко применяется для публикации приложений Ruby on Rails, Однако его легко можно использовать вместе с другими языками программирования, например, PHP.

Для более детального ознакомления и практического использования следует прочитать дополнительную документацию и попрактиковаться. Я же хочу просто продемонстрировать возможности капистрано.
Читать дальше →
Total votes 27: ↑23 and ↓4 +19
Views 58K
Comments 29

Capifony. Или деплоим symfony проект через Capistrano

Symfony *
Я уже год программирую на PHP с использованием symfony framework и нахожу в этом истинное удовольствие. Однако, есть некоторые процессы разработки сайта, которые данный фрэймворк не полностью покрывает, да и не обязан =)
Одним из таких процессов является деплоймент или разворачивание и обновление проекта на рабочем сервере. Для выполнения подобной рутинной операции было написано множество скриптов и одним из самых популярных является Capistrano. Он чрезвычайно прост в освоении, совершенен функционально и крайне гибок в настройке, однако, из коробки заточен под деплой RoR приложений, для чего собственно и создавался.
Сегодня я постараюсь вам рассказать как использовать Capistrano для деплоймента symfony проектов.
поехали
Total votes 11: ↑9 and ↓2 +7
Views 7.6K
Comments 13

Capistrano и php

Website development *
Sandbox
image Всем привет. Сегодня я хотел бы ещё раз поговорить о замечательном deploy-ере Capistrano.

Напомню, что Capistrano — это Open Source-ный инструмент для выполнения скриптов на нескольких серверах, который в основном используется для web приложений. Он позволяет автоматизировать процесс развертывания новой версии на одном или нескольких web серверах и включает поддержку таких задач, как например изменение базы данных.

Capistrano написан на Ruby и является «модулем» (или компонентном, не знаю как лучше) фреймворка Ruby on Rails.

Данный топик по большей части является переводом туториала со страницы проекта на github-е с некоторыми дополнениями, изменениями и сокращениями специфичными для php (или для «не RoR»). Здесь не будут рассматриваться вопросы работы с несколькими серверами и базой данных, это всего лишь небольшое пособие для начинающих.

Итак, допустим на нашем локальном компьютере в паке /path/deploy/from находится приложение написанное на языке php. У этого приложения есть git репозиторий находящийся по адресу example.net/project.git с актуальным кодом. Также у нас есть хостинг по адресу example.com с ssh доступом и папкой /path/deploy/to куда мы собираемся залить наши файлы. Мы не хотим постоянно возиться с ftp клиентом и решили потратить несколько часов для того, чтобы разобраться в деплойере capistrano. Давайте приступим.
Читать дальше →
Total votes 40: ↑39 and ↓1 +38
Views 30K
Comments 15

Связка rvm + Rails + Nginx + Unicorn или деплоим рельсы правильно

Ruby on Rails *
Sandbox
Целью данной заметки я ставлю в подробностях описать организацию сервера для Rails приложений в самой популярной на данный момент связке: rvm + Rails + Nginx + Unicorn. К написанию статьи побудило отсутствие полной пошаговой документации по этой связке, понятной не только ядреным профессионалам этой области. Далее я попытаюсь подробно, шаг за шагом, описать идеологически правильный процесс организации сервера для обслуживания нескольких Rails приложений (на примере одного) — если у вас есть абсолютная уверенность в том, что на подопытной машине никогда не будет работать более одного приложения — настройка может быть существенно короче и проще. Хочу предупредить, что тонкости, касающиеся работы приложения под высокой нагрузкой в статье не описываются, т.к. цель ставилась иная — заставить работать приложение в связке и сократить количество конфликтов с другими приложениями до минимума.
Читать дальше →
Total votes 68: ↑63 and ↓5 +58
Views 54K
Comments 135

Отправка уведомлений на почту при деплое проекта

Programming *
В нашем проекте при каждом деплое разработчики, тестеры и ещё пара людей получают замечательные письма:
Subject: Наш проект версии v1.1.1 обновлён на сервере 'testing'

user1 выложил следующие обновления на сервер 'testing':

Коммиты по задачам:
jira.local/browse/PROJECT-1234

Полный список коммитов с предыдущего обновления:
4392a53 Thu Aug 18 17:50:32 2011 +0700 user1 / [PROJECT-1234] сделал полезное
f2fcfe2 Thu Aug 18 17:37:53 2011 +0700 user1 / сделал страшное
cb1fcbe Wed Aug 17 15:18:10 2011 +0700 user2 / зарефакторил

Изменения по файлам:
file1 | 4 ++--
file2 | 8 ++++----
file3 | 8 ++++----
3 files changed, 10 insertions(+), 10 deletions(-)

Такое решение помогло нам избавиться от вопросов тестеров «Ну что, выложили уже исправление бага XXX?», «Что нового на тестовом сервере?». Так же — все члены команды, отдел внедрения и руководство в курсе, что происходит с кодом на серверах.
Для работы используется git, capistrano (+ multistage), php, bash (+ некоторые консольные утилитки). Если интересно — заходим под кат.
Читать дальше →
Total votes 4: ↑4 and ↓0 +4
Views 5.2K
Comments 11

Amazon on Rails

Ruby on Rails *
В данном посте я решил поделиться опытом разворачивания rails сервера на Amazon. Все предыдущие rails проекты я выкладывал на готовые сервера. Это были частные сервера, или широко известный сервис heroku. И единственные команды, которые я посылал серверу, были cap deploy и cap deploy:cold. Но в последнем проекте заказчик пожелал разместить сайт на своем амазоновском образе, поэтому пришлось погрузиться в тему более глубоко.
Читать дальше →
Total votes 30: ↑27 and ↓3 +24
Views 2.9K
Comments 17

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

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

Рецепт для capistrano — импорт production базы на девелоперскую машину

Ruby on Rails *
Иногда возникает ситуация, когда необходимо получить production базу к себе, для разработки и тестирования.
Я написал, как часть гема этот рецепт, сейчас работает только если база на production и development одна и та же (в нашем случае postgresql). При желании можно добавить и другие базы.

Для этой цели (как и для других) нам отлично подойдет Capistrano.

Для того, чтобы использовать рецепт необходимо установить 7zip на сервере и локальной машине:
sudo apt-get --assume-yes install p7zip-full

Читать дальше →
Total votes 9: ↑7 and ↓2 +5
Views 2K
Comments 11

Ruby on Rails. C локального хоста на VDS за 15 минут

Website development *Ruby on Rails *
Sandbox
Доброго времени суток, хабровчане!

Как переехать на VDS за 15 минут и не углубляться в изучение nginx, unicorn и capistrano. Пошаговая инструкция под катом.
Читать дальше →
Total votes 19: ↑13 and ↓6 +7
Views 23K
Comments 22

Дайджест интересных новостей и материалов из мира PHP № 31 (25 ноября — 8 декабря 2013)

Zfort Group corporate blog Website development *PHP *


Предлагаем вашему вниманию очередную подборку с ссылками на новости и материалы.

Приятного чтения!
Читать дальше →
Total votes 51: ↑46 and ↓5 +41
Views 19K
Comments 13

Deploy приложения на RoR 4 с помощью Capistrano 3

Website development *Ruby *Ruby on Rails *
Sandbox

Представьте: Вы — веб-разработчик, который только недавно освоил Ruby on Rails. И тут Ваш первый проект подходит к стадии, когда его нужно выложить в интернет.
Вы, конечно, можете залить его на Heroku, но тамошние цены немного кусаются. Остается только купить VPS, настроить его и выложить проект туда.
«Что может быть проще? Найду какой-нибудь гайд, да следаю всё по нему» — подумаете Вы. Вот только гайдов, которые не просто выкладывают команды, но и объясняющие, что эти команды делают, — единицы, да и те используют уже устаревшую вторую версию Capistrano.

Поэтому я решил написать свой гайд, в котором постараюсь подробно рассмотреть:
  • Первичную настройку сервера
  • Установку и настройку nginx (с модулем PageSpeed), postgresql, redis
  • Установку rvm, rails
  • Настройку гема foreman для управления процессами Вашего приложения
  • Настройку сервера Unicorn
  • Настройку гема Capistrano (v3.1) для автоматизации деплоя


Я надеюсь, что этот гайд будет полезен не только новичкам, но и разработчикам со стажем.

Читать дальше →
Total votes 27: ↑23 and ↓4 +19
Views 62K
Comments 33

Рубин на рельсах: продакшен и деплой для чайников

Website development *Ruby on Rails *
Tutorial
Год назад я довел свое первое рельсовое приложение до приемлемого вида. Вопрос использования готового кода в продакшене ранее меня не заинтересовал. С чего вдруг? Несложный язык, лаконичный фреймворк — уж деплой-то явно не сложнее, чем преодоление ментального тормоза после PHP.

Команда разработчиков Rails рекомендует использовать Phusion Passenger, он что-то вроде mod_php — установил, разместил файлы и полетел. На момент изучения вопроса на форумах хватало баталий о производительности решений; Passenger в них фаворитом не значился.

Совета относительно альтернативы я спросил у техдиректора сайта с миллионом уников в сутки — тот отправил меня гуглить на тему Nginx и Unicorn. Инструкция по настройке продакшена, найденная на Хабре, датировалась 2009 годом. Помимо прочего, ее просто переполняли изъяны уроков «Как нарисовать сову».

Отдельные составляющие процесса кое-где разжеваны по-английский, но монолитный tutorial на глаза так и не попался. В традициях рельсового сообщества лежит принцип, предписывающий делиться результатами и опытом решения проблем.
Делюсь
Total votes 38: ↑30 and ↓8 +22
Views 31K
Comments 81

Самый простой deploy приложения на Ruby on Rails

Website development *Ruby *Ruby on Rails *
Tutorial

Полгода назад я написал пост Deploy приложения на RoR 4 с помощью Capistrano 3. Прошло время, я получил много положительных отзывов, но были и отрицательные. Из них можно было понять следующее:
  • Инструкция слишком сложная для новичка
  • Очень много всего приходится делать «руками»

Я подумал и написал gem 'capistrano3-ubuntu-server-config', который полностью настраивает Ваш «чистый» Ubuntu сервер. Всё, что Вам нужно сделать руками — создать нового пользователя и дать ему права visudo (причем давать ему права на passwordless sudo ему не надо). Он может:
  • Настроить SSH (Добавить настройки 'PermitRootLogin no', 'UseDNS no', 'AllowUsers username')
  • Создать и настроить swap (размер запрашивается)
  • Сделать
    sudo apt-get update
    и
    sudo apt-get upgrade

  • Установить из исходников и настроить как чистый Nginx, так и с модулем Pagespeed
  • Установить PostgreSQL из репозитория, затем создать суперпользователя БД (имя пользователя и пароль запрашиваются)
  • Установить из исходников и настроить Redis
  • Установить RVM с последней версией Ruby и gem'ами Rails, Bundler
  • Скопировать Ваш приватный ssh ключ (например для доступа к приватному git репозиторию) с локальной машины на сервер и добавить его в ~/.ssh/config
  • Установить imagemagick из репозитория (Необходим для Paperclip, постоянно его забываю ставить)
  • Установить любые дополнительные пакеты из репозитория (Запрашивает какие именно)

Можно запустить конфигурационный wizard, который узнает, что именно из вышеперечисленного необходимо сделать и заранее спросит все настройки, чтобы можно было потом пойти попить кофе, а можно запустить отдельные таски. Данный gem будет полезен не только Rails разработчикам, а всем, кто использует Capistrano для деплоя.

Эта статья раскроет следующие темы:

Узнать как задеплоить Ваше приложение за 5 минут активного времени
Total votes 19: ↑16 and ↓3 +13
Views 30K
Comments 34

DevOps зоопарк или как 500px обслуживает более 500TB изображений

System Analysis and Design *Big Data *
Recovery mode
Translation
От переводчика: Я выбрал эту статью для перевода, как яркий пример развивающегося западного стартапа с выраженными для этой группы признаками: очень много новых технологий, использование большого количества сторонних сервисов, эксперименты с архитектурой. В статье затронуты особо интересные темы связанные с построением платформы из микросервисов, DevOps и совсем мало освещенное на Хабре явление под названием ChatOps. Enjoy!


О 500px


500px — это онлайн сообщество, сформировавшееся вокруг фотографии. Миллионы пользователей со всего мира просматривают, делятся, продают и покупают самые красивые фотографии. Мы ценим дизайн, простоту кода и ответственность.
Я DevOps. В 500px, работаю над платформой: бэкенд, мониторинг, управление конфигурацией, автоматизация и конечно же развертывание системы.
Читать дальше →
Total votes 36: ↑34 and ↓2 +32
Views 28K
Comments 19

Каждой ветке по хосту c помощью capistrano

AT Consulting corporate blog Ruby *Ruby on Rails *
Думаю многим знакомо понятие «борьба за staging», когда все разработчики одновременно за день до релиза хотят поделиться своими наработками, чтобы тестировщик их проверил как можно скорее и не пришлось всю ночь править баги, да? Кому интересно посмотреть как мы решаем данную проблему для RoR-проектов с помощью Capistrano прошу под кат.


Читать дальше →
Total votes 14: ↑12 and ↓2 +10
Views 6.1K
Comments 8

Ansible и Rails — гибкая замена Capistrano с сохранением знакомого комфорта

Website development *Ruby *Ruby on Rails *
Sandbox
Tutorial
Capistrano — любимый многими rails-разработчиками инструмент, с помощью которого можно быстро и без заморочек автоматизировать развертывание вашего приложения. Capistrano — стандарт де-факто для системы развертывания RoR, must-know технология для любого уважающего себя рубиста, тот инструмент, которому в своё время завидовали разработчики на python и PHP.
Несмотря на комфорт, от которого не хочется отказываться, чем более сложные задачи мне приходилось решать, тем чаще Capistrano показывал себя к ним не приспособленным.

Я отметил следующие недостатки:
  • Известные проблемы со скоростью. Вследствие своей универсальности, Capistrano деплоит медленно, выполняя лишние проверки и вызовы, которые вы не всегда можете контролировать.
  • Последовательный деплой. Небыстрое время развертывания нужно умножить на количество целевых серверов (однако, можно настроить распараллеливание комманд явным образом).
  • Сильная связанность с рельсами. Конфиги и зависимости Capistrano переплетаются с приложением, становясь его частью. Нельзя создать новое окружение-развертывания (например сервера для раннего выкатывания функционала) без создания нового rails-окружения. В сложных ситуациях Capistrano заставляет уходить от хорошей практики держать только development, test и production окружения.
  • Плагины — палка о двух концах. Давая возможность быстро “прикрутить” развертывание той или иной зависимости приложения, плагины лишают вас контроля ситуации, заставляют действовать так, как действует разработчик плагина. О влиянии лишних “телодвижений” плагинов на скорость деплоя я написал выше.
  • Сложный деплой гетерогенных приложений. Трендом последних лет в рельсах стало выделение самых тяжелых (бекграундных или сетевых) задач в отдельные сервисы, не обязательно написанные на ruby. В такой ситуации capistrano заставляет вас плодить зоопарк из разных систем развертывания для разных языков и технологий.

Многие ruby-разработчики перешли на Mina или решают свои проблемы с помощью ещё более сложных систем управления конфигурациями вроде Chef и Puppet. Все они имеют свои особенности и недостатки и в разной степени решают описанные выше проблемы. Мне же удалось их решить их с помощью Ansible, не растеряв преимуществ Capistrano, к которым я привык.

Ansible это инструмент для управления конфигурациями и в его задачи входит не только описанное в этой статье выполнение удаленных команд на серверах для развертывания и управления отдельным приложением, но и автоматизация серверного администрирования посредством хранимых серверных конфигураций (ролей на языке Ansible). А значит Ansible (как впрочем и Chef и Puppet) позволяет гораздо больше, чем Capistrano и в конечном счете они все не идут с ним ни в какое сравнение. Однако, задача этой статьи дать rails-разработчикам отправную точку для миграции и разъяснить на этом примере основы Ansible. В конце этой статьи, волшебная команда cap production deploy превратится в ansible-playbook deploy.yml -i inventory/production
Кому интересно как — прошу под кат.
Читать дальше →
Total votes 13: ↑13 and ↓0 +13
Views 14K
Comments 13

Самая-самая последняя статья о настройке сервера для Rails

Website development *Ruby *Ruby on Rails *
Были времена на Хабре, когда каждый уважающий (и не очень) себя рельсовик зачем-то выкладывал свои рецепты настройки боевого сервера и деплоя приложения на Ruby on Rails. Таких статей было 60% от всех статей в хабе Rails, и отголоски того времени до сих пор всплывают: так, например, за август я нашёл две статьи про деплой рельс.

Надоело.

$ gem install from-scratch
$ scratchify your_app_name your.host.com


Что это за магия, читайте под катом.



Читать дальше →
Total votes 14: ↑9 and ↓5 +4
Views 10K
Comments 20

Деплой веб-приложений с помощью Ansistrano

Southbridge corporate blog Website development *

ansistrano.deploy и ansistrano.rollback — роли Ansible, предназначенные для управления процессом развертывания приложений, созданных на скриптовых языках программирования (например, PHP, Python и Ruby). По сути это реализация Capistrano в Ansible.


Использование Ansistrano дает следующие преимущества:


  • откат за секунды (с ролью ansistrano.rollback);
  • настройка процедуры развертывания с использованием методов-обработчиков событий «до» и «после» критически важных шагов;
  • оптимизация использования дискового пространства за счет хранения ограниченного количества релизов;
  • выбор между SCP, RSYNC, GIT, SVN, HTTP Download или S3 GET-стратегиями развертывания (в дополнение возможно использование unarchive).
Читать дальше →
Total votes 20: ↑18 and ↓2 +16
Views 12K
Comments 1

Развертывание Redmine с помощью Capistrano

Southbridge corporate blog Ruby *Git *Ruby on Rails *
Translation


Это вторая часть моего руководства о том, как самостоятельно администрировать Redmine в долгосрочной перспективе. Первая часть была посвящена управлению собственной версией Redmine с помощью Git (ссылка на перевод).


Имея собственный репозиторий Redmine, пришло время ...

Читать дальше →
Total votes 10: ↑9 and ↓1 +8
Views 5.9K
Comments 1