Как вы деплоите сайты?

Всем привет!

Вопрос ко всем у кого есть сайты, и динамические и статические и те которым нужен сервер приложений и те которые работают через обычный CGI, в общем любые. Интересно как именно вы делаете деплоймент, т.е. как вы обновляете код сайта. Конечно интересны и всякие навороченные способы, кастомный код и всё такое, но еще интереснее как же делает большинство, так что даже если ваш ответ заключается в том чтобы добавить к чьему-то посту «я делаю так же», то не поленитесь его отправить. В целом интересен такой сценарий: у вас уже все настроено, но вы нашли, допустим, опечатку. Что именно нужно сделать после локального исправления опечатки чтобы это отразилось на сайте?

Основные варианты ответов которые я ожидаю услышать (экономлю время отвечающим, если у вас такой вариант, то пишите «у меня сайты на PHP, штук пять, я деплою их как в варианте № 3, через Subversion, вручную» или типа того):

1. Есть локальная папка с содержимым точно таким же как нужно иметь в некоей папке на сервере. Я её просто копирую поверх имеющейся. (Какой протокол? FTP, SCP, rsync?)

2. Локально структура папок не совсем совпадает с той что на сервере (например нужно заливать копию библиотек, но они лежат в общей для сайтов папке). Синхронизацию делает скрипт. (Напишите вкратце что именно делает скприт, если можно, то пошагово).

3. Все файлы нужные для деплоймента лежат в системе контроля версий (в какой именно?). Для обновления сайта нужно закоммитить изменения и сделать update на сервере. (У вас есть для этого скрипт?).

4. Я держу все файлы только на сервере и правлю их прямо там.

5. Есть сложные кастомные скрипты (расскажите что они делают).

6. Для деплоймента я использую стандартную систему деплоймента (Какую? Насколько удобно с ней работать?)

7. У нас в конторе этим занимается специально обученный человек.

Заодно упомяните ориентировочно какой сложности проекты которые вы деплоите.

Если можете заодно сказать как деплоят ваши знакомые, то это тоже интересно. Мой ответ ниже.

Заранее спасибо за ответы.

Если лень отвечать, можно просто проголосовать: www.rsdn.ru/poll/2527.aspx

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Для большынства правок, не затрагиваюшых сторонных приложений вариант 3) через свн. svn up пишется руками с консоли через putty. Для более сложных изменений (аля изменение стуктуры баз данных) одноразовый консольный скрипт по обновлению, дамп базы, новый вариант конфигурацыонных файлов вобщем что нужно, льется на сервер в отдельную папку через свн (спецыально заведен ещо 1 репозиторий для истории таких изменений) далее выполняется с консоли... Обычно ето делается админом сервера. Для более простых проектов формирутся пакет обновляемых файлов и опять таки через админа льется на сервер поверх проекта (свн репозиторий естественно также хранится + в пакет идет файл с данными билда и версии проекта)...

capistrano,
inogda
git push heroku master:)

heroku db: push i vse

Вариант № 3: весь проект в svn + если нужны библиотеки то захожу на сервер по ssh и доустанавливаю.
Иногда возникают специфические задачи, как-то собрать сфинкс из исходников — опять таки ssh и вперед.

И да — 95% проектов на Python + Django и сервера на Ubuntu.

ant deploy

вызывается из крона при наличии метки изменений

Собственно сама сборка делается ant-ом

3 java веб-проекта.

Автоматизированный вариант 3). Все исходники в subversion. Сборка, обновление БД и деплой автоматически с помощью cruisecontrol.

> А там где нет выбора?

Ну вот сейчас на одном проекте нет выбора. VCS — git. Файлы для деплоя в VCS (отдельный репо), но апдейт руками (выдёргивание изменений, релоад апача, рестарт демонов).

А там где нет выбора? Интересно не только что выбирают, но и то как оно всё происходит на самом деле.

Насчет toppcloud без понятия.

> Если кому лень отвечать, то можно проголосовать тут: www.rsdn.ru/...l/PollList.aspx

А что, кто-то уже использует toppcloud в реальных проектах? Как фидбек?

Там где есть выбор, то вариации 3-го.

VCS — svn/git/hg, скрипты — fabric.

Если кому лень отвечать, то можно проголосовать тут: www.rsdn.ru/...l/PollList.aspx

@Юра
Интересно вот это «через него», это значит логин и вручную hg pull -e? Или это скрипт делает?

Еще интересно на чем сайты и какого приблизительно размера / сложности.

после того, как на локальном сервере баг устранен, в 99% путем rsync
1 сайт с поднятым mercurial. обновляю через него.

рсинка в большинстве случаев хватает за глаза.

А) Для простых сайтов — вариант № 4) — через программу Filezilla по FTP.
Б) Для сайтов чуть сложнее — вариант № 1) + изменения в локальной папке сохраняются в системе контроля версий (Mercurial) на сервисе firefly.activestate.com

В) Для еще сложнее — вариант 5) +7) (я не совсем в курсе что там и как устроено).

Что именно нужно сделать после локального исправления опечатки чтобы это отразилось на сайте?
А) зайти на сайт по FTP через Filezilla, открыть нужный файл, изменить его и сохранить изменения, они сохранятся и на сайте.

Б) нужно исправить опечатку в локальной папке, закоммитить ее, потом скопировать изменение на сайт по ФТП

На всякий случай: я не совета спрашиваю, а интересуюсь кто как делает. Вы через Capistrano? Можно чуть подробней?

Несколько сайтов и сервисов работают на App Engine — деплоймент делается скриптом который копирует в спецпапку приложение и нужные библиотеки, а дальше вызывает стандартные средства.
Есть простые HTML сайты — для них я тупо копирую обновления вручную (FTP, Far). (Вариант № 1)

Сайты на Python (WSGI) требуют сервера приложений и деплоятся через свою хитрую систему которая вызывает на сервере python и скармливает ему команды по развертыванию приложения (см. execnet). Каждый деплоймент попадает в свою папку именованную по ревизии. Самый свежий деплоймент прописывается таким образом, что «sudo service website-blabla restart» остановит старую и запустит новую версию.

Підписатись на коментарі