$30 off During Our Annual Pro Sale. View Details »

4時間耐久 PHP on Heroku

4時間耐久 PHP on Heroku

DevLoveで使った資料です。

Yusuke Ando

June 09, 2012
Tweet

More Decks by Yusuke Ando

Other Decks in Programming

Transcript

  1. ࣌ؒ଱ٱ1)16OJUͷڭࣨ:VTVLF"OEP !ZBOEP

    1)1PO)FSPLVͷڭࣨ
    ࣌ؒ଱ٱ
    ࣌ؒ଱ٱ1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    View Slide

  2. 1)1PO)FSPLVYusuke Ando (@yando)
    ςΩετ

    View Slide

  3. 1)1PO)FSPLVYusuke Ando (@yando)
    http://tech.a-listers.jp/

    View Slide

  4. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    ຊ೔ͷର৅ऀ
    1)1Λ࢖͍ͬͯΔ
    'BDFCPPLΞϓϦΛ࡞Γ͍ͨ
    )FSPLVΛ࢖͍͍ͨ
    ͦΜͳօ͞Μ

    View Slide

  5. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    )FSPLVΛ
    ࢖ͬͯ'BDFCPPL
    ΞϓϦΛ
    ࡞ͬͯΈΑ͏ʂ

    View Slide

  6. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    ຊ೔ͷϝχϡʔ
    )FSPLVͰ1)1
    %#ͷ࢖͍ํ
    'BDFCPPLΞϓϦ։ൃ

    View Slide

  7. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    )FSPLVͰ1)1

    View Slide

  8. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    1)1αϙʔτʁ
    ެࣜͷϦετʹ͸ଘࡏ͠ͳ͍
    'BDFCPPL࿈ܞͷࠒ͔Βಈ࡞
    ࣮ࡍʹ͸͔ͳΓՔಇ͍ͯ͠Δ
    ٕज़తʹ͸໰୊ͳ͠

    View Slide

  9. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    ࣄલʹඞཁͳ΋ͷ
    )FSPLVΞΧ΢ϯτ
    'BDFCPPLΞΧ΢ϯτ
    UPPMCFMU IFSPLVHJU

    View Slide

  10. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    EFWFMPQFSTGBDFCPPLDPN
    ։ൃऀΞϓϦ΁

    View Slide

  11. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    ։ൃऀΞϓϦ

    View Slide

  12. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    ϝχϡʔը໘
    ࡞੒ࡁΞϓϦ
    ͕ग़Δ৔ॴ
    ΞϓϦͷ࡞੒

    View Slide

  13. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    ΞϓϦͷ໋໊
    νΣοΫΛೖΕΔͱ
    )FSPLVΞϓϦԽ

    View Slide

  14. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    ݴޠͱϝΞυઃఆ

    View Slide

  15. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    ͜ΕͰσϓϩΠ׬ྃ
    ΞϓϦ΁

    View Slide

  16. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    ςϯϓϨ͕ಈ࡞த

    View Slide

  17. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    ϩάΠϯ࣌ʹݖݶ֬ೝ
    ͕͜͜େࣄʂ

    View Slide

  18. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    ϩάΠϯ੒ޭ
    ֤छ৘ใΛऔಘ

    View Slide

  19. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    ιʔε͸Կॲʹʁ
    wιʔε͸)FSPLVͷHJUʹଘࡏ
    w)FSPLV͸͔ΒDMPOFͯ͠ฤू
    wDPNNJUͯ͠QVTI͢Δͱ൓ө

    View Slide

  20. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    HJUͷঢ়گ
    HJUϦϙδτϦ
    ίʔυ
    QVTIͰίʔυΛ൓ө͢Δ
    मਖ਼
    मਖ਼
    मਖ਼
    मਖ਼
    मਖ਼ EZOP
    )FSPLV
    ϩʔΧϧ

    View Slide

  21. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    )FSPLVʹϩάΠϯ

    View Slide

  22. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    ΞυϨεΛ֬ೝ
    HJUϦϙδτϦͷΞυϨε

    View Slide

  23. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    ιʔεͷमਖ਼
    w)FSPLVͰ֬ೝͨ͠63-ΛΫϩʔϯ
    wमਖ਼ίʔυΛDPNNJU
    w)FSPLVʹQVTI

    View Slide

  24. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    ࿅श1)1ΛσϓϩΠ
    w'BDFCPPLͷ։ൃऀϖʔδ͔Β࡞੒
    wಈ࡞Λ֬ೝ
    wϦϙδτϦΛΫϩʔϯͯ͠ίʔυमਖ਼
    wमਖ਼ͨ͠಺༰ͷ֬ೝ
    )FMMP8PSME౳

    View Slide

  25. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    ϩʔΧϧͰಈ͘ʁ

    View Slide

  26. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    ϩʔΧϧಈ࡞ͷཁ݅
    wIPTUTΛॻ͖׵͑ΔͳͲ
    w֘౰ͷϗετΛBQBDIFʹઃఆ
    w"QQ*%4FDSFUΛ؀ڥม਺ʹઃఆ
    w։ൃ༻͸ผΞϓϦɺυϝΠϯ͕ແ೉

    View Slide

  27. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    )FSPLVͷجຊٕ
    wIFSPLVDPOpH
    wIFSPLVQT
    wIFSPLVMPHT<U>
    wIFSPLVSVOCBTI
    wIFSPLVPQFO

    View Slide

  28. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    )FSPLVͷ੍ݶࣄ߲
    wϩʔΧϧϑΝΠϧ͕ӬଓԽ͞Εͳ͍
    wNCTUSJOH͕ඪ४Ͱ͸࢖͑ͳ͍
    wJOEFYQIQͷଘࡏ͕ඞਢ
    wωοτϫʔΫ͕ԕ͍
    w4FSWFS-JNJU.BY$MJFOUT

    View Slide

  29. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    ϩʔΧϧϑΝΠϧ
    ҰԠɺॻ͖ࠐΊΔ

    View Slide

  30. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    ࠶ىಈ͢Δͱ
    ͞Α͏ͳΒɺσʔλ
    $ heroku restart
    Restarting processes... done

    View Slide

  31. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    JOEFYQIQ͕ແ͍
    $ git mv index.php index2.php
    $ git commit -m "move"
    [master 65b0921] move
    1 files changed, 0 insertions(+), 0 deletions(-)
    rename index.php => index2.php (100%)
    $ git push heroku master
    Counting objects: 3, done.
    Writing objects: 100% (2/2), 228 bytes, done.
    Total 2 (delta 0), reused 0 (delta 0)
    -----> Heroku receiving push
    ! Heroku push rejected, no Cedar-supported app detected
    To [email protected]:stark-warrior-3088.git
    ! [remote rejected] master -> master (pre-receive hook declined)
    error: failed to push some refs to '[email protected]:stark-warrior-3088.git'
    QVTIͰ͖ͳ͍

    View Slide

  32. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    ౦ւ؛͸ԕ͍
    1 10.200 ms 2.443 ms 10.540 ms
    2 * * *
    3 14.313 ms 11.478 ms 12.616 ms
    4 10.042 ms 12.934 ms 12.804 ms
    5 12.451 ms 14.936 ms 17.440 ms
    6 te4-4-403.gw2.nrt2.asianetcom.net (203.192.150.125) 13.373 ms 16.648 ms 18.423 ms
    7 gi0-0-0.cr1.nrt1.asianetcom.net (202.147.1.62) 17.052 ms 34.160 ms 16.097 ms
    8 te0-0-0-4.gw1.lax3.asianetcom.net (202.147.61.169) 129.748 ms 132.160 ms 129.538 ms
    9 be1.gw2.lax3.asianetcom.net (202.147.61.162) 124.365 ms 123.194 ms 123.215 ms
    10 equinix02-iad2.amazon.com (206.223.115.35) 182.967 ms 192.914 ms 187.884 ms
    11 72.21.220.45 (72.21.220.45) 200.332 ms
    72.21.220.43 (72.21.220.43) 193.632 ms
    205.251.245.5 (205.251.245.5) 197.197 ms
    12 205.251.245.47 (205.251.245.47) 192.199 ms 195.086 ms
    72.21.222.155 (72.21.222.155) 367.567 ms
    13 216.182.224.71 (216.182.224.71) 193.768 ms
    216.182.224.203 (216.182.224.203) 188.929 ms
    216.182.224.207 (216.182.224.207) 204.856 ms
    14 * * *
    15 * * *
    16 * * *
    17 * * *

    View Slide

  33. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    NCTUSJOHΛ࢖͏
    wվྑ͞ΕͨCVJMEQBDLΛ࢖͏
    ɹˠ͜ͷํ๏͕ཧ૝
    wμϝͳ৔߹͸ࣗྗղܾ
    IFSPLV༻ͷNCTUSJOHTP
    ΞϓϦ಺ʹQIQJOJΛ࡞ΓಡΈࠐΉ

    View Slide

  34. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    CVJMEQBDL
    wDFEBSελοΫͷߏஙΩοτ
    w-JOVY্Ͱͷߏஙϊ΢ϋ΢͕࢖͑Δ
    wHJUIVC্ͰϑΥʔΫͯ͠͞·͟·ͳߏ
    ੒ΛࣗྗͰ࡞੒ͯ͠ɺར༻Ͱ͖Δ
    wIFSPLV੡ɺίϛϡχςΟ੡͕ଘࡏ

    View Slide

  35. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    CVJMEQBDL

    View Slide

  36. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    5IJSEQBSUZ

    View Slide

  37. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    5IJSEQBSUZ

    View Slide

  38. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    վྑ͞ΕͨCVJMEQBDL
    w৽نΞϓϦͷ৔߹
    ɹ
    wطଘΞϓϦͷ৔߹͸มߋ
    $heroku create --buildpack https://github.com/winglian/heroku-buildpack-php
    -s cedar
    $heroku config:add BUILDPACK_URL=https://github.com/winglian/heroku-
    buildpack-php

    View Slide

  39. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    ࣗྗͰղܾ
    wNCTUSJOHTPΛ഑ஔ
    IUUQTHJUIVCDPNXVQVUBIIFSPLVMJCSBSJFT
    wQIQJOJΛهड़
    extension=/app/www/mbstring.so

    View Slide

  40. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    )FSPLVͷίπ
    w؀ڥ໘Ͱͷ੍໿͸ड͚ೖΕΔ
    w೔ຊޠͷ໰୊ͳͲ͸ΫϦΞͰ͖Δ
    w୯७ʹΞϓϦΛࡌͤͯ͸͍͚ͳ͍
    w੩తίϯςϯπΛ֎ʹಀ͢

    View Slide

  41. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    %#ͷ࢖͍ํ

    View Slide

  42. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    ར༻Ͱ͖Δ%#
    w4IBSFE%# 1PTUHSF42-

    ɹɹ.#·Ͱແྉ
    ɹɹ(#·ͰͰ
    wͦͷଞͷ֤छΞυΦϯ
    ɹɹ.Z42-.POHP%#
    ·ͣ͸ແྉͷ1PTUHSF42-

    View Slide

  43. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    ΞυΦϯ

    View Slide

  44. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    BEEPOTIFSPLVDPN

    View Slide

  45. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    $MFBS%#

    View Slide

  46. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    ແྉ൛΋͋Δ

    View Slide

  47. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    ཁΫϨδοτΧʔυ

    View Slide

  48. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    ແྉͷTIBSFEEC
    w'BDFCPPL͔ΒͷΞϓϦ͸ະઃఆ
    wඞཁͳ৔߹͸ผ్ίϚϯυͰ௥Ճ
    heroku addons:add shared-database
    w઀ଓઌ͸IFSPLVDPOpHͰ֬ೝ͢Δ
    heroku config
    wεΩʔϚ؅ཧ͸ECNJHSBUF͕૝ఆ

    View Slide

  49. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    %#ઃఆͷ࢓૊Έ
    w؀ڥม਺ʹ%4/จࣈྻ͕ઃఆ͞ΕΔ
    w3VCZ͕લఏͱͳͬͨܗࣜ
    w1)1͔Βར༻͢Δ৔߹͸దٓɺղੳ
    postgres://ajkilbabda:4E7Nr-
    [email protected]
    zonaws.com/ajkilbxgca
    postgres://[user]:[pass]@[host]/[database]

    View Slide

  50. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    %#ͷ؅ཧ
    w1)1Ͱ͸ECNJHSBUF͕࢖͑ͳ͍
    w઀ଓݩ੍ݶ͕͋ΔͷͰίϯιʔϧෆՄ
    wϑϨʔϜϫʔΫͷػೳ΋࢖͑Δ
    w8FCΞϓϦ͔Βߦ͏ͱಛʹ؆୯
    IUUQTHJUIVCDPNZBOEPEQIQQHBENJOIFSPLV

    View Slide

  51. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    ࿅श%#Λ࢖ͬͯΈΔ
    wIFSPLVBEEPOTBEETIBSFEEBUBCBTF
    wQIQQHBENJOΛHJUTVCNPEVMFBEE
    wσϓϩΠͯ͠8FC͔Βͷ؅ཧΛ֬ೝ
    $git submodule add git://github.com/yandod/phppgadmin-heroku.git

    View Slide

  52. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    'BDFCPPLΞϓϦ

    View Slide

  53. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    '#ΞϓϦ։ൃͷجૅ
    "QQ*%"QQ4FDSFU
    1)14%,
    HSBQI"1*TDPQF
    TPDJBMQMVHJO

    View Slide

  54. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    '#ΞϓϦͱ͸ʁ
    'BDFCPPL͕ఏڙ͢Δ"1*Λ
    ར༻ͨ͠8FC΍ΞϓϦ
    ֘౰ൣғ͸޿େ

    View Slide

  55. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    8FCTJUF
    ೝূͳͲʹ'BDFCPPLΛར༻

    View Slide

  56. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    'BDFCPPL಺ΞϓϦ
    $BOWBTͰಈ࡞

    View Slide

  57. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    ϞόΠϧ
    'BDFCPPLͷϞόΠϧΞϓϦ಺Ͱಈ࡞

    View Slide

  58. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    ΞϓϦͷछྨ
    w8FCαΠτ
    ɹࣗ༝͕ͩɺ'BDFCPPL֎ʹͳΔ
    w'BDFCPPL಺ΞϓϦ
    ɹϨΠΞ΢τɺϞόΠϧʹ੍ݶ͋Γ
    wϞόΠϧΞϓϦ
    ɹࠓޙͷ੒௕גʹͳΔͱࢥΘΕΔ
    1$ͱϞόΠϧͰҧ͍͕͋Δ఺ʹ஫ҙ

    View Slide

  59. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    "QQ*%4FDSFU
    w'BDFCPPLͷ"1*ͷར༻ʹඞཁ
    w։ൃऀΞϓϦ͔Β֬ೝՄೳ
    wΫϦοΫͰ࡞੒͞ΕͨΞϓϦͰ͸؀
    ڥม਺Λ࢖ͬͯड͚౉͍ͯ͠Δ
    $ heroku config
    === Config Vars for vivid-rain-6470
    FACEBOOK_APP_ID: 425865070767611
    FACEBOOK_SECRET: c50346e471016be2fbd3572fd2de1f11

    View Slide

  60. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    ιʔε಺͔Βͷऔಘ

    View Slide

  61. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    QIQTEL
    w"1*Λར༻͢Δ1)1ΫϥΠΞϯτ
    wGBDFCPPL͕ެ։͍ͯ͠Δ
    w೥݄͔ΒϦϙδτϦ͕มߋʹ

    View Slide

  62. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    جຊతͳར༻ྫ

    View Slide

  63. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    ೝূॲཧͷྫ
    ϩάΠϯࡁΈͳΒ*%औಘ
    "1*Λίʔϧ
    ϩάΠϯ63-ͷੜ੒

    View Slide

  64. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    ೝূॲཧͷྫ
    'BDFCPPLʹભҠͯ͠໭Δ

    View Slide

  65. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    ࿅शBQJΛ࢖ͬͯΈΔ
    wβοΧʔόʔάͷ৘ใΛը໘ʹදࣔ
    wϩάΠϯͯ͠ɺࣗ෼ͷ৘ใ΋දࣔ
    wJOEFYQIQ͸มߋ͠ͳ͍ͰผϑΝΠϧ
    w4%,ͷαϯϓϧΛࢀߟ
    https://github.com/facebook/facebook-php-sdk/
    blob/master/examples/example.php

    View Slide

  66. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    (SBQI"1*
    ༷ʑͳ"1*ΛNFͷΑ͏ʹ࢖͑Δ

    View Slide

  67. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    TDPQFQFSNJTTJPO
    w"1*Λܦ༝ͨ͠৘ใͷΞΫηεൣғ
    w"1*Λܦ༝ͨ͠ػೳͷఏڙൣғ
    wཁٻͨ͠ݖݶ͸ඞͣঝೝ͕ඞཁ

    View Slide

  68. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    σϑΥϧτͷঢ়ଶ
    ஀ੜ೔΍FNBJM͕ແ͍

    View Slide

  69. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    QFSNJTTJPO͸๲େ
    https://developers.facebook.com/docs/authentication/permissions/

    View Slide

  70. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    TDPQFࢦఆͷྫ
    ΧϯϚ۠੾ΓͰࢦఆ
    ݖݶ෇͖ϩάΠϯ63-ͷੜ੒

    View Slide

  71. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    TDPQFࢦఆͷྫ
    ֬ೝࣄ߲͕૿͑Δʂ

    View Slide

  72. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    ѱຐͷ࣮ݧ

    View Slide

  73. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    ·͞ʹ֎ಓʂ

    View Slide

  74. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    ൿີओٛͳਓͷࣗӴࡦ

    View Slide

  75. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    ࣮૷͸؆୯͕ͩɺن໿ҧ൓ʹ஫ҙ

    View Slide

  76. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    ࿅श஀ੜ೔Ϧετ
    wϲ݄Ҏ಺ʹ஀ੜ೔ͷ༑ਓΛදࣔ
    w༑ਓͷ஀ੜ೔Λऔಘ͢Δݖݶ௥Ճ
    w"1*ͷར༻ํ๏Λ޻෉͢Δ

    View Slide

  77. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    TPDJBMQMVHJO
    w'BDFCPPLͷػೳΛ࢖͏ຒΊࠐΈλά
    wϒϩάύʔπతͳ෺
    wλάΛషΕ͹ྑ͍

    View Slide

  78. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    ເ͕޿͕Δ
    w΋͸΍ͳΜͰ΋࣮૷Ͱ͖Δ
    wGBDFCPPLͰϩάΠϯ͢Δܝࣔ൘
    w༑ୡ͕ొ৔͢Δੲ࿩
    w਍அΞϓϦ
    wιʔγϟϧ˓˓Ͱࢿۚௐୡʢ๮ಡʣ

    View Slide

  79. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    ·ͱΊ

    View Slide

  80. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    1)1PO)FSPLV
    wखܰʹར༻Ͱ͖Δ1BB4
    w͍͔ͭ͘ͷίπͱ੍ݶ
    w݁ہɺͳΜͰ΋ग़དྷΔ

    View Slide

  81. 1)1PO)FSPLV:VTVLF"OEP !ZBOEP

    'BDFCPPLΞϓϦ
    w৘ใ͸8FC͔Βήοτ
    wӳޠͰ΋ϝήͳ͍
    wਐԽ͕ૣ͍ͷͰܧଓ͕େࣄ

    View Slide