Как да се организира разполагане на приложения

  • PHP
  • Git
  • разгръщане
  • уеб разработка


Вчера разбрах, че съм им _dela_ някои абсолютно варварски начин. Използването на Git и bitbucket не е изненада.








Поради непрекъснатата работа на конвейера, която произвежда велосипеди в моя оформление е необходимо да се улесни някои фази на работа.


В момента там е моят компютър, който е предназначен _ocherednoy_ сайт и два компютъра, които могат да бъдат наречени сървъри. По дяволите, две невероятно пълен сървър - разработване и производство на сървъра. (И това, което обхват?)


Аз честно казано се използва от Google, в страна, където няма незаконно сайтове регистър, и знаеше, че малкото ми проблем е решен:

  • Service POST страна bitbucket;
  • Някои скрипт за Git дърпане на развитието от страна на сървъра.


Но тук ми компетентност е лошо - аз реших да овладеят теста. Признавам, за да позволи на селото е знаел, но не предприема каквито и тестване, за даденост. Това е време, за да получите много по-добре!


С тестовете се по някакъв начин аз ще се грижа за, но когато те _pravilno_ ще се кандидатира? Аз? Вече е на страната на сървъра развитието на недвижими имоти?


И предполагам, че производството на велосипеда си дойде на бял под формата на готов сайт на девственици сървър. Според старомодния начин, чрез FTP на производство?


Възможно ли е да има кръгли разтегателни актуализации само файлове от отдалечен хранилище, което сега съществува?

Т.е. има желание да направи такива операции, в резултат на което при момичетата с сървър може да се слеят всички Аз открих на сайта, но само част от тях.


Моля, имайте предвид, че въпроса ми може да бъде поискано по всяко погрешно или не е вярно. Не се сърди. - (

Видях двете части на вашия въпрос.

Как да се организира на внедряване (полагане отворен код за работа със сървъра)?


В най-простия случай, ще се обърне към куп SSH + Git дърпане на сървъра. В този случай, лепенки ще бъдат доставени до ангажира сървъри, които са в хранилището, но все още не са се появили на сървъра, т.е. "Актуализиране само файлове, които вече съществуват." Този метод е разгледан по-подробно в отговорите на още един въпрос.

Ако искате да автоматизирате процеса, което е похвално, виждам три налични инструменти за това: Capistrano. Мина (личният ми фаворит) и Влад Deployer. И трите проекта са със сходни характеристики. Принципът на работа е както следва:
  1. За да се свържете към сървъра приемник.
  2. Изсипете код актуализация от хранилището.
  3. Изпълнете предписанията ви (рестартиране демони нулират на индекса, се актуализира структурата на базата данни и т.н.).
  4. .
  5. ПЕЧАЛБА!

Инструменти лесен преход за тях - това е почивен ден, а може да бъде изпълнено с трудности единствено благодарение на ново.

Как да се организира процеса на тестване?


Ако все още не са взели решение за методологията на изпитване (изпитване на превозните развитие, поведение Driven развитие, Мързелът задвижване развитие), а след това вие трябва да започнете да направи точно това.







Най-вероятно, изпитванията се извършват на локалната машина, докато пишете кода си. Използването RSpec. Аз съм поддържане на отворен Guard. Guard проследява промените в кода и предизвиква поредица от единица тестове, които покриват модифициран код. Целият процес отнема не повече от минута-две, и най-вече не се напряга. Веднага след като се види не успя теста, промених кода, стига да е в зелено. Докато няколко тестове (това не е най-добрият знак, между другото), които работите сам, стартиран локално преди deploem може да не е достатъчно - например, за да се провери освобождаването от наличието на критична функционалност: регистрация, покупка, създаване на съобщения и т.н.

В един момент, тя може да отиде на Continious интеграция. Това е възможност да си осигури постоянно натрупване във всеки даден момент, както и да се произнесе по валидността на всеки един ангажимент. То включва интеграция-сървър и прави изследвания deploem код върху него. Най-вероятно, това не ви интересува, освен ако не работите в екип. Но за да бъде картината пълна, можете да гледате основава на Травис CI-известните проекти с отворен код: Symfony 2 и Руби на релси.

по този начин


Вие не уточни какви конкретни развитие инструменти, който използвате. Ако deploem много по-лесно, като се избират инструменти за тестване, Препоръчвам ви да се съсредоточи върху тези, които са местни за вашата основна рамка и език (PHP, ако разбирам правилно) и са свикнали с техните потребители. Това ви позволява да бързо да приложите добре установена практика за вашия проект и да разберат всичко, в действителност.

Подредете хранилище с кода, за използване Мина deploya и тичам тестове на локалното си десктоп машина. Когато смятате, че това не е достатъчно - ще вероятно вече знаете къде да ходи.

Не е ли по-добре да се използва вида на Баш скриптове технология за deploya вместо всички тези kapistranov? предимства:

1) Баш-скрипт е просто и кратко. Нейната бързо и лесно да се напише. Във всеки kapistranah трябва първо да проучи инструмента за половин ден, а след това мисля как патерица може да го накара да направи правилното нещо.
2) Баш-скрипт лесно да проверите за грешки и липсата на това не е необходимо, за да трасира обяд
3) Баш-скрипт прави точно това, което е написано в нея. Какво ще направи една сложна система, написана от друг човек на непознати квалификации - никой не знае
4) прост разтвор на комплекс по-добре

Плюс това, както се вижда от описанието Мина, е изключително труден и сложен инструмент: добавите няколко реда във файла, е логично да се качите променения файл на сървъра половин секунда, за да се успокои, но той ще направи хранилище, за да изтръгнат нещо, което да събира, качване ... Страхувам се, това не е благоприятна за бързо развитие.

Отново ви съветваме да използвате единица тестове. И аз ви съветваме да използвате funkitsonalnye тестове. Защо? защото функционални тестове проверяват дали приложението да работи правилно. Ако всичко е наред - тя може да се излива върху Productions. Преминаваща на тестове не гарантира правилното функциониране на заявлението. И времето, прекарано в тях. Въпросът е, защо се и необходимо.

Инструменти за разработка? PHP, MySQL, велосипедите си (без Yii).
Методи за изпитване? TDD. )

Много готино! С тези въпроси не е приключила! Благодаря.
Така че в производството по-лесно по стария начин, нали?
И все пак, дали Git опровергавам определени папки от определен клон с определения дистанционно хранилището?

shebanoff. всъщност ми мотори на различни модели идват с доста постоянна скорост.
Понякога тези промени да се промъкнат грешки и се нуждаят от най-различни места, за да правят същите промени файлове _yadra_ велосипед.

За съжаление, за коригиране на един продукт конвейер Аз дойдох с друг - паралелен освобождаване линия. Направете го така, че да се ангажират в бранша се променя майстори са направени до файловете на ядрото на различни клиенти сайтове донорски.

Без абстракция изглежда нещо като това: има моя микро-рамка, която да изпълнява основните функции на един прост сайт - аз го нарича ядро. И всички модули към него, като галерия с от няколко операционни системи изображения. В един сайт, има необходимост от такава модул - другият не е. Но в основата на едни и същи.

Следователно въпросът е: как да се актуализират основните компоненти на сайта (ядрото) и тя не се качи на всеки сайт чрез FTP?

Аз се развива, но трябва да се поддържат няколко интернет производството си. Критични неща, които трябва да се определи. Мислех, че този трик с gitom решаване на проблема ми.

Има ли решение? Можете да се обадите на по-опитни другари skaypoobschenie?