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 ํ ์คํธ ์คํ
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๋ก ์ฑ ๋์ฐ๊ธฐ
- ํ๋ก์ ํธ ํด๋๋ก ์ด๋
cd ~/my-node-app
2. PM2๋ก ์๋ฒ ์์
pm2 start index.js --name my-node-app

3. ์คํ์ค์ธ ํ๋ก์ธ์ค ํ์ธ
pm2 ls

PM2๋ก ์ฑ์ด ์ ์ฌ๋ผ๊ฐ ๊ฑธ ํ์ธํ์๋ค.
์ค๋ฅ ํด๊ฒฐ!
์๋ฒ ์ฌ๋ถํ ์์๋ ์๋ ๊ธฐ๋ ์ค์
- 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

3. ํ์ฌ ํ๋ก์ธ์ค ๋ชฉ๋ก ์ ์ฅ
pm2 save

์ด์ “์ธ๋ถ(80/443 ํฌํธ) → Node.js ์ฑ(3000 ํฌํธ)” ๊ฒฝ๋ก๋ฅผ ๋ง๋ค์ด ์ฃผ๊ธฐ๋ง ํ๋ฉด ์ง์ง ์๋น์ค์ฒ๋ผ ๋์ํ๋ค.
๋ค์ ๋จ๊ณ๋ Nginx๋ฅผ ๋ฆฌ๋ฒ์ค ํ๋ก์๋ก ์ธํ ํ๋ ์์ ์ด๋ค.
'๐ฐ๐ท ํ๊ตญ์ด (Korean) > AWS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [14] ๋๋ฉ์ธ(Route 53) ์ฐ๊ฒฐ (1) | 2025.06.17 |
|---|---|
| [13] Nginx ๋ฆฌ๋ฒ์ค ํ๋ก์ ์ค์ - ์ฌ์ฉ์ ์์ฒญ์ ๋ฐ์ ๋ฐฑ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ก ์์ ยทํจ์จ์ ์ผ๋ก ์ ๋ฌ (1) | 2025.06.17 |
| [11] AWS EC2์ Node.js & ์ ํ๋ฆฌ์ผ์ด์ ์ค์นํ๊ธฐ (0) | 2025.06.17 |
| [10] ํ๋ ฅ์ IP ์ฐ๊ฒฐํ๊ธฐ (0) | 2025.06.12 |
| [9] EC2 ์ธ์คํด์ค ์ฐ๊ฒฐ (3) | 2025.06.12 |