Slide 1

Slide 1 text

ٕज़తෛ࠴Λฦࡁ͢Δ ʢ%FW0QTฤʣ ώΧϥϘc

Slide 2

Slide 2 text

ࣗݾ঺հ ळࢁݦ࣏ ,FOKJ"LJZBNB  ! גࣜձࣾϋ΢ςϨϏδϣϯ ΤϯδχΞ ೥݄ࢀը ! UXJUUFS!BSUJGBDUTBVDF HJUIVC!BSUJGBDUTBVDF (  ,FOKJ"LJZBNB

Slide 3

Slide 3 text

εΩϧηοτ ‣ 1FSM ‣ 1)1 ‣ 3VCZ ‣ )5.-$44 ‣ +BWBTDSJQU ‣ $P⒎FFTDSJQU ‣ -JOVY ‣ 4PMBSJT ‣ .Z42- ‣ 1PTUHSF42- ‣ ֤छ8"' ‣ FUDʜ

Slide 4

Slide 4 text

࠷ۙ͸

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

࢓ࣄ΋ϓϥΠϕʔτ΋ ஍ຯͳ໾ׂ͕େ޷͖

Slide 8

Slide 8 text

ҎલͷΩϟϦΞ ཧֶ̋ݚڀॴʹ೥΄Ͳ ! w ੜ෺σʔλͷղੳ w σʔλϕʔεߏங w 8FCΞϓϦ։ൃ ! ίϯϐϡʔλʔपΓͷ͜ͱͳ ΒΘΓͱԿͰ΋

Slide 9

Slide 9 text

࠷ॳʹ·ͱΊ ‣ σϓϩΠ͕ഒߴ଎ʹͳΓ·ͨ͠ɻ ‣ αʔόʔߏங͕ഒߴ଎ʹͳΓ·ͨ͠ɻ ஫ʣ౰ࣾൺ

Slide 10

Slide 10 text

ΞδΣϯμ ‣ ര଎։ൃͷ੒ΕͷՌͯ ‣ σϓϩΠ͕ഒ଎$BQJTUSBOP ‣ αʔόʔߏங͕ഒ଎$IFG

Slide 11

Slide 11 text

ര଎։ൃͷ੒ΕͷՌͯ

Slide 12

Slide 12 text

ര଎։ൃͷ੒ΕͷՌͯ ٕज़తෛ࠴͕ཷ·ͬ ͪ·ͬͨΑʔ

Slide 13

Slide 13 text

ྫʣίʔυ ‣ ཧղෆೳͳม਺໊ ‣ DPOEͱDPOEͬͯԿ͕ҧ͏ͷʁ ‣ ཧղෆೳͳϝιου໊ ‣ IBT3FDPSEͷฦΓ஋͕഑ྻʁ ‣ ॏෳͨ͠ϝιου ‣ ༵೔Λฦ͢ϝιου͕ͭ༗Γ·͚͢Ͳ

Slide 14

Slide 14 text

ྫʣΦϖϨʔγϣϯ ‣ ϢʔβʔΞΧ΢ϯτ͕ڞ༗ ‣ ͝ʜ͝৑ஊͰ͢ΑͶʁ ‣ ຊ൪؀ڥͱ։ൃ؀ڥͰϑΝΠϧʹ͕ࠩ͋Δ ‣ ͑ʜʁ͝৑ஊͰ͢ΑͶʁ ‣ ։ൃऀݸਓͷಠࣗσϓϩΠखॱ ‣ ͝৑ஊͰ͢ΑͶʁ͝৑ஊͰ͢ΑͶʁ ‣ υΩϡϝϯτෆ଍ ‣ ͦΕͬͯυΩϡϝϯτɺ͋Γ·͔͢ʁ

Slide 15

Slide 15 text

ͳͥ͜͏ͳͬͨʁ ‣ ͕࣌ؒແ͍ ‣ ίʔυͷ඼࣭ͳͲʹ࣌ؒΛ͔͚͍ͯΔ༨༟͸ ແ͍ɻ ‣ γεςϜͷޮ཰ԽͳͲʹ࣌ؒΛ͔͚͍ͯΔ༨ ༟͸ແ͍ɻ ‣ খن໛Ώ͑ͷશೳײ ‣ ΄ͱΜͲࣗ෼͕࡞ͬͨͷͰ͍͍ͩͨΘ͔ͬͯ ͍Δɻ

Slide 16

Slide 16 text

͔͠͠ɺͦΕͰ͍͍ ‣ རӹΛੜΉલʹαʔϏεͷ࠷దԽΛ࢝Ίͯ Ͳ͏͢Δʁ ‣ ઌԆ͹͠Ͱ͖Δ͏ͪ͸ઌԆ͹ͯ͠͠ྑ͍ɻ

Slide 17

Slide 17 text

͔͠͠ɺͦͷ··Ͱ͸͍͚ͳ͍ ‣ ͍ͭ΍Δ͔ʁ

Slide 18

Slide 18 text

͔͠͠ɺͦͷ··Ͱ͸͍͚ͳ͍ ‣ ͍ͭ΍Δ͔ʁ

Slide 19

Slide 19 text

ʮࠓͰ͠ΐʂʁʯ͸͍ͭʁ ‣ αʔϏε͔Βऩӹ͕ग़ͯҰଉ͚ͭͨ ‣ ։ൃऀ͕ਓΛ௒͑ͨ ‣ όά͕සൃ͖ͯͨ͠

Slide 20

Slide 20 text

ٕज़తෛ࠴Λ ฦࡁ͍ͯ͜͠͏

Slide 21

Slide 21 text

༏ઌॱҐ ‣ ։ൃͷఀ଺ʹಛʹڧ͍ӨڹΛٴ΅͍ͯ͠Δ ΋ͷ ‣ ೾ٴޮՌ͕ߴ͍΋ͷ ‣ ࡞ۀίετ͕ॆ෼ʹ௿͍΋ͷ

Slide 22

Slide 22 text

։ൃʗӡ༻ϓϩηεͷվળ ‣ ࣗಈԽ ‣ ΞϓϦέʔγϣϯͷ σϓϩΠ ‣ αʔόʔߏஙʗӡ༻

Slide 23

Slide 23 text

جຊํ਑ ‣ γϯϓϧͰ͋Δ͜ͱ

Slide 24

Slide 24 text

ΞϓϦέʔγϣϯͷ σϓϩΠͷࣗಈԽ

Slide 25

Slide 25 text

͔ͭͯͷσϓϩΠखॱ  (JUͷ։ൃϒϥϯν͔ΒANBTUFSAϒϥϯν΁Ϛʔδ͢Δ  ࡞ۀͷ։࢝Λ4MBDLͰશһʹ௨஌͢Δ  લճͷσϓϩΠ͔Βมߋͷ͋ͬͨϑΝΠϧ͚ͩΛαʔόʔʹίϐʔ͢Δ  ݱߦόʔδϣϯͷσΟϨΫτϦΛ৽ͨͳόʔδϣϯ໊Λ෇͚ͯίϐʔ͢ Δ  αʔόʔʹίϐʔͨ͠ϑΝΠϧͰ৽όʔδϣϯσΟϨΫτϦͷϑΝΠϧ Λ্ॻ͖͢Δ  ݱߦόʔδϣϯͷσΟϨΫτϦΛࢦ͢4ZNMJOLΛɺ৽όʔδϣϯσΟϨ ΫτϦΛࢦ͢Α͏ʹ࡞੒͠௚͢  $BDIFϑΝΠϧΛ࡟আ͢Δ  QIQGQNΛ࠶ىಈ͢Δ  ࡞ۀͷऴྃΛ4MBDLͰશһʹ௨஌͢Δ

Slide 26

Slide 26 text

͔ͭͯͷσϓϩΠखॱ # local ! $ git checkout master $ git pull $ git merge DEV_BRANCH $ PAGER=cat git diff --name-status LAST_TAG CRRT_TAG \ > > file_diff.txt $ grep '^D' file_diff.txt > file_del.txt $ grep -v '^D' file_diff.txt > file_mod.txt $ grep '\w\s*wordpress' file_diff.txt > file_wdp.txt $ perl -i -ple '/\.scss$/ \ > && s/(sass|scss$)/css/g’ file_mod.txt $ bundle exec compass compile $ mkdir -p DEST_DIR $ perl -ple 's/^\w\s+//' file_mod.txt \ > | xargs -I% rsync -R % DEST_DIR $ cp file_del.txt DEST_DIR $ scp -r DEST_DIR REMOTE_HOST:~/DEST_DIR ! # remote ! $ cd DEPLOY_TO $ sudo -u DEPLOY_USER cp -apr LAST_TAG CRRT_TAG $ sudo -u DEPLOY_USER rsync -av DEST_DIR DEPLOY_TO/ \ > CRRT_TAG $ cd DEPLOY_TO/CRRT_TAG $ perl -ple 's/^D\s+//' file_del.txt | xargs rm $ sudo -u DEPLOY_USER ln -snf DEPLOY_TO/CRRT_TAG WEB_ROOT $ sudo find CAKE1_APP_CACHE -type f -exec rm {} \; $ sudo find CAKE2_APP_CACHE -type f -name 'empty' -prune \ > -o -type f -exec rm {} \; $ sudo service php5-fpm restart

Slide 27

Slide 27 text

ࣗಈԽͷԸܙ # local ! $ git checkout master $ git pull $ git merge DEV_BRANCH $ PAGER=cat git diff --name-status LAST_TAG CRRT_TAG \ > > file_diff.txt $ grep '^D' file_diff.txt > file_del.txt $ grep -v '^D' file_diff.txt > file_mod.txt $ grep '\w\s*wordpress' file_diff.txt > file_wdp.txt $ perl -i -ple '/\.scss$/ \ > && s/(sass|scss$)/css/g’ file_mod.txt $ bundle exec compass compile $ mkdir -p DEST_DIR $ perl -ple 's/^\w\s+//' file_mod.txt \ > | xargs -I% rsync -R % DEST_DIR $ cp file_del.txt DEST_DIR $ scp -r DEST_DIR REMOTE_HOST:~/DEST_DIR ! # remote ! $ cd DEPLOY_TO $ sudo -u DEPLOY_USER cp -apr LAST_TAG CRRT_TAG $ sudo -u DEPLOY_USER rsync -av DEST_DIR DEPLOY_TO/ \ > CRRT_TAG $ cd DEPLOY_TO/CRRT_TAG $ perl -ple 's/^D\s+//' file_del.txt | xargs rm $ sudo -u DEPLOY_USER ln -snf DEPLOY_TO/CRRT_TAG WEB_ROOT $ sudo find CAKE1_APP_CACHE -type f -exec rm {} \; $ sudo find CAKE2_APP_CACHE -type f -name 'empty' -prune \ > -o -type f -exec rm {} \; $ sudo service php5-fpm restart

Slide 28

Slide 28 text

ࣗಈԽͷԸܙ # local ! $ git checkout master $ git pull $ git merge DEV_BRANCH $ PAGER=cat git diff --name-status LAST_TAG CRRT_TAG \ > > file_diff.txt $ grep '^D' file_diff.txt > file_del.txt $ grep -v '^D' file_diff.txt > file_mod.txt $ grep '\w\s*wordpress' file_diff.txt > file_wdp.txt $ perl -i -ple '/\.scss$/ \ > && s/(sass|scss$)/css/g’ file_mod.txt $ bundle exec compass compile $ mkdir -p DEST_DIR $ perl -ple 's/^\w\s+//' file_mod.txt \ > | xargs -I% rsync -R % DEST_DIR $ cp file_del.txt DEST_DIR $ scp -r DEST_DIR REMOTE_HOST:~/DEST_DIR ! # remote ! $ cd DEPLOY_TO $ sudo -u DEPLOY_USER cp -apr LAST_TAG CRRT_TAG $ sudo -u DEPLOY_USER rsync -av DEST_DIR DEPLOY_TO/ \ > CRRT_TAG $ cd DEPLOY_TO/CRRT_TAG $ perl -ple 's/^D\s+//' file_del.txt | xargs rm $ sudo -u DEPLOY_USER ln -snf DEPLOY_TO/CRRT_TAG WEB_ROOT $ sudo find CAKE1_APP_CACHE -type f -exec rm {} \; $ sudo find CAKE2_APP_CACHE -type f -name 'empty' -prune \ > -o -type f -exec rm {} \; $ sudo service php5-fpm restart # local ! $ cap production deploy

Slide 29

Slide 29 text

ࣗಈԽͷԸܙ # local ! $ git checkout master $ git pull $ git merge DEV_BRANCH $ PAGER=cat git diff --name-status LAST_TAG CRRT_TAG \ > > file_diff.txt $ grep '^D' file_diff.txt > file_del.txt $ grep -v '^D' file_diff.txt > file_mod.txt $ grep '\w\s*wordpress' file_diff.txt > file_wdp.txt $ perl -i -ple '/\.scss$/ \ > && s/(sass|scss$)/css/g’ file_mod.txt $ bundle exec compass compile $ mkdir -p DEST_DIR $ perl -ple 's/^\w\s+//' file_mod.txt \ > | xargs -I% rsync -R % DEST_DIR $ cp file_del.txt DEST_DIR $ scp -r DEST_DIR REMOTE_HOST:~/DEST_DIR ! # remote ! $ cd DEPLOY_TO $ sudo -u DEPLOY_USER cp -apr LAST_TAG CRRT_TAG $ sudo -u DEPLOY_USER rsync -av DEST_DIR DEPLOY_TO/ \ > CRRT_TAG $ cd DEPLOY_TO/CRRT_TAG $ perl -ple 's/^D\s+//' file_del.txt | xargs rm $ sudo -u DEPLOY_USER ln -snf DEPLOY_TO/CRRT_TAG WEB_ROOT $ sudo find CAKE1_APP_CACHE -type f -exec rm {} \; $ sudo find CAKE2_APP_CACHE -type f -name 'empty' -prune \ > -o -type f -exec rm {} \; $ sudo service php5-fpm restart # local ! $ cap production deploy UBLFOCZXJFENBJFS

Slide 30

Slide 30 text

ࣗಈԽͷԸܙ ࣌ؒ UBLFOCZIJQQPOPUJ[FE

Slide 31

Slide 31 text

ࣗಈԽͷԸܙ ࣌ؒ UBLFOCZIJQQPOPUJ[FE ෼ UBLFOCZQIPUPOT

Slide 32

Slide 32 text

ࣗಈԽͷԸܙ ࣌ؒ UBLFOCZIJQQPOPUJ[FE ෼ UBLFOCZQIPUPOT ഒ

Slide 33

Slide 33 text

$BQJTUSBOPEFQMPZ Current "QQ4FSWFS (JU4FSWFS σϑΥϧτͰ༻ҙ͞Ε͍ͯΔEFQMPZλεΫ

Slide 34

Slide 34 text

$BQJTUSBOPEFQMPZ Current "QQ4FSWFS (JU4FSWFS $ cap production deploy σϑΥϧτͰ༻ҙ͞Ε͍ͯΔEFQMPZλεΫ

Slide 35

Slide 35 text

$BQJTUSBOPEFQMPZ Current "QQ4FSWFS (JU4FSWFS $ cap production deploy σϑΥϧτͰ༻ҙ͞Ε͍ͯΔEFQMPZλεΫ

Slide 36

Slide 36 text

$BQJTUSBOPEFQMPZ Current "QQ4FSWFS (JU4FSWFS $ cap production deploy σϑΥϧτͰ༻ҙ͞Ε͍ͯΔEFQMPZλεΫ

Slide 37

Slide 37 text

$BQJTUSBOPEFQMPZ New Current "QQ4FSWFS (JU4FSWFS $ cap production deploy σϑΥϧτͰ༻ҙ͞Ε͍ͯΔEFQMPZλεΫ

Slide 38

Slide 38 text

$BQJTUSBOPEFQMPZ New Current "QQ4FSWFS (JU4FSWFS $ cap production deploy σϑΥϧτͰ༻ҙ͞Ε͍ͯΔEFQMPZλεΫ

Slide 39

Slide 39 text

$BQJTUSBOPEFQMPZ New Current "QQ4FSWFS (JU4FSWFS $ cap production deploy σϑΥϧτͰ༻ҙ͞Ε͍ͯΔEFQMPZλεΫ

Slide 40

Slide 40 text

$BQJTUSBOPEFQMPZ New Current "QQ4FSWFS (JU4FSWFS $ cap production deploy σϑΥϧτͰ༻ҙ͞Ε͍ͯΔEFQMPZλεΫ

Slide 41

Slide 41 text

$BQJTUSBOPEFQMPZ New Current "QQ4FSWFS (JU4FSWFS $ cap production deploy σϑΥϧτͰ༻ҙ͞Ε͍ͯΔEFQMPZλεΫ

Slide 42

Slide 42 text

EFQMPZUBTL ‣ EFQMPZTUBSUJOH ‣ EFQMPZDIFDL ‣ HJUDIFDL ‣ EFQMPZDIFDLEJSFDUPSJFT ‣ EFQMPZDIFDLMJOLFE@EJST ‣ EFQMPZDIFDLNBLF@MJOLFE@EJST ‣ EFQMPZDIFDLMJOLFE@pMFT ‣ EFQMPZTUBSUFE ‣ EFQMPZVQEBUJOH ‣ HJUDSFBUF@SFMFBTF ‣ EFQMPZTZNMJOLTIBSFE ‣ EFQMPZTZNMJOLMJOLFE@pMFT ‣ EFQMPZTZNMJOLMJOLFE@EJST ‣ EFQMPZVQEBUFE ‣ EFQMPZQVCMJTIJOH ‣ EFQMPZTZNMJOLSFMFBTF ‣ EFQMPZQVCMJTIFE ‣ EFQMPZpOJTIJOH ‣ EFQMPZDMFBOVQ ‣ EFQMPZpOJTIFE $BQJTUSBOPͷσϓϩΠϑϨʔϜϫʔΫͷ࢖͍ํ աڈܗͰه͞Ε͍ͯΔλεΫ͸ۭͷλεΫ ͳͷͰ͜ΕΒΛඞཁʹԠ্ͯ͡ॻ͖͢Δ

Slide 43

Slide 43 text

ͲΜͳίʔυʁ task :updated do on roles(:app) do ["cakephp1","cakephp2"].each do |cake_dir| ["cake", "lib", "index.php", "plugins", "vendors"].each do |part_dir| part_path = fetch(:deploy_to) + '/' + cake_dir + '/' + part_dir if test "[ -e #{part_path} ]" then execute :ln, '-snf', part_path, "#{fetch(:release_path)}/#{cake_dir}/#{part_dir}" end end end ! within "#{fetch(:release_path)}/cakephp2/app" do composer_path = "#{fetch(:release_path)}/cakephp2/app/composer.phar" if test "[ -f #{composer_path} ]" then execute "./composer.phar", 'install' end ! if fetch(:run_migration) then execute '../lib/Cake/Console/cake', 'Migrations.migration', 'run', 'all' end end ! if fetch(:sass_compile_path) then within "#{fetch(:release_path)}/#{fetch(:sass_compile_path)}" do execute :compass, 'compile', '--boring' end end ! end end

Slide 44

Slide 44 text

ͲΜͳίʔυʁ task :updated do on roles(:app) do ["cakephp1","cakephp2"].each do |cake_dir| ["cake", "lib", "index.php", "plugins", "vendors"].each do |part_dir| part_path = fetch(:deploy_to) + '/' + cake_dir + '/' + part_dir if test "[ -e #{part_path} ]" then execute :ln, '-snf', part_path, "#{fetch(:release_path)}/#{cake_dir}/#{part_dir}" end end end ! within "#{fetch(:release_path)}/cakephp2/app" do composer_path = "#{fetch(:release_path)}/cakephp2/app/composer.phar" if test "[ -f #{composer_path} ]" then execute "./composer.phar", 'install' end ! if fetch(:run_migration) then execute '../lib/Cake/Console/cake', 'Migrations.migration', 'run', 'all' end end ! if fetch(:sass_compile_path) then within "#{fetch(:release_path)}/#{fetch(:sass_compile_path)}" do execute :compass, 'compile', '--boring' end end ! end end $BLF1)1ϥΠϒϥϦ΁ ϦϯΫΛுΔ

Slide 45

Slide 45 text

ͲΜͳίʔυʁ task :updated do on roles(:app) do ["cakephp1","cakephp2"].each do |cake_dir| ["cake", "lib", "index.php", "plugins", "vendors"].each do |part_dir| part_path = fetch(:deploy_to) + '/' + cake_dir + '/' + part_dir if test "[ -e #{part_path} ]" then execute :ln, '-snf', part_path, "#{fetch(:release_path)}/#{cake_dir}/#{part_dir}" end end end ! within "#{fetch(:release_path)}/cakephp2/app" do composer_path = "#{fetch(:release_path)}/cakephp2/app/composer.phar" if test "[ -f #{composer_path} ]" then execute "./composer.phar", 'install' end ! if fetch(:run_migration) then execute '../lib/Cake/Console/cake', 'Migrations.migration', 'run', 'all' end end ! if fetch(:sass_compile_path) then within "#{fetch(:release_path)}/#{fetch(:sass_compile_path)}" do execute :compass, 'compile', '--boring' end end ! end end $BLF1)1ϥΠϒϥϦ΁ ϦϯΫΛுΔ DPNQPTFSͰϓϥάΠϯ ΛΠϯετʔϧ͢Δ

Slide 46

Slide 46 text

ͲΜͳίʔυʁ task :updated do on roles(:app) do ["cakephp1","cakephp2"].each do |cake_dir| ["cake", "lib", "index.php", "plugins", "vendors"].each do |part_dir| part_path = fetch(:deploy_to) + '/' + cake_dir + '/' + part_dir if test "[ -e #{part_path} ]" then execute :ln, '-snf', part_path, "#{fetch(:release_path)}/#{cake_dir}/#{part_dir}" end end end ! within "#{fetch(:release_path)}/cakephp2/app" do composer_path = "#{fetch(:release_path)}/cakephp2/app/composer.phar" if test "[ -f #{composer_path} ]" then execute "./composer.phar", 'install' end ! if fetch(:run_migration) then execute '../lib/Cake/Console/cake', 'Migrations.migration', 'run', 'all' end end ! if fetch(:sass_compile_path) then within "#{fetch(:release_path)}/#{fetch(:sass_compile_path)}" do execute :compass, 'compile', '--boring' end end ! end end $BLF1)1ϥΠϒϥϦ΁ ϦϯΫΛுΔ DPNQPTFSͰϓϥάΠϯ ΛΠϯετʔϧ͢Δ σʔλϕʔεϚΠάϨʔ γϣϯΛ࣮ߦ͢Δ

Slide 47

Slide 47 text

ͲΜͳίʔυʁ task :updated do on roles(:app) do ["cakephp1","cakephp2"].each do |cake_dir| ["cake", "lib", "index.php", "plugins", "vendors"].each do |part_dir| part_path = fetch(:deploy_to) + '/' + cake_dir + '/' + part_dir if test "[ -e #{part_path} ]" then execute :ln, '-snf', part_path, "#{fetch(:release_path)}/#{cake_dir}/#{part_dir}" end end end ! within "#{fetch(:release_path)}/cakephp2/app" do composer_path = "#{fetch(:release_path)}/cakephp2/app/composer.phar" if test "[ -f #{composer_path} ]" then execute "./composer.phar", 'install' end ! if fetch(:run_migration) then execute '../lib/Cake/Console/cake', 'Migrations.migration', 'run', 'all' end end ! if fetch(:sass_compile_path) then within "#{fetch(:release_path)}/#{fetch(:sass_compile_path)}" do execute :compass, 'compile', '--boring' end end ! end end $BLF1)1ϥΠϒϥϦ΁ ϦϯΫΛுΔ DPNQPTFSͰϓϥάΠϯ ΛΠϯετʔϧ͢Δ DPNQBTTͰTBTTϑΝΠϧ ΛίϯύΠϧ͢Δ σʔλϕʔεϚΠάϨʔ γϣϯΛ࣮ߦ͢Δ

Slide 48

Slide 48 text

ͲΜͳίʔυʁ task :updated do on roles(:app) do ["cakephp1","cakephp2"].each do |cake_dir| ["cake", "lib", "index.php", "plugins", "vendors"].each do |part_dir| part_path = fetch(:deploy_to) + '/' + cake_dir + '/' + part_dir if test "[ -e #{part_path} ]" then execute :ln, '-snf', part_path, "#{fetch(:release_path)}/#{cake_dir}/#{part_dir}" end end end ! within "#{fetch(:release_path)}/cakephp2/app" do composer_path = "#{fetch(:release_path)}/cakephp2/app/composer.phar" if test "[ -f #{composer_path} ]" then execute "./composer.phar", 'install' end ! if fetch(:run_migration) then execute '../lib/Cake/Console/cake', 'Migrations.migration', 'run', 'all' end end ! if fetch(:sass_compile_path) then within "#{fetch(:release_path)}/#{fetch(:sass_compile_path)}" do execute :compass, 'compile', '--boring' end end ! end end $BLF1)1ϥΠϒϥϦ΁ ϦϯΫΛுΔ DPNQPTFSͰϓϥάΠϯ ΛΠϯετʔϧ͢Δ DPNQBTTͰTBTTϑΝΠϧ ΛίϯύΠϧ͢Δ σʔλϕʔεϚΠάϨʔ γϣϯΛ࣮ߦ͢Δ ΞϓϦέʔγϣϯಛҟతͳλεΫΛ௥ ه͍ͯ͘͠

Slide 49

Slide 49 text

ͲΜͳίʔυʁ task :restart do on roles(:app, :wp) do execute :sudo, :service, 'php5-fpm', 'restart' end end ! after :publishing, :restart ! before :restart, :clear_cache do on roles(:app) do if fetch(:app_cache1_path) then execute :sudo, :find, fetch(:app_cache1_path), '-type f -exec rm {} \;' end if fetch(:app_cache2_path) then execute :sudo, :find, fetch(:app_cache2_path), '-type f -name "empty" -prune -o -type f -exec rm {} \;' end end end

Slide 50

Slide 50 text

ͲΜͳίʔυʁ task :restart do on roles(:app, :wp) do execute :sudo, :service, 'php5-fpm', 'restart' end end ! after :publishing, :restart ! before :restart, :clear_cache do on roles(:app) do if fetch(:app_cache1_path) then execute :sudo, :find, fetch(:app_cache1_path), '-type f -exec rm {} \;' end if fetch(:app_cache2_path) then execute :sudo, :find, fetch(:app_cache2_path), '-type f -name "empty" -prune -o -type f -exec rm {} \;' end end end QIQGQNΛϦελʔτ͢Δ

Slide 51

Slide 51 text

ͲΜͳίʔυʁ task :restart do on roles(:app, :wp) do execute :sudo, :service, 'php5-fpm', 'restart' end end ! after :publishing, :restart ! before :restart, :clear_cache do on roles(:app) do if fetch(:app_cache1_path) then execute :sudo, :find, fetch(:app_cache1_path), '-type f -exec rm {} \;' end if fetch(:app_cache2_path) then execute :sudo, :find, fetch(:app_cache2_path), '-type f -name "empty" -prune -o -type f -exec rm {} \;' end end end QIQGQNΛϦελʔτ͢Δ QVCMJTIJOHλεΫͷޙ ʹ࣮ߦͯ͠Ͷὑ

Slide 52

Slide 52 text

ͲΜͳίʔυʁ task :restart do on roles(:app, :wp) do execute :sudo, :service, 'php5-fpm', 'restart' end end ! after :publishing, :restart ! before :restart, :clear_cache do on roles(:app) do if fetch(:app_cache1_path) then execute :sudo, :find, fetch(:app_cache1_path), '-type f -exec rm {} \;' end if fetch(:app_cache2_path) then execute :sudo, :find, fetch(:app_cache2_path), '-type f -name "empty" -prune -o -type f -exec rm {} \;' end end end QIQGQNΛϦελʔτ͢Δ QVCMJTIJOHλεΫͷޙ ʹ࣮ߦͯ͠Ͷὑ Ϧελʔτ͢ΔલʹΩϟο γϡΛফ͠ͱ͍ͯͶὑ

Slide 53

Slide 53 text

ͲΜͳίʔυʁ task :restart do on roles(:app, :wp) do execute :sudo, :service, 'php5-fpm', 'restart' end end ! after :publishing, :restart ! before :restart, :clear_cache do on roles(:app) do if fetch(:app_cache1_path) then execute :sudo, :find, fetch(:app_cache1_path), '-type f -exec rm {} \;' end if fetch(:app_cache2_path) then execute :sudo, :find, fetch(:app_cache2_path), '-type f -name "empty" -prune -o -type f -exec rm {} \;' end end end QIQGQNΛϦελʔτ͢Δ QVCMJTIJOHλεΫͷޙ ʹ࣮ߦͯ͠Ͷὑ Ϧελʔτ͢ΔલʹΩϟο γϡΛফ͠ͱ͍ͯͶὑ طଘͷλεΫͷલޙʹ೚ҙͷλεΫΛ )PPL͢Δ

Slide 54

Slide 54 text

ͲΜͳίʔυʁ namespace :notify do namespace :update do task :start do _send_message("[\`#{fetch(:application)}\`] Deployment has started.") end ! task :finish do _send_message("[\`#{fetch(:application)}\`] Deployment has finished. :ok_woman:\n> #{fetch(:commit_message)}") end end ! namespace :rollback do task :start do _send_message("[\`#{fetch(:application)}\`] Rollback has started.\nCurrent Revision is \`#{fetch(:latest_revision)}\`") end ! task :finish do _send_message("[\`#{fetch(:application)}\`] Rollback has finished. :ok_woman:\nCurrent revision is \`#{fetch(:current_revision)}\`") end end end ! before 'deploy:starting', 'notify:update:start' after 'deploy:finishing', 'notify:update:finish' before 'deploy:reverting', 'notify:rollback:start' after 'deploy:finishing_rollback', 'notify:rollback:finish' $BQJTUSBOPʹΑΔσϓϩΠͷ࣮ߦ࣌ʹ4MBDL௨஌͢Δํ๏

Slide 55

Slide 55 text

ͲΜͳίʔυʁ namespace :notify do namespace :update do task :start do _send_message("[\`#{fetch(:application)}\`] Deployment has started.") end ! task :finish do _send_message("[\`#{fetch(:application)}\`] Deployment has finished. :ok_woman:\n> #{fetch(:commit_message)}") end end ! namespace :rollback do task :start do _send_message("[\`#{fetch(:application)}\`] Rollback has started.\nCurrent Revision is \`#{fetch(:latest_revision)}\`") end ! task :finish do _send_message("[\`#{fetch(:application)}\`] Rollback has finished. :ok_woman:\nCurrent revision is \`#{fetch(:current_revision)}\`") end end end ! before 'deploy:starting', 'notify:update:start' after 'deploy:finishing', 'notify:update:finish' before 'deploy:reverting', 'notify:rollback:start' after 'deploy:finishing_rollback', 'notify:rollback:finish' σϓϩΠ΍ϩʔϧόοΫͷ։࢝ऴྃ ͷલޙʹ௨஌ΛૹΔ $BQJTUSBOPʹΑΔσϓϩΠͷ࣮ߦ࣌ʹ4MBDL௨஌͢Δํ๏

Slide 56

Slide 56 text

ͲΜͳίʔυʁ namespace :notify do namespace :update do task :start do _send_message("[\`#{fetch(:application)}\`] Deployment has started.") end ! task :finish do _send_message("[\`#{fetch(:application)}\`] Deployment has finished. :ok_woman:\n> #{fetch(:commit_message)}") end end ! namespace :rollback do task :start do _send_message("[\`#{fetch(:application)}\`] Rollback has started.\nCurrent Revision is \`#{fetch(:latest_revision)}\`") end ! task :finish do _send_message("[\`#{fetch(:application)}\`] Rollback has finished. :ok_woman:\nCurrent revision is \`#{fetch(:current_revision)}\`") end end end ! before 'deploy:starting', 'notify:update:start' after 'deploy:finishing', 'notify:update:finish' before 'deploy:reverting', 'notify:rollback:start' after 'deploy:finishing_rollback', 'notify:rollback:finish' σϓϩΠ΍ϩʔϧόοΫͷ։࢝ऴྃ ͷલޙʹ௨஌ΛૹΔ $BQJTUSBOPʹΑΔσϓϩΠͷ࣮ߦ࣌ʹ4MBDL௨஌͢Δํ๏ ఆٛͨ͠3VCZͷؔ਺ Λݺͼग़͢

Slide 57

Slide 57 text

ͲΜͳίʔυʁ namespace :notify do namespace :update do task :start do _send_message("[\`#{fetch(:application)}\`] Deployment has started.") end ! task :finish do _send_message("[\`#{fetch(:application)}\`] Deployment has finished. :ok_woman:\n> #{fetch(:commit_message)}") end end ! namespace :rollback do task :start do _send_message("[\`#{fetch(:application)}\`] Rollback has started.\nCurrent Revision is \`#{fetch(:latest_revision)}\`") end ! task :finish do _send_message("[\`#{fetch(:application)}\`] Rollback has finished. :ok_woman:\nCurrent revision is \`#{fetch(:current_revision)}\`") end end end ! before 'deploy:starting', 'notify:update:start' after 'deploy:finishing', 'notify:update:finish' before 'deploy:reverting', 'notify:rollback:start' after 'deploy:finishing_rollback', 'notify:rollback:finish' σϓϩΠ΍ϩʔϧόοΫͷ։࢝ऴྃ ͷલޙʹ௨஌ΛૹΔ $BQJTUSBOPʹΑΔσϓϩΠͷ࣮ߦ࣌ʹ4MBDL௨஌͢Δํ๏ ఆٛͨ͠3VCZͷؔ਺ Λݺͼग़͢ 3VCZͰ֦ு͢Δ

Slide 58

Slide 58 text

σϓϩΠࣗಈԽͷԸܙ ‣ ϛε͕֨ஈʹݮΓɺ։ൃ଎౓্͕͕ͬͨ ‣ σϓϩΠʹର͢Δ৺ཧతোน͕Լ͕ͬͨ ‣ ίʔυԽ͞ΕΔ͜ͱͰ࡞ۀ͕໌֬ʹͳͬͨ

Slide 59

Slide 59 text

͢΂͕ͯ͏·͍ͬͨ͘ ΋͏೰ΈͳΜͯແ͍

Slide 60

Slide 60 text

ͦΜͳΘ͚ͳ͍ ͢΂͕ͯ͏·͍ͬͨ͘ ΋͏೰ΈͳΜͯແ͍

Slide 61

Slide 61 text

ಋೖίετ ‣ ଍ֻ͚̏ϲ݄Ґʢ̏ਓ݄ʣ ‣ ίετʹӨڹΛ༩͑Δཁૉ ‣ ΞϓϦͷن໛ ‣ ΞϓϦͷෳࡶ͞ ‣ ։ൃऀͷ஌ࣝྔ

Slide 62

Slide 62 text

ࣗಈԽͰ͖ͳ͔ͬͨ͜ͱ ‣ 8PSE1SFTTͷσϓϩΠ ‣ ϓϥάΠϯͷ໰୊ͳͲ ‣ 8FCΞϓϦ֎ͷ͜ͱ ‣ DSPOUBC ‣ ϦόʔεϓϩΩγͷઃఆ ‣ 8"'ʢ$BLF1)1ʣͷΞοϓάϨʔυ

Slide 63

Slide 63 text

αʔόʔߏஙʗӡ༻ ͷࣗಈԽ

Slide 64

Slide 64 text

αʔόʔɹͦΕ͸ɹ࠷΋ҋ͕ਂ͘ɺ࠷΋ೖΓࠐΈͮΒ͍৔ॴ

Slide 65

Slide 65 text

No content

Slide 66

Slide 66 text

ΞϓϦͷσϓϩΠ͢ΔͨΊʹ͸"ΛΠϯετʔϧ͠ͳ͖Όɻ

Slide 67

Slide 67 text

ΞϓϦͷσϓϩΠ͢ΔͨΊʹ͸"ΛΠϯετʔϧ͠ͳ͖Όɻ ͢Έ·ͤΜɺ"ͬͯΠϯετʔϧ͞Εͯ·͔͢ʁ

Slide 68

Slide 68 text

ΞϓϦͷσϓϩΠ͢ΔͨΊʹ͸"ΛΠϯετʔϧ͠ͳ͖Όɻ ͢Έ·ͤΜɺ"ͬͯΠϯετʔϧ͞Εͯ·͔͢ʁ Θ͔ΒΜ

Slide 69

Slide 69 text

ΞϓϦͷσϓϩΠ͢ΔͨΊʹ͸"ΛΠϯετʔϧ͠ͳ͖Όɻ ͢Έ·ͤΜɺ"ͬͯΠϯετʔϧ͞Εͯ·͔͢ʁ ͠ΐ͏͕͍ͳ͍ࣗ෼Ͱ͔֬ΊΔ͔ɻ·ͣ͸ΞΧ΢ϯτ࡞Βͳ͖Όɻ Θ͔ΒΜ

Slide 70

Slide 70 text

ΞϓϦͷσϓϩΠ͢ΔͨΊʹ͸"ΛΠϯετʔϧ͠ͳ͖Όɻ ͢Έ·ͤΜɺ"ͬͯΠϯετʔϧ͞Εͯ·͔͢ʁ ͠ΐ͏͕͍ͳ͍ࣗ෼Ͱ͔֬ΊΔ͔ɻ·ͣ͸ΞΧ΢ϯτ࡞Βͳ͖Όɻ Θ͔ΒΜ ΞΧ΢ϯτ࡞ͬͯ͘Ε·͔͢ʁ

Slide 71

Slide 71 text

ΞϓϦͷσϓϩΠ͢ΔͨΊʹ͸"ΛΠϯετʔϧ͠ͳ͖Όɻ ͢Έ·ͤΜɺ"ͬͯΠϯετʔϧ͞Εͯ·͔͢ʁ ͠ΐ͏͕͍ͳ͍ࣗ෼Ͱ͔֬ΊΔ͔ɻ·ͣ͸ΞΧ΢ϯτ࡞Βͳ͖Όɻ Θ͔ΒΜ ΞΧ΢ϯτ࡞ͬͯ͘Ε·͔͢ʁ 0,

Slide 72

Slide 72 text

ΞϓϦͷσϓϩΠ͢ΔͨΊʹ͸"ΛΠϯετʔϧ͠ͳ͖Όɻ ͢Έ·ͤΜɺ"ͬͯΠϯετʔϧ͞Εͯ·͔͢ʁ ͠ΐ͏͕͍ͳ͍ࣗ෼Ͱ͔֬ΊΔ͔ɻ·ͣ͸ΞΧ΢ϯτ࡞Βͳ͖Όɻ Θ͔ΒΜ ΞΧ΢ϯτ࡞ͬͯ͘Ε·͔͢ʁ 0, ͋ͷɺTVEPͰ͖ͳ͍ΜͰ͚͢Ͳʜ

Slide 73

Slide 73 text

ΞϓϦͷσϓϩΠ͢ΔͨΊʹ͸"ΛΠϯετʔϧ͠ͳ͖Όɻ ͢Έ·ͤΜɺ"ͬͯΠϯετʔϧ͞Εͯ·͔͢ʁ ͠ΐ͏͕͍ͳ͍ࣗ෼Ͱ͔֬ΊΔ͔ɻ·ͣ͸ΞΧ΢ϯτ࡞Βͳ͖Όɻ Θ͔ΒΜ ΞΧ΢ϯτ࡞ͬͯ͘Ε·͔͢ʁ 0, ͋ͷɺTVEPͰ͖ͳ͍ΜͰ͚͢Ͳʜ ͋ɺ͝ΊΜ๨Εͯͨ

Slide 74

Slide 74 text

ΞϓϦͷσϓϩΠ͢ΔͨΊʹ͸"ΛΠϯετʔϧ͠ͳ͖Όɻ ͢Έ·ͤΜɺ"ͬͯΠϯετʔϧ͞Εͯ·͔͢ʁ ͠ΐ͏͕͍ͳ͍ࣗ෼Ͱ͔֬ΊΔ͔ɻ·ͣ͸ΞΧ΢ϯτ࡞Βͳ͖Όɻ ͋Εʁຊ൪αʔόʔͷ04ͬͯʜɻ͜ͷόʔδϣϯɺ΋͏αϙʔτ੾ΕͯΜ͡ΌΜɻ Θ͔ΒΜ ΞΧ΢ϯτ࡞ͬͯ͘Ε·͔͢ʁ 0, ͋ͷɺTVEPͰ͖ͳ͍ΜͰ͚͢Ͳʜ ͋ɺ͝ΊΜ๨Εͯͨ

Slide 75

Slide 75 text

ΞϓϦͷσϓϩΠ͢ΔͨΊʹ͸"ΛΠϯετʔϧ͠ͳ͖Όɻ ͢Έ·ͤΜɺ"ͬͯΠϯετʔϧ͞Εͯ·͔͢ʁ ͠ΐ͏͕͍ͳ͍ࣗ෼Ͱ͔֬ΊΔ͔ɻ·ͣ͸ΞΧ΢ϯτ࡞Βͳ͖Όɻ ͋Εʁຊ൪αʔόʔͷ04ͬͯʜɻ͜ͷόʔδϣϯɺ΋͏αϙʔτ੾ΕͯΜ͡ΌΜɻ ͳΜͱ͔ύοέʔδͷΠϯετʔϧͰ͖͚ͨͲόʔδϣϯݹ͍Θʔɻ ιʔε͔ΒΠϯετʔϧ͠ͳ͖Ό͍͚ͳ͍ͷ͔ʔɻ Θ͔ΒΜ ΞΧ΢ϯτ࡞ͬͯ͘Ε·͔͢ʁ 0, ͋ͷɺTVEPͰ͖ͳ͍ΜͰ͚͢Ͳʜ ͋ɺ͝ΊΜ๨Εͯͨ

Slide 76

Slide 76 text

ΞϓϦͷσϓϩΠ͢ΔͨΊʹ͸"ΛΠϯετʔϧ͠ͳ͖Όɻ ͢Έ·ͤΜɺ"ͬͯΠϯετʔϧ͞Εͯ·͔͢ʁ ͠ΐ͏͕͍ͳ͍ࣗ෼Ͱ͔֬ΊΔ͔ɻ·ͣ͸ΞΧ΢ϯτ࡞Βͳ͖Όɻ ͋Εʁຊ൪αʔόʔͷ04ͬͯʜɻ͜ͷόʔδϣϯɺ΋͏αϙʔτ੾ΕͯΜ͡ΌΜɻ ͳΜͱ͔ύοέʔδͷΠϯετʔϧͰ͖͚ͨͲόʔδϣϯݹ͍Θʔɻ ιʔε͔ΒΠϯετʔϧ͠ͳ͖Ό͍͚ͳ͍ͷ͔ʔɻ ͏͛ʔɺϥΠϒϥϦ͕ݹ͍ͬͯݴΘΕͨΘʔɻίϯύΠϧ௨ΒͶʔɻ Θ͔ΒΜ ΞΧ΢ϯτ࡞ͬͯ͘Ε·͔͢ʁ 0, ͋ͷɺTVEPͰ͖ͳ͍ΜͰ͚͢Ͳʜ ͋ɺ͝ΊΜ๨Εͯͨ

Slide 77

Slide 77 text

໰୊఺ ‣ Ͳ͜ͷαʔόʔʹԿ͕Πϯετʔϧ͞Εͯ ͍Δͷ͔൑વͱ͠ͳ͍ɻ ‣ ఆܕԽ͞Ε͍ͯͳ͍ΦϖϨʔγϣϯ͕ϛε Λ༠͍ͬͯΔɻ ‣ ҠߦͷࣦഊΛڪΕͯαʔόʔΛ৐Γ׵͑Δ ͜ͱ͕Ͱ͖ͳ͍ɻ

Slide 78

Slide 78 text

ࣗಈԽͷԸܙ ೔ UBLFOCZHMJOETBZ

Slide 79

Slide 79 text

ࣗಈԽͷԸܙ ೔ UBLFOCZHMJOETBZ ࣌ؒ UBLFOCZEFOOJT

Slide 80

Slide 80 text

ࣗಈԽͷԸܙ ೔ UBLFOCZHMJOETBZ ࣌ؒ UBLFOCZEFOOJT ഒ

Slide 81

Slide 81 text

ࣗಈԽͷԸܙ # remote ! $ aptitude install nginx php5 php5-fpm php5-mysql php5-json php5-curl postfix build-essential tmux vim zsh $ sudo ufw enable $ sudo ufw allow 22 $ sudo ufw allow 80 $ sudo vi /etc/ssh/sshd_config $ sudo vi /etc/php5/fpm/pool.d/www.conf $ git clone https://github.com/sstephenson/rbenv.git \ > /opt/rbenv $ git clone https://github.com/sstephenson/ruby-build.git \ > ~/opt/rbenv/plugins/ruby-build $ export PATH=“/opt/rbenv/bin:$PATH" $ eval "$(rbenv init -)” $ rbenv install 2.1.3 $ gem install bundler … $ export PERLBREW_ROOT=“/opt/perlbrew” $ curl -L http://install.perlbrew.pl | bash $ perlbrew install perl-5.18.2 $ perlbrew switch perl-5.18.2 $ curl -L http://cpanmin.us | perl - —sudo \ > App::cpanminus $ cpanm Carton … $ sudo rm /etc/nginx/site-enabled/default $ sudo vi /etc/nginx/site-available/my-site $ sudo ln -s /etc/nginx/site-available/my-site \ > /etc/nginx/site-enabled/my-site … $ sudo adduser hoge $ sudo adduser fuga …

Slide 82

Slide 82 text

ࣗಈԽͷԸܙ # remote ! $ aptitude install nginx php5 php5-fpm php5-mysql php5-json php5-curl postfix build-essential tmux vim zsh $ sudo ufw enable $ sudo ufw allow 22 $ sudo ufw allow 80 $ sudo vi /etc/ssh/sshd_config $ sudo vi /etc/php5/fpm/pool.d/www.conf $ git clone https://github.com/sstephenson/rbenv.git \ > /opt/rbenv $ git clone https://github.com/sstephenson/ruby-build.git \ > ~/opt/rbenv/plugins/ruby-build $ export PATH=“/opt/rbenv/bin:$PATH" $ eval "$(rbenv init -)” $ rbenv install 2.1.3 $ gem install bundler … $ export PERLBREW_ROOT=“/opt/perlbrew” $ curl -L http://install.perlbrew.pl | bash $ perlbrew install perl-5.18.2 $ perlbrew switch perl-5.18.2 $ curl -L http://cpanmin.us | perl - —sudo \ > App::cpanminus $ cpanm Carton … $ sudo rm /etc/nginx/site-enabled/default $ sudo vi /etc/nginx/site-available/my-site $ sudo ln -s /etc/nginx/site-available/my-site \ > /etc/nginx/site-enabled/my-site … $ sudo adduser hoge $ sudo adduser fuga … # local ! $ knife solo cookbook 192.168.0.1

Slide 83

Slide 83 text

ࣗಈԽͷԸܙ # remote ! $ aptitude install nginx php5 php5-fpm php5-mysql php5-json php5-curl postfix build-essential tmux vim zsh $ sudo ufw enable $ sudo ufw allow 22 $ sudo ufw allow 80 $ sudo vi /etc/ssh/sshd_config $ sudo vi /etc/php5/fpm/pool.d/www.conf $ git clone https://github.com/sstephenson/rbenv.git \ > /opt/rbenv $ git clone https://github.com/sstephenson/ruby-build.git \ > ~/opt/rbenv/plugins/ruby-build $ export PATH=“/opt/rbenv/bin:$PATH" $ eval "$(rbenv init -)” $ rbenv install 2.1.3 $ gem install bundler … $ export PERLBREW_ROOT=“/opt/perlbrew” $ curl -L http://install.perlbrew.pl | bash $ perlbrew install perl-5.18.2 $ perlbrew switch perl-5.18.2 $ curl -L http://cpanmin.us | perl - —sudo \ > App::cpanminus $ cpanm Carton … $ sudo rm /etc/nginx/site-enabled/default $ sudo vi /etc/nginx/site-available/my-site $ sudo ln -s /etc/nginx/site-available/my-site \ > /etc/nginx/site-enabled/my-site … $ sudo adduser hoge $ sudo adduser fuga … # local ! $ knife solo cookbook 192.168.0.1 UBLFOCZXJFENBJFS

Slide 84

Slide 84 text

$IFG ‣ #FSLTpMF ‣ DPPLCPPLT ‣ EBUB@CBHT ‣ FOWJSPONFOUT ‣ OPEFT ‣ SPMFT ‣ TJUFDPPLCPPLT

Slide 85

Slide 85 text

ͲΜͳίʔυʁ directory service_dir do owner application_owner group application_owner mode '0755' action :create recursive true not_if { ::File.exists?(service_dir) } end ! remote_file "#{source_dir}/cakephp-#{cake_full_version_number}.tar.gz" do source "https://github.com/cakephp/cakephp/archive/#{cake_full_version_number}.tar.gz" mode "0644" action :create_if_missing end ! execute "untar-cakephp" do cwd source_dir command "tar -xzf cakephp-#{cake_full_version_number}.tar.gz" creates "#{source_cake_dir}/index.php" end

Slide 86

Slide 86 text

ͲΜͳίʔυʁ directory service_dir do owner application_owner group application_owner mode '0755' action :create recursive true not_if { ::File.exists?(service_dir) } end ! remote_file "#{source_dir}/cakephp-#{cake_full_version_number}.tar.gz" do source "https://github.com/cakephp/cakephp/archive/#{cake_full_version_number}.tar.gz" mode "0644" action :create_if_missing end ! execute "untar-cakephp" do cwd source_dir command "tar -xzf cakephp-#{cake_full_version_number}.tar.gz" creates "#{source_cake_dir}/index.php" end σΟϨΫτϦΛ࡞੒͢Δ

Slide 87

Slide 87 text

ͲΜͳίʔυʁ directory service_dir do owner application_owner group application_owner mode '0755' action :create recursive true not_if { ::File.exists?(service_dir) } end ! remote_file "#{source_dir}/cakephp-#{cake_full_version_number}.tar.gz" do source "https://github.com/cakephp/cakephp/archive/#{cake_full_version_number}.tar.gz" mode "0644" action :create_if_missing end ! execute "untar-cakephp" do cwd source_dir command "tar -xzf cakephp-#{cake_full_version_number}.tar.gz" creates "#{source_cake_dir}/index.php" end σΟϨΫτϦΛ࡞੒͢Δ ϦϞʔτ͔ΒϑΝΠϧΛ औͬͯ͘Δ

Slide 88

Slide 88 text

ͲΜͳίʔυʁ directory service_dir do owner application_owner group application_owner mode '0755' action :create recursive true not_if { ::File.exists?(service_dir) } end ! remote_file "#{source_dir}/cakephp-#{cake_full_version_number}.tar.gz" do source "https://github.com/cakephp/cakephp/archive/#{cake_full_version_number}.tar.gz" mode "0644" action :create_if_missing end ! execute "untar-cakephp" do cwd source_dir command "tar -xzf cakephp-#{cake_full_version_number}.tar.gz" creates "#{source_cake_dir}/index.php" end σΟϨΫτϦΛ࡞੒͢Δ ϦϞʔτ͔ΒϑΝΠϧΛ औͬͯ͘Δ ର৅σΟϨΫτϦʹղౚ͢Δ

Slide 89

Slide 89 text

ͲΜͳίʔυʁ directory service_dir do owner application_owner group application_owner mode '0755' action :create recursive true not_if { ::File.exists?(service_dir) } end ! remote_file "#{source_dir}/cakephp-#{cake_full_version_number}.tar.gz" do source "https://github.com/cakephp/cakephp/archive/#{cake_full_version_number}.tar.gz" mode "0644" action :create_if_missing end ! execute "untar-cakephp" do cwd source_dir command "tar -xzf cakephp-#{cake_full_version_number}.tar.gz" creates "#{source_cake_dir}/index.php" end σΟϨΫτϦΛ࡞੒͢Δ ϦϞʔτ͔ΒϑΝΠϧΛ औͬͯ͘Δ ର৅σΟϨΫτϦʹղౚ͢Δ 3VCZͷ%4-ʹͳ͍ͬͯΔ

Slide 90

Slide 90 text

ͲΜͳίʔυʁ default['gsskt-cakephp']['app_name'] = 'hogehoge' ! default['gsskt-cakephp']['http_server_owner'] = 'hoge' default['gsskt-cakephp']['application_owner'] = 'fuga' default['gsskt-cakephp']['deploy_parent'] = '/home/hoge' ! default['gsskt-cakephp']['cake1']['version'] = "1.3.0" default['gsskt-cakephp']['cake1']['debug_level'] = 0 default['gsskt-cakephp']['cake1']['use_analytics'] = true ! default['gsskt-cakephp']['cake2']['version'] = “2.1.0" default['gsskt-cakephp']['cake2']['debug_level'] = 0 default['gsskt-cakephp']['cake2']['use_analytics'] = true

Slide 91

Slide 91 text

ͲΜͳίʔυʁ default['gsskt-cakephp']['app_name'] = 'hogehoge' ! default['gsskt-cakephp']['http_server_owner'] = 'hoge' default['gsskt-cakephp']['application_owner'] = 'fuga' default['gsskt-cakephp']['deploy_parent'] = '/home/hoge' ! default['gsskt-cakephp']['cake1']['version'] = "1.3.0" default['gsskt-cakephp']['cake1']['debug_level'] = 0 default['gsskt-cakephp']['cake1']['use_analytics'] = true ! default['gsskt-cakephp']['cake2']['version'] = “2.1.0" default['gsskt-cakephp']['cake2']['debug_level'] = 0 default['gsskt-cakephp']['cake2']['use_analytics'] = true ઃఆ஋Λ্ॻ͖͢Δ͜ͱͰ ࠶ར༻Ͱ͖Δ

Slide 92

Slide 92 text

ࣗಈԽͷԸܙ ‣ ϛε͕֨ஈʹݮΓɺ࡞ۀ͕࣌ؒݮͬͨɻ ‣ αʔόʔΛ૿΍͢৺ཧతোน͕Լ͕ͬͨɻ ‣ ίʔυԽ͞ΕΔ͜ͱͰ࡞ۀ͕໌֬ʹͳͬͨɻ

Slide 93

Slide 93 text

ࣗಈԽͷԸܙ ‣ ϛε͕֨ஈʹݮΓɺ࡞ۀ͕࣌ؒݮͬͨɻ ‣ αʔόʔΛ૿΍͢৺ཧతোน͕Լ͕ͬͨɻ ‣ ίʔυԽ͞ΕΔ͜ͱͰ࡞ۀ͕໌֬ʹͳͬͨɻ ΞϓϦέʔγϣϯσϓϩΠͷ ࣗಈԽͷࡍͱಉ͡

Slide 94

Slide 94 text

͢΂͕ͯ͏·͍ͬͨ͘ ΋͏೰ΈͳΜͯແ͍

Slide 95

Slide 95 text

ͦΜͳΘ͚ͳ͍ ͢΂͕ͯ͏·͍ͬͨ͘ ΋͏೰ΈͳΜͯແ͍

Slide 96

Slide 96 text

ಋೖίετ ‣ ଍ֻ͚िؒҐʢਓ݄ʣ ‣ ίετʹӨڹΛ༩͑Δཁૉ ‣ ߏ੒ͷෳࡶ͞ ‣ ։ൃऀͷ஌ࣝྔ ‣ ʢϗετͷن໛ʹ͸ΑΒͳ͍ʣ

Slide 97

Slide 97 text

ࣗಈԽͰ͖ͳ͔ͬͨ͜ͱ ‣ 04ͷΠϯετʔϧΛࣗಈԽ͢Δɻ ‣ ,JDLTUBSUPS1SFTFFEʹΑΔࣗಈ࡞੒ ‣ 04ΠϝʔδϑΝΠϧ͔Βੜ੒

Slide 98

Slide 98 text

ࣗಈԽͰ͖ͳ͔ͬͨ͜ͱ ‣ 04ͷΠϯετʔϧΛࣗಈԽ͢Δɻ ‣ ,JDLTUBSUPS1SFTFFEʹΑΔࣗಈ࡞੒ ‣ 04ΠϝʔδϑΝΠϧ͔Βੜ੒ ͢΂ͯͷαʔόʔ͕ ࣗಈ؅ཧͷର৅ʹͳ͍ͬͯΔ Θ͚Ͱ͸ͳ͍

Slide 99

Slide 99 text

΋͏Ұ౓·ͱΊ ‣ σϓϩΠ͕ഒߴ଎ʹͳΓ·ͨ͠ɻ ‣ αʔόʔߏங͕ഒߴ଎ʹͳΓ·ͨ͠ɻ ஫ʣ౰ࣾൺ

Slide 100

Slide 100 text

໨ࢦ͢ͱ͜Ζ ‣ ܧଓతσϦόϦʔʁ ‣ #MVF(SFFO%FQMPZNFOUʁ ‣ *NNVUBCMF*OGSBTUSVDUVSFʁ

Slide 101

Slide 101 text

͍ͣΕʹ͠Ζɺ ͕͜͜௨ա఺

Slide 102

Slide 102 text

׬ ࣍͸ฐࣾ૆ࢁΑΓʮٕज़తෛ࠴Λղফ͢ΔʢΞδϟΠϧฤʣʯ