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
960
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
AIの中の人になってみる
htkym
0
160
XHTMLが残したもの
yosuke_furukawa
PRO
1
410
이 함수, 실패하면 어떻게 되나요? null부터 Rich Errors까지, Kotlin 에러 처리 15년
haeti2
0
130
Go を使い始めて 2 ヶ月の学び / My first two months with Go
contour_gara
0
420
RSSとCodexを使ってX投稿自動化してみた
ochtum
0
100
LLMは4年分のCompose移行を再現できるのか?実プロダクト279件のXMLで探る自動化の境界線
makun
0
410
Laravelのアプリケーションをどこにデプロイするか #ツナギメオフライン.9
akase244
0
120
週末にAI-DLCを本気で回したら$1,600溶けた
hbashimizu
0
130
Oxlintはいいぞ(続)
yug1224
1
550
DynamoDBの基礎を振り返りながらベクトル検索機能を理解する
musan
3
270
AI時代に学ぶ 好きなルール 嫌いなルール Linter編
shorty5121
0
860
PHPプロジェクトの結合バランスを可視化する #php_night
kajitack
0
220
Featured
See All Featured
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
680
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
320
Faster Mobile Websites
deanohume
310
32k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
490
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
190
The Language of Interfaces
destraynor
162
27k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
260
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
400
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 ͦͷଞͷίϯςφϚωδϝϯταʔϏε
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠