Octofarm: npm์˜ ๊ถŒ์žฅ ์ž๋™ ์‹œ์ž‘ (Linux์—์„œ)?

์— ๋งŒ๋“  2020๋…„ 04์›” 28์ผ  ยท  5์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: OctoFarm/OctoFarm

Linux์—์„œ ๋ถ€ํŒ…์ด ์™„๋ฃŒ๋œ ํ›„ npm์„ ์ž๋™ ์‹œ์ž‘ํ•˜๋Š” ๊ถŒ์žฅ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” init.d๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๊ฒƒ์„ ์‹œ๋„ํ–ˆ์ง€๋งŒ ์„ฑ๊ณตํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.

question

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

Ubuntu๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ฑ๊ณต์ ์œผ๋กœ systemd ์„œ๋น„์Šค ํŒŒ์ผ์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. James๊ฐ€ ๋งํ–ˆ๋“ฏ์ด ์ตœ์‹  ๋ฒ„์ „์€ pm2์™€ ํ•จ๊ป˜ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. pm2๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด pm2 startup ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ init ์‹œ์Šคํ…œ์„ ๊ฐ์ง€ํ•˜๊ณ  ์‹œ์ž‘ ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์‹คํ–‰ํ•  ๋ช…๋ น์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค. ๋ฐฉ๊ธˆ ํ•ด๋ƒˆ๊ณ  ๊ฝค ์ž˜ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ „์ฒด ๊ณต๊ฐœ : ์˜ค๋Š˜ ์ „์—๋Š” pm2์— ๋Œ€ํ•ด ๋“ค์–ด ๋ณธ ์ ์ด ์—†์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์•ฝ๊ฐ„์˜ ์กฐ์‚ฌ๋ฅผํ•ด์•ผํ–ˆ๊ณ  ์ด๊ฒƒ์ด ์ œ๊ฐ€ ์ฐพ์€ ๊ฒƒ๊ณผ ์ œ๊ฐ€ ํ•œ ์ผ์ด๋ฉฐ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.

pm2 startup ์‹คํ–‰ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

ubuntu<strong i="10">@octofarm</strong>:~$ OctoFarm/node_modules/pm2/bin/pm2 startup
[PM2] Init System found: systemd
ubuntu
[PM2] To setup the Startup Script, copy/paste the following command:
sudo env PATH=$PATH:/usr/bin /home/ubuntu/OctoFarm/node_modules/pm2/bin/pm2 startup systemd -u ubuntu --hp /home/ubuntu

๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋งํ–ˆ์Šต๋‹ˆ๋‹ค.

ubuntu<strong i="14">@octofarm</strong>:~$ sudo env PATH=$PATH:/usr/bin /home/ubuntu/OctoFarm/node_modules/pm2/bin/pm2 startup systemd -u ubuntu --hp /home/ubuntu
[PM2] Init System found: systemd
Platform systemd
Template
[Unit]
Description=PM2 process manager
Documentation=https://pm2.keymetrics.io/
After=network.target

[Service]
Type=forking
User=ubuntu
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
Environment=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/bin:/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
Environment=PM2_HOME=/home/ubuntu/.pm2
PIDFile=/home/ubuntu/.pm2/pm2.pid
Restart=on-failure

ExecStart=/home/ubuntu/OctoFarm/node_modules/pm2/bin/pm2 resurrect
ExecReload=/home/ubuntu/OctoFarm/node_modules/pm2/bin/pm2 reload all
ExecStop=/home/ubuntu/OctoFarm/node_modules/pm2/bin/pm2 kill

[Install]
WantedBy=multi-user.target

Target path
/etc/systemd/system/pm2-ubuntu.service
Command list
[ 'systemctl enable pm2-ubuntu' ]
[PM2] Writing init configuration in /etc/systemd/system/pm2-ubuntu.service
[PM2] Making script booting at startup...
[PM2] [-] Executing: systemctl enable pm2-ubuntu...
Created symlink /etc/systemd/system/multi-user.target.wants/pm2-ubuntu.service โ†’ /etc/systemd/system/pm2-ubuntu.service.
[PM2] [v] Command successfully executed.
+---------------------------------------+
[PM2] Freeze a process list on reboot via:
$ pm2 save

[PM2] Remove init script via:
$ pm2 unstartup systemd

๋ชจ๋“  5 ๋Œ“๊ธ€

pm2๋ผ๋Š” npm ํŒจํ‚ค์ง€๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

npm install pm2 -g ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ๋‹ค์Œ ๋‹ค์Œ์„ ์‹คํ–‰ํ•˜์‹ญ์‹œ์˜ค.

pm2 startup

pm2 ์ถœ๋ ฅ์„ ๋ณต์‚ฌํ•˜์—ฌ ๋ถ™์—ฌ ๋„ฃ์œผ์‹ญ์‹œ์˜ค.

pm2 start app.js --name OctoFarm

pm2 save

https://pm2.keymetrics.io/docs/usage/startup/

์—ฌ๊ธฐ์— ๋” ๋งŽ์€ ์ •๋ณด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ง‰ํžˆ๋ฉด ์•Œ๋ ค์ฃผ์„ธ์š”.

1.1.5๋Š” ์ข…์†์„ฑ์œผ๋กœ pm2์™€ ํ•จ๊ป˜ ์ œ๊ณต๋˜๋ฉฐ์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ๋ถ€ํŒ…์‹œ ์‹œ์ž‘ ๋ช…๋ น์„ ํ™œ์„ฑํ™” ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋ชจ๋‘ ์ž๋™์œผ๋กœ ์ˆ˜ํ–‰๋˜์ง€๋งŒ ์•„์ง ์ž์„ธํžˆ ์‚ดํŽด ๋ณด์ง€๋Š” ์•Š์•˜์Šต๋‹ˆ๋‹ค.

Ubuntu๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ฑ๊ณต์ ์œผ๋กœ systemd ์„œ๋น„์Šค ํŒŒ์ผ์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. James๊ฐ€ ๋งํ–ˆ๋“ฏ์ด ์ตœ์‹  ๋ฒ„์ „์€ pm2์™€ ํ•จ๊ป˜ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. pm2๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด pm2 startup ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ init ์‹œ์Šคํ…œ์„ ๊ฐ์ง€ํ•˜๊ณ  ์‹œ์ž‘ ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์‹คํ–‰ํ•  ๋ช…๋ น์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค. ๋ฐฉ๊ธˆ ํ•ด๋ƒˆ๊ณ  ๊ฝค ์ž˜ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ „์ฒด ๊ณต๊ฐœ : ์˜ค๋Š˜ ์ „์—๋Š” pm2์— ๋Œ€ํ•ด ๋“ค์–ด ๋ณธ ์ ์ด ์—†์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์•ฝ๊ฐ„์˜ ์กฐ์‚ฌ๋ฅผํ•ด์•ผํ–ˆ๊ณ  ์ด๊ฒƒ์ด ์ œ๊ฐ€ ์ฐพ์€ ๊ฒƒ๊ณผ ์ œ๊ฐ€ ํ•œ ์ผ์ด๋ฉฐ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.

pm2 startup ์‹คํ–‰ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

ubuntu<strong i="10">@octofarm</strong>:~$ OctoFarm/node_modules/pm2/bin/pm2 startup
[PM2] Init System found: systemd
ubuntu
[PM2] To setup the Startup Script, copy/paste the following command:
sudo env PATH=$PATH:/usr/bin /home/ubuntu/OctoFarm/node_modules/pm2/bin/pm2 startup systemd -u ubuntu --hp /home/ubuntu

๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋งํ–ˆ์Šต๋‹ˆ๋‹ค.

ubuntu<strong i="14">@octofarm</strong>:~$ sudo env PATH=$PATH:/usr/bin /home/ubuntu/OctoFarm/node_modules/pm2/bin/pm2 startup systemd -u ubuntu --hp /home/ubuntu
[PM2] Init System found: systemd
Platform systemd
Template
[Unit]
Description=PM2 process manager
Documentation=https://pm2.keymetrics.io/
After=network.target

[Service]
Type=forking
User=ubuntu
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
Environment=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/bin:/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
Environment=PM2_HOME=/home/ubuntu/.pm2
PIDFile=/home/ubuntu/.pm2/pm2.pid
Restart=on-failure

ExecStart=/home/ubuntu/OctoFarm/node_modules/pm2/bin/pm2 resurrect
ExecReload=/home/ubuntu/OctoFarm/node_modules/pm2/bin/pm2 reload all
ExecStop=/home/ubuntu/OctoFarm/node_modules/pm2/bin/pm2 kill

[Install]
WantedBy=multi-user.target

Target path
/etc/systemd/system/pm2-ubuntu.service
Command list
[ 'systemctl enable pm2-ubuntu' ]
[PM2] Writing init configuration in /etc/systemd/system/pm2-ubuntu.service
[PM2] Making script booting at startup...
[PM2] [-] Executing: systemctl enable pm2-ubuntu...
Created symlink /etc/systemd/system/multi-user.target.wants/pm2-ubuntu.service โ†’ /etc/systemd/system/pm2-ubuntu.service.
[PM2] [v] Command successfully executed.
+---------------------------------------+
[PM2] Freeze a process list on reboot via:
$ pm2 save

[PM2] Remove init script via:
$ pm2 unstartup systemd

๋‘ ๋ถ„ ๋ชจ๋‘์—๊ฒŒ ๋น ๋ฅธ ์‘๋‹ต์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์˜ค๋Š˜ ๋‚˜์ค‘์— ์‹œ๋„ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋ฆฌ๋ˆ…์Šค ์‹œ์Šคํ…œ์„ ์ข‹์•„ํ•˜๊ณ  ์‹ซ์–ดํ•œ๋‹ค. ๋ชจ๋“  ๊ฒƒ์„ ํ•  ์ˆ˜์žˆ๋Š” ์•ฝ 10 ๊ฐ€์ง€ ๋ฐฉ๋ฒ•. ์ €๋Š” 1980 ๋…„๋Œ€ ํ›„๋ฐ˜์— BSD Unix๋กœ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ ์—†์Šต๋‹ˆ๋‹ค. README / Wiki์— ๋ช‡ ๊ฐ€์ง€ ๋ฉ”๋ชจ๋ฅผ ์ถ”๊ฐ€ํ•˜๋„๋ก ์ƒ๊ธฐ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์ง€๊ธˆ์€ ์—ด์–ด ๋‘๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด ๊ต์ฐจ ํ”Œ๋žซํผ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€ ๋œ ์„ค์น˜ ๋ฌธ์„œ

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰