WEB DAV - как деплой-клиент.

fixxxer

К.О.
Партнер клуба
MagePhp, на поверхностный взгляд, отличается от деплоера только конфигурацией на Yaml и возможность деплоя на несколько серверов сразу. Первый шаг в моем случае будет значительным утяжелением проекта, а второй пока неясно как совместить с удаленной файловой системой. Она принципиально на один сервер отображена. Хотя посмотреть будет интересно. Спасибо.
Он принципиально отличается наличием правильного разделения процедур build и deploy.
На сервере не должно быть никаких гитов и композеров, процесс сборки приложения должен быть отделен. На билд-сервере, на CI или в случае личного проекта на машине разработчика - не суть, но уж точно не на продакшене. На продакшен должны поступать уже собранный проект со всеми зависимостями, не требующий постобработки. Запускать git pull и composer install на продакшене - это то же самое, что собирать на продакшене php из исходников, никто в здравом уме это не делает.

А протокол передачи - отдельный вопрос, это уже дело вкуса.
 

AnrDaemon

Продвинутый новичок
Запускать git pull и composer install на продакшене - это то же самое, что собирать на продакшене php из исходников, никто в здравом уме это не делает.

А протокол передачи - отдельный вопрос, это уже дело вкуса.
Причина, по которой я перешёл на rsync.
 

ksnk

прохожий
Провел небольшое тестирование SabreDav. Вся установка - результат чтения документации на sabre.io + немного гугления.

Сервер - практически незагруженный.

Установка:
Был заведен каталог `dav` на сервере. Там был размещен файл `.htdigest` c содержимым
Код:
foo:SabreDAV:5790c3784a79a018d1186528df520e11
Это строка дает нам пользователя `SabreDAV\foo` c паролем `bar`.

Туда же был скопирован каталог vendors из дистрибутива SabreDav

В корне сайта заведен каталог public c атрибутом 777.

в .htaccess добавлены строки
Код:
    # Output buffering needs to be off, to prevent high memory usage
    php_flag output_buffering off

    # This is also to prevent high memory usage
    php_flag always_populate_raw_post_data off

    # This is almost a given, but magic quotes is *still* on on some
    # linux distributions
    php_flag magic_quotes_gpc off

    # SabreDAV is not compatible with mbstring function overloading
    php_flag mbstring.func_overload off
В корень сайта помещен файл server.php c содержимым
PHP:
<?php

use
    Sabre\DAV;

// The autoloader
require 'dav/vendor/autoload.php';

// Now we're creating a whole bunch of objects
$rootDirectory = new DAV\FS\Directory('public');

// The server object is responsible for making sense out of the WebDAV protocol
$server = new DAV\Server($rootDirectory);

// If your server is not on your webroot, make sure the following line has the
// correct information
//
$server->setBaseUri('/server.php');

// The lock manager is reponsible for making sure users don't overwrite
// each others changes.
$lockBackend = new DAV\Locks\Backend\File('dav/locks');
$lockPlugin = new DAV\Locks\Plugin($lockBackend);
$server->addPlugin($lockPlugin);

use Sabre\DAV\Auth;

$authBackend = new Auth\Backend\File('dav/.htdigest');
$authBackend->setRealm('SabreDAV');
$authPlugin = new Auth\Plugin($authBackend);

// Adding the plugin to the server.
$server->addPlugin($authPlugin);

// This ensures that we get a pretty index in the browser, but it is
// optional.
$server->addPlugin(new DAV\Browser\Plugin());

// All we need to do now, is to fire up the server
$server->exec();
Вся работа на клиенте велась в Total Comnder.

Подключение к серверу - Сеть->Подключить сетевой диск, далее строка
http://<MyServer>/server.php/
После чего появился запрос на авторизацию -> `SabreDAV\foo` c паролем `bar`.

тестирование производилось на клиенте - Window XP SP3. Никаких дополнительных магий мне не потребовалось делать. Возможно, все уже оказалось сделано при более ранних попытках работы с dav.

Для тестового комплекта файлов использовался каталог bin+vendors проекта SabreDav

Общий размер файлов ~3.5м Всего файлов 756, каталогов 151


Закачка тестового комплекта файлов
8:37
Удаление тестового комплекта файлов
34 секунды - проверка списка файлов, всего 2:03

По ftp та же операция занимает
закачка комплекта - 1:45
удаление - 0:30

Примерный проигрыш скорости - 5 раз.

Однако, на больших файлах (5 и 14 мб) примерное время одинаково, 14 мб грузится примерно по минуте.
Файл на +200мб загружаться отказался. Прилетел файл размера 0, загрузка кончилась удивительно быстро. С этим еще предстоит разобраться.

P.S. В server.php случайно оказался отладочный кусок. удален...
 
Последнее редактирование:

ksnk

прохожий
Мой тотал не использует дополнительные плагины, диск подключается системной командой.
Explorer (тот, у которого в левой части дерево Избранное/Библиотеки/Компьютер/Сеть)->Сеть(Правая кнопка)->Подключить диск. Вызывается то самое подключение, как и в Тотал.

Хотя, еще более разумно проверять Штормом - это, imho, естественный, "боевой" способ применения. Сейчас сеть нагружена, проверить смогу только завтра утром.
 

ksnk

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

Absinthe

жожо
@fixxxer, а ты использовал уже этот http://magephp.com/ в проде?
Какие впечатления?

Заметил, что все говорят, что это всё нужно, но на практике используют либо самодельные решения, либо capistrano и его аналоги.
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Заметил, что все говорят, что это всё нужно, но на практике используют либо самодельные решения, либо capistrano и его аналоги.
«Yet Another Stack(Software) To Maintain» и все такое. Поэтому в реальности берут либо что уже есть своего написанного, либо то, что сможет поддерживать какой нибудь девопс или админ.
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Внимание, загадка, кстати: что попадет на продакшн при команде mage deploy to:production, если в данный момент вы переключены на другую ветку в гите? )
 

ksnk

прохожий
Магелан, после автоматического выкидывания тестов и доков, занимает 75 файлов, 20 каталогов ~256к. В то время как деплоер приволок с собой 12 симфонических и околосимфонических проектов, общим размером +5 метров и >1к файлов.
К тому же, у магеллана свой собственный ямл, не симфонический. Это просто праздник какой то :)
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
@ksnk, тоже оцениваешь проект по размеру исходников? У меня для тебя хреновые новости =D
 

fixxxer

К.О.
Партнер клуба
@fixxxer, а ты использовал уже этот http://magephp.com/ в проде?
Неа, но знаю тех, кто использует. :) Я обычными makefiles, мне так проще.

Внимание, загадка, кстати: что попадет на продакшн при команде mage deploy to:production, если в данный момент вы переключены на другую ветку в гите? )
Бга! :) Я помнится в какую-то деплоилку на grunt.js вставлял проверку на текущий бранч, чтобы валилось если что :)
Сам я при билде в своих makefiles делаю полный чекаут во временную директорию, пусть медленнее - зато надежно, и никакой нехороший человек не сделает билд из своей незапушенной working copy.
 

fixxxer

К.О.
Партнер клуба
Магелан, после автоматического выкидывания тестов и доков, занимает 75 файлов, 20 каталогов ~256к. В то время как деплоер приволок с собой 12 симфонических и околосимфонических проектов, общим размером +5 метров и >1к файлов.
К тому же, у магеллана свой собственный ямл, не симфонический. Это просто праздник какой то :)
А phpunit-то вообще 100500 файлов! Зачем, если можно просто assert-ы писать!
 

ksnk

прохожий
А зачем тесты чужого проекта в моей небольшой утилитке? Я ее еще и в phar собираюсь паковать. Phpunit туда тоже понадобится? Вот прямо на чужом боевом сервере, куда я приползу три файла поменять?
Вот отлаживать проект с полными сорцами, для удобства, можно со всей требухой.
 

fixxxer

К.О.
Партнер клуба
Эмм, а какое отношение объем кода mage (или phpunit) имеет к продакшен-серверу?
 

ksnk

прохожий
@fixxxer, Ну, если вспомнить то, что я там фантазировал на первой странице - мне хочется получить средство для отладки на боевом сервере, к которому разработчик подключается как к удаленной файловой системе. И тут же может лезть грязными лапами в любой конфиг и любой файл... В разумных пределах, конечно...
Вся логика сохранения работоспособности боевого сервера остается внутри этого самого средства, например, все новозагруженные файлы размещаются в параллельной файловой структуре - что-то вроде режима деплоя с откатами у деплоера и мага.
Для этого мне понадобился webdav на php, чтобы иметь контроль над загружаемыми файлами и магелан или его кусочки для всего остального. Чужие тесты в готовом продукте не нужны.
 

fixxxer

К.О.
Партнер клуба
Не надо отлаживать на боевом сервере.

Если на нормальную development & staging инфраструктуру жмут денег - то шли их нафиг^W^W^W подними под отдельным юзером на отдельном домене development-копию, прямо с .git, монтируй себе по sshfs/davfs/whatever и экспериментируй. Пофиксил - комит, пуш, деплой.
 

MiksIr

miksir@home:~$
@fixxxer, там если дальше почитать - у человека от слова "консоль" приступ паники. Я хотел ему с самого начала предложить и копию от отдельного юзера, и если совсем там беда и нужен домен - A/B по кукам сделать. Но, имхо, тут велосипедпромстрой, который с азов нужно менять. А ты ему про деплой...
 

ksnk

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