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
Lessons from Spec-Driven Development
simas
PRO
0
150
LLM本来の能力を解き放つサンドボックス技術とAI民主化への適用
yukukotani
3
3.6k
DynamoDBには集計系のクエリがないけどなんとかしたい
musan
1
130
New "Type" system on PicoRuby
pocke
1
790
Inside Stream API
skrb
1
680
「エンジニアインターン、どうやって取った?」準備のリアルを語るLT会 Progate BAR
akiomatic
0
130
スマートグラスで並列バイブコーディング
hyshu
0
120
Signal Forms: Beyond the Basics @ngBaguette 2026 in Paris
manfredsteyer
PRO
0
230
JJUG CCC 2026 Spring: JSpecify で実現する Kotlin フレンドリーな Java API 設計
ternbusty
1
160
Observability in Practice:Grafana 與 Edge Device SRE 的那些事
blueswen
0
160
These Five Tricks Can Make Your Apps Greener, Cheaper, & Nicer
hollycummins
0
280
Claspは野良GASの夢をみるか
takter00
0
180
Featured
See All Featured
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.9k
Believing is Seeing
oripsolob
1
140
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
830
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
230
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
200
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.2k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.9k
Skip the Path - Find Your Career Trail
mkilby
1
140
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.5k
The Invisible Side of Design
smashingmag
302
52k
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 ͦͷଞͷίϯςφϚωδϝϯταʔϏε
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠