Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Node.jsサーバアプリケーションの 稼働方法 ~基本からDockerまで~
Search
Akiyoshi Tanaka
May 09, 2019
Programming
950
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Node.jsサーバアプリケーションの 稼働方法 ~基本からDockerまで~
Akiyoshi Tanaka
May 09, 2019
More Decks by Akiyoshi Tanaka
See All by Akiyoshi Tanaka
TypeScript @Decorator で node.js 開発
akkunchoi
0
73
Laravel5.5 Broadcastingを使ってみた話
akkunchoi
1
560
Other Decks in Programming
See All in Programming
Terraform標準の組織で AWS CDKをどう使うか
mu7889yoon
1
510
仕様駆動開発へのトライを機に チームに適合する手法を模索し続けている話
freee
PRO
0
500
使いながら育てる Claude Code — 開発フローの1コマンド化 × 繰り返し指摘の自動仕組み化
shiki_kakaku
0
1.8k
型も通る、synthも通る、それでも危ない 〜AIのCDKの権限とコストを機械で検証する〜 / It Passes Type Checks, It Passes Synth Checks, but It’s Still Risky — Automatically Verifying Permissions and Costs in AI’s CDK —
seike460
PRO
1
550
自動化したのに回らないテスト運用の壁ーAI時代の品質責任と生産性
mfunaki
0
130
Cloudflare is Agents
chimame
0
160
Jindong: Introducing Declarative Haptics in Compose Multiplatform
l2hyunwoo
0
110
テーブルをDELETEした
yuzneri
0
140
【QA Test Talk Vol.8】AI-DLC による Whole Team Approach の加速
pkshadeck
PRO
0
180
ドリフトを絶対に許さない(?)CDK運用 / CDK Ops with Zero Tolerance for Drifts (?)
akihisaikeda
1
180
AI Engineeringは、AIプロダクトだけのものか? 〜AIがソフトウェアを作る時代の新しい当たり前〜 / No AI in your product. AI Engineering in your development.
rkaga
4
430
メールのエイリアス機能を履き違えない
isshinfunada
0
240
Featured
See All Featured
BBQ
matthewcrist
89
10k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
250
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.5k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
990
The Invisible Side of Design
smashingmag
301
52k
Context Engineering - Making Every Token Count
addyosmani
9
1.1k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
330
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
640
Scaling GitHub
holman
464
140k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
230
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Transcript
/PEFKTαʔόΞϓϦέʔγϣϯͷ Քಇํ๏ ʙجຊ͔Β%PDLFS·Ͱʙ
ࣗݾհ w גࣜձࣾ#5SFF w ాதষت"LJZPTIJ5BOBLB w !BLLVO@DIPJ w /PEFKTΞϓϦέʔγϣϯӡ༻ܦݧ
୯ମϓϩάϥϜ αʔόϨε αʔό 'BB4-BNCEB #BB4'JSFCBTF *BB4&$ 1BB4)FSPLV ϑϩϯτΤϯυΞϓϦέʔγϣϯͷϏϧυ ࠓͷτϐοΫʂ /PEFKTͷ༻్ࠓͷτϐοΫ
*P5σόΠε ΦϯϓϨ
w /PEFKTͰαʔόཱͯͨ͜ͱ͕͋Δ w QNΛͬͨ͜ͱ͕͋Δ w %PDLFS্Ͱ/PEFKTΛಈ͔͍ͯ͠Δ ࣭
w جຊ w ϓϩηεϚωʔδϟ w αʔόΞʔΩςΫνϟ w "84&$4Y/PEFKT ࣍
w جຊ w ϓϩηεϚωʔδϟ w αʔόΞʔΩςΫνϟ w "84&$4Y/PEFKT
/PEFKT8FCαʔόಈ࡞ྫ ιʔε $ curl http://localhost:8000 Fri May 03 2019 13:00:25
GMT+0900 (JST) αʔόىಈ ΫϥΠΞϯτ ΞΫηε $ node index.js
OPEFίϚϯυ w جຊతʹγϯάϧϓϩηεɺγϯάϧεϨου w ΤϥʔͰϓϩηε͕མͪΔͱఀࢭͯ͠͠·͏ w ߋ৽͢ΔࡍʹμϯλΠϜ͕ൃੜ
w جຊ w ϓϩηεϚωʔδϟ w ΞʔΩςΫνϟ w "84&$4Y/PEFKT
ϓϩηεϚωʔδϟ ɾΞϓϦέʔγϣϯ͕ҟৗऴྃͨ͠߹ʹࣗಈతʹ࠶࢝ಈ͢Δɻ ɾϥϯλΠϜɾύϑΥʔϚϯεͱϦιʔε༻ྔʹؔ͢ΔΠϯαΠτΛಘΔɻ ɾύϑΥʔϚϯεΛ্ͤ͞ΔͨΊʹઃఆΛಈతʹมߋ͢Δɻ ɾΫϥελϦϯάΛ੍ޚ͢Δɻ IUUQTFYQSFTTKTDPNKBBEWBODFEQNIUNM
ϓϩηεϚωʔδϟ w GPSFWFS w 1. w 4USPOH-PPQ1SPDFTT.BOBHFS TUSPOHQN w
4ZTUFN%
1.
ϓϩηεϚωʔδϟQN w /PEFKTͷϓϩηεϚωʔδϟ w Πϯετʔϧɺىಈ؆୯ w ϓϩηε࠶ىಈɺઃఆϑΝΠϧԽ $ npm install
pm2@latest -g $ pm2 start app.js
ϓϩηεϚωʔδϟQN w σϓϩΠ w ࣗಈىಈαϙʔτ w Ϛϧνϓϩηεىಈ w ଞɺϞχλϦϯάɺϩάཧ
ϓϩηεϚωʔδϟQNσϓϩΠ w ઃఆϑΝΠϧʹهड़ͯ͠ίϚϯυ࣮ߦ͢Δ͚ͩ w θϩμϯλΠϜͰߋ৽Մೳ w DBQJTUSBOPͱͷ૬ੑ͕ѱ͍ɻQNͰͷσϓϩΠ͕ແ w γϯϘϦοΫϦϯΫͰϦϦʔεΛΓସ͑ΔΈ͕QNʹ߹Θͳ͍ w
࠶ىಈ࣌ʹө͞Εͳ͍ɺΤϥʔͰམͪΔ
ϓϩηεϚωʔδϟ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: "
[email protected]
:Username/repository.git", path: "/var/www/my-repository", 'post-deploy': "npm install", }, } } FDPTZTUFNDPOpHKT IUUQTQNJPEPDFOSVOUJNFHVJEFFBTZEFQMPZXJUITTI
ϓϩηεϚωʔδϟQNࣗಈىಈ w ࣗಈىಈαʔόىಈ࣌ʹࣗಈతʹϓϩηεΛىಈ͢Δ w ֤04ʹ߹ΘͤͨࣗಈىಈઃఆΛੜ͢ΔίϚϯυ͕༻ҙ w TZTUFNE VQTUBSU MBVODIE PQFOSD
SDE TZTUFNW $ pm2 startup
ϓϩηεϚωʔδϟϚϧνϓϩηε w $16ϦιʔεΛ࠷େݶ͏ͨΊ w γϯάϧϓϩηεͰϕϯνϚʔΫൺֱ͠ͳ͍Ͱʜʂ w ϫʔΧʔϓϩηε͕ͭఀࢭͯ͠ɺଞͷϓϩηεͰಈ࡞ w $16ϔϏʔͳॲཧɺϒϩοΩϯά*0Ͱࢭ·Δ
ϓϩηεϚωʔδϟϚϧνϓϩηε w ϓϩηεͷσʔλΠϕϯτڞ༗͞Εͳ͍ w 3FEJTͰڞ༗͢Δ w 8FC4PDLFUΛϚϧνϓϩηεͰ͏߹ඞਢ
ϓϩηεϚωʔδϟQNϚϧνϓϩηε w ෛՙࢄΛࣗͰΔˠGPSLϞʔυ w ෛՙࢄΛQNʹ͍ͤͨˠDMVTUFSϞʔυ
ϓϩηεϚωʔδϟQNϚϧνϓϩηε DMVTUFS GPSL ιʔεमਖ਼ ෆཁ ඞཁ ϙʔτׂ ϚελʔͷΈ ͭ ϓϩηε͝ͱ
ෳ ىಈํ๏ DMVTUFSϞδϡʔϧ DIJME@QSPDFTTGPSL ϩʔυόϥϯγϯά ༗ ແ εςΟοΩʔ ηογϣϯ ෆՄ -#ଆͰՄ
ϓϩηεϚωʔδϟ·ͱΊ w OPEFͷىಈQNͰࣄΓΔ w Ϛϧνϓϩηεʹ͢Δ߹Ϟʔυͷҧ͍ʹҙ w DMVTUFSϞʔυͱGPSLϞʔυͷ͍͚
w جຊ w ϓϩηεϚωʔδϟ w αʔόΞʔΩςΫνϟ w "84&$4Y/PEFKT
αʔόΞʔΩςΫνϟ γϯάϧϓϩηε Ϛϧνϓϩηε γϯάϧαʔό ։ൃ༻్ খن Ϛϧναʔό γϯϓϧ εέʔϧΞτ DMVTUFSͰ
εέʔϧΞτ
γϯάϧϓϩηεɾγϯάϧαʔό w ࠷γϯϓϧͳߏ w ։ൃڥɺϓϩτλΠϓ͚ αʔό
Ϛϧνϓϩηεɾγϯάϧαʔό w खܰʹεέʔϧΞοϓ͍ͨ͠ɺՄ༻ੑΛ্͍͛ͨ w খنͳϓϩμΫτ͚ αʔό DMVTUFS
Ϛϧνϓϩηεɾγϯάϧαʔό w GPSLϞʔυͳΒϩʔυόϥϯαඞཁ ϩʔυόϥϯα αʔό GPSL
γϯάϧϓϩηεɾϚϧναʔό ϩʔυόϥϯα w αʔόଆͷߏΛγϯϓϧʹෛՙࢄ͕Ͱ͖Δ w %PDLFSڥͰߏங͍͢͠ w ϩʔυόϥϯαͰεςΟοΩʔηογϣϯ͍ͨ͠߹ʢ4PDLFUJPʣ αʔό αʔό
ϚϧνϓϩηεɾϚϧναʔό ϩʔυόϥϯα w ϚϧνίΞαʔόͰෛՙࢄ͍ͨ͠ w GPSLϞʔυͰಈ͔͢ͱ໘ αʔό αʔό
αʔόΞʔΩςΫνϟ·ͱΊ γϯάϧϓϩηε Ϛϧνϓϩηε γϯάϧαʔό ։ൃ༻్ খن Ϛϧναʔό γϯϓϧ εέʔϧΞτ DMVTUFSͰ
εέʔϧΞτ
w جຊ w ϓϩηεϚωʔδϟ w αʔόΞʔΩςΫνϟ w "84&$4Y/PEFKT
"84&$4 w "84ͷ%PDLFSίϯςφϚωδϝϯταʔϏε w &$͔ɺϑϧϚωʔδυͷ'BSHBUFΛબͰ͖Δ w 'BSHBUFศར͚ͩͲɺ&$ΑΓׂߴͰɺTTIͰαοͱೖΕͳ͍
%PDLFSY/PEFKT w %PDLFSͱ/PEFKTͷ૬ੑ͕ྑ͍ w ͲͪΒجຊγϯάϧϓϩηε w /PEFKTίϯςφ͚ͩͰ8FCαʔόίϯςφ͕ͳͯ͘ಈ͘
ෳαʔόߏ๊͕͑Δ՝ w σϓϩΠ w ϩάऩू w εέʔϧΞτ w αʔόߏཧ
ෳαʔόߏ๊͕͑Δ՝Λ"84&$4Ͱղܾ w σϓϩΠ w ϩάऩू w εέʔϧΞτ w αʔόߏཧ ϩʔϦϯάߋ৽
$MPVE8BUDI Φʔτεέʔϧ %PDLFSpMFEPDLFSDPNQPTF
ϩʔϦϯάߋ৽ ίϯςφ W ίϯςφ W ίϯςφ W ίϯςφ W ৽͍͠όʔδϣϯΛىಈ
৽όʔδϣϯͷૄ௨͕֬ೝͰ͖Ε چόʔδϣϯΛࢭΊΔ
"84&$4 &-# ʢϩʔυόϥϯαʣ &$ %PDLFSίϯςφ &$ %PDLFSίϯςφ %PDLFSίϯςφ ˞'BSHBUFͷ߹ɺ&$ෆཁ
"84&$4 w ίϯςφͷࣗಈ෮چ w OPEFKTϓϩηε͕མͪͯɺૄ௨͕Ͱ͖ͳ͘ͳΔͱίϯςφΛىಈ͢Δ w ϩʔϦϯάߋ৽ w ϩάυϥΠόઃఆ w
&-#ʹΑΔϩʔυόϥϯγϯά w ΤϑΣϝϥϧϙʔτʹ͢Δ͜ͱͰϙʔτׂࣗಈ
ϓϩηεϚωʔδϟ ɾΞϓϦέʔγϣϯ͕ҟৗऴྃͨ͠߹ʹࣗಈతʹ࠶࢝ಈ͢Δɻ ɾϥϯλΠϜɾύϑΥʔϚϯεͱϦιʔε༻ྔʹؔ͢ΔΠϯαΠτΛಘΔɻ ɾύϑΥʔϚϯεΛ্ͤ͞ΔͨΊʹઃఆΛಈతʹมߋ͢Δɻ ɾΫϥελϦϯάΛ੍ޚ͢Δɻ IUUQTFYQSFTTKTDPNKBBEWBODFEQNIUNM
"84&$4 w "84&$4ϓϩηεϚωʔδϟʁ w &$4্ͳΒQNΛΘͣOPEFίϚϯυ͚ͩͰेʁ
·ͱΊ w QNͰαʔόӡ༻ͷେ෦ղܾͰ͖Δ w ༻్ʹ߹ͬͨΞʔΩςΫνϟબఆ͕ඞཁ w ෳߏ%PDLFSΛͬͨӡ༻͕Φεεϝ
Γ͍ͨ͜ͱ w XPSLFS@UISFBET w ύϑΥʔϚϯεɾνϡʔχϯά w ͦͷଞͷίϯςφϚωδϝϯταʔϏε
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠