1. EC2 ์ธ์Šคํ„ด์Šค ์ค€๋น„ 

2025.06.12 - [๐Ÿ‡ฐ๐Ÿ‡ท ํ•œ๊ตญ์–ด (Korean)/AWS] - [9] EC2 ์ธ์Šคํ„ด์Šค ์—ฐ๊ฒฐ



2. Node.js & ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค์น˜
  2.1 Node.js ์„ค์น˜ (NodeSource)
  2.2 ํ”„๋กœ์ ํŠธ ์ดˆ๊ธฐํ™” ๋ฐ Express ์„ค์น˜
  2.3 package.json ์„ค์ •
  2.4 index.js ์ž‘์„ฑ
  2.5 ํ…Œ์ŠคํŠธ ์‹คํ–‰

2025.06.17 - [๐Ÿ‡ฐ๐Ÿ‡ท ํ•œ๊ตญ์–ด (Korean)/AWS] - [11] AWS EC2์— Node.js & ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค์น˜ํ•˜๊ธฐ




3. PM2๋กœ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์‹คํ–‰ 

4. Nginx ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ ์„ค์ •
   4.1 ์„ค์น˜
   4.2 ์„ค์ • ํŒŒ์ผ /etc/nginx/conf.d/my-node-app.conf ์ƒ์„ฑ
   4.3 ๊ฒ€์ฆ & ์žฌ์‹œ์ž‘
   4.4 ํ™•์ธ


5. ๋„๋ฉ”์ธ(Route 53) ์—ฐ๊ฒฐ
  5.1 Route 53 → ํ˜ธ์ŠคํŒ… ์˜์—ญ(Hosted zones) → trill-server.com ์„ ํƒ
  5.2 ๋ ˆ์ฝ”๋“œ ์ƒ์„ฑ(Create record)
  5.3 ์ €์žฅ ํ›„ dig +short trill-server.com → IP ํ™•์ธ


6. HTTPS ์ ์šฉ (Let’s Encrypt)
  6.1 ๋ณด์•ˆ ๊ทธ๋ฃน: HTTPS(443) → 0.0.0.0/0 ์ถ”๊ฐ€
  6.2 Certbot ์„ค์น˜
  6.3 ์ธ์ฆ์„œ ๋ฐœ๊ธ‰ & ์„ค์น˜
  6.4 ์ž๋™ ๊ฐฑ์‹ 
  6.5 ํ™•์ธ


 


๋ชฉ์ฐจ์—์„œ 

3.PM2๋กœ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์‹คํ–‰๋ฅผ ํ•˜๋ ค๊ณ  ํ•œ๋‹ค.

 

 

3.  PM2๋กœ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ๊ด€๋ฆฌ

< PM2๋กœ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์‹คํ–‰์„ ํ•˜๋Š” ๋ชฉ์  >
PM2(Process Manager 2)๋ฅผ ์“ฐ๋Š” ์ด์œ ๋Š”, 
๋‹จ์ˆœํžˆ node index.js & ์ฒ˜๋Ÿผ ๋ฐฑ๊ทธ๋ผ์šด๋“œ๋กœ ๋„์šฐ๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋Š” ๋ถ€์กฑํ•œ ์—ฌ๋Ÿฌ ์šด์˜์ƒ์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด ์ฃผ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.



1. ํ”„๋กœ์„ธ์Šค ์ฃฝ์Œ ๋ฐฉ์ง€ & ์ž๋™ ์žฌ์‹œ์ž‘
์„œ๋ฒ„์—์„œ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋‚˜ ์˜ˆ๊ธฐ์น˜ ์•Š์€ ์—๋Ÿฌ๋กœ ์•ฑ์ด ์ข…๋ฃŒ๋  ์ˆ˜ ์žˆ๋Š”๋ฐ,
PM2๊ฐ€ “์ฃฝ์œผ๋ฉด ๋ฐ”๋กœ ๋‹ค์‹œ ๋„์›Œ” ์ฃผ๋‹ˆ๊นŒ ๋‹ค์šดํƒ€์ž„์„ ์ตœ์†Œํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.



2. ์„œ๋ฒ„ ์žฌ๋ถ€ํŒ… ์‹œ ์ž๋™ ๊ธฐ๋™
๋‹จ์ˆœ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์‹คํ–‰(&)์€ ์‹œ์Šคํ…œ ์žฌ๋ถ€ํŒ… ์‹œ ์‚ฌ๋ผ์ง€์ง€๋งŒ,
pm2 startup + pm2 save ๋ช…๋ น์„ ํ•œ ๋ฒˆ๋งŒ ํ•ด ๋‘๋ฉด OS๊ฐ€ ์ผœ์งˆ ๋•Œ PM2 ๋ฐ๋ชฌ์ด ์ž๋™์œผ๋กœ ๋œจ๊ณ , 
์ €์žฅ๋œ ํ”„๋กœ์„ธ์Šค๋“ค์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•ด ์ค€๋‹ค.



3. ๋กœ๊ทธ ๊ด€๋ฆฌ & ๋ชจ๋‹ˆํ„ฐ๋ง
PM2๋Š” stdout/stderr ๋กœ๊ทธ๋ฅผ ๊ฐ๊ฐ ํŒŒ์ผ๋กœ ์ˆ˜์ง‘ํ•ด ์ฃผ๊ณ ,
pm2 logs ๋กœ ์‹ค์‹œ๊ฐ„ ์ŠคํŠธ๋ฆผ ์กฐํšŒ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋ฉฐ,
pm2 monit ๋กœ CPU·๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ๊ฐ™์€ ๋ฉ”ํŠธ๋ฆญ๋„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.



4. ํด๋Ÿฌ์Šคํ„ฐ ๋ชจ๋“œ & ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ
๋ฉ€ํ‹ฐ ์ฝ”์–ด ๋จธ์‹ ์—์„œ -i max ์˜ต์…˜์œผ๋กœ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋„์›Œ
PM2 ๋‚ด์žฅ ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ๋กœ ์š”์ฒญ์„ ๋ถ„์‚ฐ ์ฒ˜๋ฆฌํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.



5. ์šด์˜ ์ž๋™ํ™” ํŽธ์˜
- pm2 reload all ๋กœ ๋ฌด์ค‘๋‹จ ์žฌ์‹œ์ž‘
- pm2 scale my-app 4 ๋กœ ์ธ์Šคํ„ด์Šค ์ˆ˜ ์กฐ์ •(ํด๋Ÿฌ์Šคํ„ฐ ๋ชจ๋“œ)
- ๋ฐฐํฌ ์Šคํฌ๋ฆฝํŠธ๋‚˜ CI/CD์—์„œ ์“ฐ๊ธฐ ํŽธ๋ฆฌ




์š”์•ฝ:
PM2๋Š” “๋‹จ์ˆœ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์‹คํ–‰”์ด ๊ฐ€์ง„ ํ•œ๊ณ„๋ฅผ ๋„˜์–ด,
- ํ”„๋กœ์„ธ์Šค ๊ฐ€์šฉ์„ฑ ๋ณด์žฅ
-  ์žฌ๋ถ€ํŒ…·์˜ค๋ฅ˜ ์‹œ ์ž๋™ ๋ณต๊ตฌ
- ๋กœ๊ทธ·๋ชจ๋‹ˆํ„ฐ๋ง ์ง€์›
-  ํด๋Ÿฌ์Šคํ„ฐ๋ง·๋ฌด์ค‘๋‹จ ์žฌ์‹œ์ž‘
๊ฐ™์€ 
“์ง„์งœ ํ”„๋กœ๋•์…˜ ์šด์˜”
์— ๊ผญ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ๋“ค์„ ์ œ๊ณตํ•œ๋‹ค.

 

 

์•„๋ž˜์˜ ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•œ๋‹ค.

sudo npm install -g pm2
pm2 start index.js --name my-node-app
pm2 startup systemd
# ๋ณต๋ถ™ ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ → pm2 save

 

์˜ค๋ฅ˜ ๋ฐœ์ƒ!

์˜ค๋ฅ˜๋ถ€ํ„ฐ ํ•ด๊ฒฐํ•˜๊ณ  ๊ฐ€์ž!

 


2.1 ๋ฌธ์ œ ๋ฐœ์ƒ- ํ•ด๊ฒฐ๊ณผ์ •.

 

 

 

[ec2-user@ip-172-31-44-167 ~]$ sudo npm install -g pm2
pm2 start index.js --name my-node-app
pm2 startup systemd

added 135 packages in 8s

13 packages are looking for funding
  run `npm fund` for details
npm notice
npm notice New major version of npm available! 10.9.2 -> 11.4.2
npm notice Changelog: https://github.com/npm/cli/releases/tag/v11.4.2
npm notice To update run: npm install -g npm@11.4.2
npm notice

                        -------------

__/\\\\\\\\\\\\\____/\\\\____________/\\\\____/\\\\\\\\\_____
 _\/\\\/////////\\\_\/\\\\\\________/\\\\\\__/\\\///////\\\___
  _\/\\\_______\/\\\_\/\\\//\\\____/\\\//\\\_\///______\//\\\__
   _\/\\\\\\\\\\\\\/__\/\\\\///\\\/\\\/_\/\\\___________/\\\/___
    _\/\\\/////////____\/\\\__\///\\\/___\/\\\________/\\\//_____
     _\/\\\_____________\/\\\____\///_____\/\\\_____/\\\//________
      _\/\\\_____________\/\\\_____________\/\\\___/\\\/___________
       _\/\\\_____________\/\\\_____________\/\\\__/\\\\\\\\\\\\\\\_
        _\///______________\///______________\///__\///////////////__


                          Runtime Edition

        PM2 is a Production Process Manager for Node.js applications
                     with a built-in Load Balancer.

                Start and Daemonize any application:
                $ pm2 start app.js

                Load Balance 4 instances of api.js:
                $ pm2 start api.js -i 4

                Monitor in production:
                $ pm2 monitor

                Make pm2 auto-boot at server restart:
                $ pm2 startup

                To go further checkout:
                http://pm2.io/


                        -------------

[PM2] Spawning PM2 daemon with pm2_home=/home/ec2-user/.pm2
[PM2] PM2 Successfully daemonized
[PM2][ERROR] Script not found: /home/ec2-user/index.js
[PM2] Init System found: systemd
[PM2] To setup the Startup Script, copy/paste the following command:
sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u ec2-user --hp /home/ec2-user
[ec2-user@ip-172-31-44-167 ~]$

 

์—๋Ÿฌ ๋ฐœ์ƒ ์ด์œ  :

pm2 start index.js๋ฅผ ํ•˜๋ ค๋ฉด ๋ฐ˜๋“œ์‹œ “index.js” ํŒŒ์ผ์ด ์žˆ๋Š” ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ ์‹คํ–‰ํ•ด์•ผ ํ•œ๋‹ค. 

์ง€๊ธˆ์€ ํ™ˆ ๋””๋ ‰ํ„ฐ๋ฆฌ(~)์— ์žˆ๊ธฐ ๋•Œ๋ฌธ์— /home/ec2-user/index.js๋ฅผ ์ฐพ์œผ๋ ค๋‹ค๊ฐ€ ์—†๋‹ค๊ณ  ์—๋Ÿฌ๊ฐ€ ๋‚œ๊ฒƒ์ด๋‹ค.

 

ํ•ด๊ฒฐ ๊ณผ์ • :

์ œ๋Œ€๋กœ PM2๋กœ ์•ฑ ๋„์šฐ๊ธฐ

  1. ํ”„๋กœ์ ํŠธ ํด๋”๋กœ ์ด๋™
cd ~/my-node-app

 

 2. PM2๋กœ ์„œ๋ฒ„ ์‹œ์ž‘

pm2 start index.js --name my-node-app

 

 

3. ์‹คํ–‰์ค‘์ธ ํ”„๋กœ์„ธ์Šค ํ™•์ธ

pm2 ls

 

PM2๋กœ ์•ฑ์ด ์ž˜ ์˜ฌ๋ผ๊ฐ„ ๊ฑธ ํ™•์ธํ•˜์˜€๋‹ค.

์˜ค๋ฅ˜ ํ•ด๊ฒฐ!


 

 ์„œ๋ฒ„ ์žฌ๋ถ€ํŒ… ์‹œ์—๋„ ์ž๋™ ๊ธฐ๋™ ์„ค์ •

  1. PM2 startup ์Šคํฌ๋ฆฝํŠธ ์ƒ์„ฑ
pm2 startup systemd

 

 

 2. ์ถœ๋ ฅ๋œ ๋ช…๋ น์–ด ๋ณต์‚ฌ→์‹คํ–‰

sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u ec2-user --hp /home/ec2-user

ํ™”๋ฉด์— ๋ณด์ด๋Š” ๊ฒƒ ์ฒ˜๋Ÿผ PM2๋ฅผ systemd์— ๋“ฑ๋กํ–ˆ์œผ๋‹ˆ, ๋‚จ์€ ๊ฑด “ํ”„๋กœ์„ธ์Šค ๋ชฉ๋ก์„ ์ €์žฅ”(pm2 save) ํ•˜๊ณ , ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ(Nginx) ์„ค์ •์œผ๋กœ ์™ธ๋ถ€ ํฌํŠธ(80/443)์™€ ์—ฐ๊ฒฐํ•˜๋Š” ์ž‘์—…์ด๋‹ค

 

   3. ํ˜„์žฌ ํ”„๋กœ์„ธ์Šค ๋ชฉ๋ก ์ €์žฅ

pm2 save

 

 

์ด์ œ “์™ธ๋ถ€(80/443 ํฌํŠธ) →  Node.js ์•ฑ(3000 ํฌํŠธ)” ๊ฒฝ๋กœ๋ฅผ ๋งŒ๋“ค์–ด ์ฃผ๊ธฐ๋งŒ ํ•˜๋ฉด ์ง„์งœ ์„œ๋น„์Šค์ฒ˜๋Ÿผ ๋™์ž‘ํ•œ๋‹ค.

 

๋‹ค์Œ ๋‹จ๊ณ„๋Š” Nginx๋ฅผ ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ๋กœ ์„ธํŒ…ํ•˜๋Š” ์ž‘์—…์ด๋‹ค.

+ Recent posts