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

Node.jsサーバアプリケーションの 稼働方法 ~基本からDockerまで~

Node.jsサーバアプリケーションの 稼働方法 ~基本からDockerまで~

Akiyoshi Tanaka

May 09, 2019
Tweet

More Decks by Akiyoshi Tanaka

Other Decks in Programming

Transcript

  1. /PEFKTαʔόΞϓϦέʔγϣϯͷ Քಇํ๏ ʙجຊ͔Β%PDLFS·Ͱʙ

  2. ࣗݾ঺հ w גࣜձࣾ#5SFF w ాதষت"LJZPTIJ5BOBLB w !BLLVO@DIPJ w /PEFKTΞϓϦέʔγϣϯӡ༻ܦݧ೥

  3. ୯ମϓϩάϥϜ αʔόϨε αʔό 'BB4-BNCEB #BB4'JSFCBTF *BB4&$ 1BB4)FSPLV ϑϩϯτΤϯυΞϓϦέʔγϣϯͷϏϧυ ࠓ೔ͷτϐοΫʂ /PEFKTͷ༻్ࠓ೔ͷτϐοΫ

    *P5σόΠε ΦϯϓϨ
  4. w /PEFKTͰαʔόཱͯͨ͜ͱ͕͋Δ w QNΛ࢖ͬͨ͜ͱ͕͋Δ w %PDLFS্Ͱ/PEFKTΛಈ͔͍ͯ͠Δ ࣭໰

  5. w جຊ w ϓϩηεϚωʔδϟ w αʔόΞʔΩςΫνϟ w "84&$4Y/PEFKT ໨࣍

  6. w جຊ w ϓϩηεϚωʔδϟ w αʔόΞʔΩςΫνϟ w "84&$4Y/PEFKT

  7. /PEFKT8FCαʔόಈ࡞ྫ ιʔε $ curl http://localhost:8000 Fri May 03 2019 13:00:25

    GMT+0900 (JST) αʔόىಈ ΫϥΠΞϯτ
 ΞΫηε $ node index.js
  8. OPEFίϚϯυ w جຊతʹγϯάϧϓϩηεɺγϯάϧεϨου w Τϥʔ౳Ͱϓϩηε͕མͪΔͱఀࢭͯ͠͠·͏ w ߋ৽͢Δࡍʹμ΢ϯλΠϜ͕ൃੜ

  9. w جຊ w ϓϩηεϚωʔδϟ w ΞʔΩςΫνϟ w "84&$4Y/PEFKT

  10. ϓϩηεϚωʔδϟ ɾΞϓϦέʔγϣϯ͕ҟৗऴྃͨ͠৔߹ʹࣗಈతʹ࠶࢝ಈ͢Δɻ ɾϥϯλΠϜɾύϑΥʔϚϯεͱϦιʔε࢖༻ྔʹؔ͢ΔΠϯαΠτΛಘΔɻ ɾύϑΥʔϚϯεΛ޲্ͤ͞ΔͨΊʹઃఆΛಈతʹมߋ͢Δɻ ɾΫϥελϦϯάΛ੍ޚ͢Δɻ IUUQTFYQSFTTKTDPNKBBEWBODFEQNIUNM

  11. ϓϩηεϚωʔδϟ w GPSFWFS w 1. w 4USPOH-PPQ1SPDFTT.BOBHFS TUSPOHQN  w

    4ZTUFN%
  12. 1.

  13. ϓϩηεϚωʔδϟQN w /PEFKT੡ͷϓϩηεϚωʔδϟ w Πϯετʔϧɺىಈ؆୯ w ϓϩηε࠶ىಈɺઃఆϑΝΠϧԽ $ npm install

    pm2@latest -g $ pm2 start app.js
  14. ϓϩηεϚωʔδϟQN w σϓϩΠ w ࣗಈىಈαϙʔτ w Ϛϧνϓϩηεىಈ w ଞɺϞχλϦϯάɺϩά؅ཧ

  15. ϓϩηεϚωʔδϟQNσϓϩΠ w ઃఆϑΝΠϧʹهड़ͯ͠ίϚϯυ࣮ߦ͢Δ͚ͩ w θϩμ΢ϯλΠϜͰߋ৽Մೳ w DBQJTUSBOPͱͷ૬ੑ͕ѱ͍ɻQNͰͷσϓϩΠ͕ແ೉ w γϯϘϦοΫϦϯΫͰϦϦʔεΛ੾Γସ͑Δ࢓૊Έ͕QNʹ߹Θͳ͍ w

    ࠶ىಈ࣌ʹ൓ө͞Εͳ͍ɺΤϥʔͰམͪΔ౳
  16. ϓϩηεϚωʔδϟQNσϓϩΠ module.exports = { apps: [{ name: "app", script: "app.js"

    }], deploy: { production: { key: "/path/to/some.pem", user: "ubuntu", host: ["192.168.0.13"], ref: "origin/master", repo: "git@github.com:Username/repository.git", path: "/var/www/my-repository", 'post-deploy': "npm install", }, } } FDPTZTUFNDPOpHKT IUUQTQNJPEPDFOSVOUJNFHVJEFFBTZEFQMPZXJUITTI
  17. ϓϩηεϚωʔδϟQNࣗಈىಈ w ࣗಈىಈαʔόىಈ࣌ʹࣗಈతʹϓϩηεΛىಈ͢Δ w ֤04ʹ߹ΘͤͨࣗಈىಈઃఆΛੜ੒͢ΔίϚϯυ͕༻ҙ w TZTUFNE VQTUBSU MBVODIE PQFOSD

    SDE TZTUFNW $ pm2 startup
  18. ϓϩηεϚωʔδϟϚϧνϓϩηε w $16ϦιʔεΛ࠷େݶ࢖͏ͨΊ w γϯάϧϓϩηεͰϕϯνϚʔΫൺֱ͠ͳ͍Ͱʜʂ w ϫʔΧʔϓϩηε͕ͭఀࢭͯ͠΋ɺଞͷϓϩηεͰಈ࡞ w $16ϔϏʔͳॲཧ΍ɺϒϩοΩϯά*0౳Ͱࢭ·Δ

  19. ϓϩηεϚωʔδϟϚϧνϓϩηε w ϓϩηε಺ͷσʔλ΍Πϕϯτ͸ڞ༗͞Εͳ͍ w 3FEJT౳Ͱڞ༗͢Δ w 8FC4PDLFUΛϚϧνϓϩηεͰ࢖͏৔߹͸ඞਢ

  20. ϓϩηεϚωʔδϟQNϚϧνϓϩηε w ෛՙ෼ࢄΛࣗ෼Ͱ΍ΔˠGPSLϞʔυ w ෛՙ෼ࢄΛQNʹ೚͍ͤͨˠDMVTUFSϞʔυ

  21. ϓϩηεϚωʔδϟQNϚϧνϓϩηε DMVTUFS GPSL ιʔεमਖ਼ ෆཁ ඞཁ ϙʔτׂ౰ ϚελʔͷΈ ͭ ϓϩηε͝ͱ

    ෳ਺ ىಈํ๏ DMVTUFSϞδϡʔϧ DIJME@QSPDFTTGPSL ϩʔυόϥϯγϯά ༗ ແ εςΟοΩʔ
 ηογϣϯ ෆՄ -#ଆͰՄ
  22. ϓϩηεϚωʔδϟ·ͱΊ w OPEFͷىಈ͸QNͰࣄ଍ΓΔ w Ϛϧνϓϩηεʹ͢Δ৔߹͸Ϟʔυͷҧ͍ʹ஫ҙ w DMVTUFSϞʔυͱGPSLϞʔυͷ࢖͍෼͚

  23. w جຊ w ϓϩηεϚωʔδϟ w αʔόΞʔΩςΫνϟ w "84&$4Y/PEFKT

  24. αʔόΞʔΩςΫνϟ γϯάϧϓϩηε Ϛϧνϓϩηε γϯάϧαʔό ։ൃ༻్ খن໛ Ϛϧναʔό γϯϓϧ εέʔϧΞ΢τ DMVTUFSͰ

    εέʔϧΞ΢τ
  25. γϯάϧϓϩηεɾγϯάϧαʔό w ࠷΋γϯϓϧͳߏ੒ w ։ൃ؀ڥɺϓϩτλΠϓ޲͚ αʔό

  26. Ϛϧνϓϩηεɾγϯάϧαʔό w खܰʹεέʔϧΞοϓ͍ͨ͠ɺՄ༻ੑΛ্͍͛ͨ w খن໛ͳϓϩμΫτ޲͚ αʔό DMVTUFS

  27. Ϛϧνϓϩηεɾγϯάϧαʔό w GPSLϞʔυͳΒϩʔυόϥϯαඞཁ ϩʔυόϥϯα αʔό GPSL

  28. γϯάϧϓϩηεɾϚϧναʔό ϩʔυόϥϯα w αʔόଆͷߏ੒Λγϯϓϧʹෛՙ෼ࢄ͕Ͱ͖Δ w %PDLFS؀ڥͰߏங͠΍͍͢ w ϩʔυόϥϯαͰεςΟοΩʔηογϣϯ͍ͨ͠৔߹ʢ4PDLFUJPʣ αʔό αʔό

  29. ϚϧνϓϩηεɾϚϧναʔό ϩʔυόϥϯα w ϚϧνίΞαʔόͰෛՙ෼ࢄ͍ͨ͠ w GPSLϞʔυͰಈ͔͢ͱ໘౗ αʔό αʔό

  30. αʔόΞʔΩςΫνϟ·ͱΊ γϯάϧϓϩηε Ϛϧνϓϩηε γϯάϧαʔό ։ൃ༻్ খن໛ Ϛϧναʔό γϯϓϧ εέʔϧΞ΢τ DMVTUFSͰ

    εέʔϧΞ΢τ
  31. w جຊ w ϓϩηεϚωʔδϟ w αʔόΞʔΩςΫνϟ w "84&$4Y/PEFKT

  32. "84&$4 w "84ͷ%PDLFSίϯςφϚωδϝϯταʔϏε w &$͔ɺϑϧϚωʔδυͷ'BSHBUFΛબ୒Ͱ͖Δ w 'BSHBUFศར͚ͩͲɺ&$ΑΓׂߴͰɺTTIͰαοͱೖΕͳ͍

  33. %PDLFSY/PEFKT w %PDLFSͱ/PEFKTͷ૬ੑ͕ྑ͍ w ͲͪΒ΋جຊ͸γϯάϧϓϩηε w /PEFKTίϯςφ͚ͩͰ8FCαʔόίϯςφ͕ͳͯ͘΋ಈ͘

  34. ෳ਺αʔόߏ੒๊͕͑Δ՝୊ w σϓϩΠ w ϩάऩू w εέʔϧΞ΢τ w αʔόߏ੒؅ཧ

  35. ෳ਺αʔόߏ੒๊͕͑Δ՝୊Λ"84&$4Ͱղܾ w σϓϩΠ w ϩάऩू w εέʔϧΞ΢τ w αʔόߏ੒؅ཧ ϩʔϦϯάߋ৽

    $MPVE8BUDI Φʔτεέʔϧ %PDLFSpMFEPDLFSDPNQPTF
  36. ϩʔϦϯάߋ৽ ίϯςφ W ίϯςφ W ίϯςφ W ίϯςφ W ৽͍͠όʔδϣϯΛىಈ

    ৽όʔδϣϯͷૄ௨͕֬ೝͰ͖Ε͹
 چόʔδϣϯΛࢭΊΔ
  37. "84&$4 &-# ʢϩʔυόϥϯαʣ &$ %PDLFSίϯςφ &$ %PDLFSίϯςφ %PDLFSίϯςφ ˞'BSHBUFͷ৔߹ɺ&$΋ෆཁ

  38. "84&$4 w ίϯςφͷࣗಈ෮چ w OPEFKTϓϩηε͕མͪͯɺૄ௨͕Ͱ͖ͳ͘ͳΔͱίϯςφΛىಈ͢Δ w ϩʔϦϯάߋ৽ w ϩάυϥΠόઃఆ w

    &-#ʹΑΔϩʔυόϥϯγϯά w ΤϑΣϝϥϧϙʔτʹ͢Δ͜ͱͰϙʔτׂ౰΋ࣗಈ
  39. ϓϩηεϚωʔδϟ ɾΞϓϦέʔγϣϯ͕ҟৗऴྃͨ͠৔߹ʹࣗಈతʹ࠶࢝ಈ͢Δɻ ɾϥϯλΠϜɾύϑΥʔϚϯεͱϦιʔε࢖༻ྔʹؔ͢ΔΠϯαΠτΛಘΔɻ ɾύϑΥʔϚϯεΛ޲্ͤ͞ΔͨΊʹઃఆΛಈతʹมߋ͢Δɻ ɾΫϥελϦϯάΛ੍ޚ͢Δɻ IUUQTFYQSFTTKTDPNKBBEWBODFEQNIUNM

  40. "84&$4 w "84&$4͸ϓϩηεϚωʔδϟʁ w &$4্ͳΒQNΛ࢖ΘͣOPEFίϚϯυ͚ͩͰ΋े෼ʁ

  41. ·ͱΊ w QNͰαʔόӡ༻ͷେ෦෼͸ղܾͰ͖Δ w ༻్ʹ߹ͬͨΞʔΩςΫνϟબఆ͕ඞཁ w ෳ਺୆ߏ੒͸%PDLFSΛ࢖ͬͨӡ༻͕Φεεϝ

  42. ஌Γ͍ͨ͜ͱ w XPSLFS@UISFBET w ύϑΥʔϚϯεɾνϡʔχϯά w ͦͷଞͷίϯςφϚωδϝϯταʔϏε

  43. ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠