• ๋ชฉํ‘œ : AWS EC2 ์ธ์Šคํ„ด์Šค์— Express.js ๊ธฐ๋ฐ˜ Node.js ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•˜๊ณ , ์™ธ๋ถ€์—์„œ 80/3000 ํฌํŠธ๋กœ ์ ‘์†
  • ์ฃผ์š” ๊ธฐ์ˆ : EC2, AMI, ๋ณด์•ˆ ๊ทธ๋ฃน, SSH ํ‚ค ํŽ˜์–ด, Node.js(22.x), npm, Express, PM2, Nginx

ํ™˜๊ฒฝ:
 Amazon Linux 2023 (ap-northeast-2)

์•ฑ:
 Express.js ๊ธฐ๋ฐ˜ ๊ฐ„๋‹จํ•œ “Hello from EC2 Express!” ์„œ๋ฒ„

์šด์˜ ๋„๊ตฌ:
 PM2(ํ”„๋กœ์„ธ์Šค ๋งค๋‹ˆ์ €), Nginx(๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ), Let’s Encrypt SSL

 

 

 

 


 

AWS EC2์— Node.js(Express) ์•ฑ ๋ฐฐํฌํ•˜๊ธฐ: A to Z

์ด ๊ฒŒ์‹œ๋ฌผ์˜ ๋ชฉ์ฐจ๋ฅผ ๋จผ์ € ์ •๋ฆฌํ•ด๋‘”๋‹ค.


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 ํ™•์ธ


 

[9] EC2 ์ธ์Šคํ„ด์Šค ์—ฐ๊ฒฐ

์ด ํ™”๋ฉด์€ “์ด ์ธ์Šคํ„ด์Šค์— ์–ด๋–ป๊ฒŒ ์—ฐ๊ฒฐ(connect)ํ•  ๊ฒƒ์ธ์ง€”๋ฅผ ์„ ํƒํ•˜๋Š” ์—ฐ๊ฒฐ ํƒญ์ด๋‹ค. 1. EC2 ์ธ์Šคํ„ด์Šค ์—ฐ๊ฒฐ (EC2 Instance Connect)๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ฐ”๋กœ SSH ์—ฐ๊ฒฐํ•ด ์ฃผ๋Š” AWS ๊ณต์‹ ๊ธฐ๋Šฅ์ง€์› OS: Amazon Linux 2, Ubu

yeonbikim.tistory.com

 


์ด ๊ฒŒ์‹œ๋ฌผ์€ 
๋ชฉ์ฐจ์—์„œ ๋ณด์ด๋Š” 

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

๋ฅผ ์ฐจ๊ทผ์ฐจ๊ทผ ํ•˜๋ฉด์„œ ๊ฒช์€ ์‹œํ–‰์ฐฉ์˜ค๋“ค๊นŒ์ง€ ๋ชจ๋‘ ๊ธฐ๋กํ•œ ๊ฒƒ์ด๋‹ค.


< ๋ฐฐํฌ ๋‹จ๊ณ„์—์„œ Node.js ์„ค์น˜์™€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(Express ์ฝ”๋“œ) ๋ฐฐ์น˜๊ฐ€ ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•œ ์ด์œ  >


1. ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ(provisioning) ํ™•๋ณด
Node.js๋Š” JavaScript ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•ด ์ฃผ๋Š” ์„œ๋ฒ„ ์ธก ๋Ÿฐํƒ€์ž„์ด๋‹ค.
EC2๋Š” ๋‹จ์ง€ “๋นˆ ์ปดํ“จํ„ฐ”์ด๊ธฐ ๋•Œ๋ฌธ์—, ๋‚ด๊ฐ€ ์“ด ์„œ๋ฒ„ ์ฝ”๋“œ(Express, TypeScript ๋“ฑ)๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋ฉด
๊ทธ์— ๋งž๋Š” ๋Ÿฐํƒ€์ž„(Node.js)๊ณผ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž(npm)๊ฐ€ ๋ฐ˜๋“œ์‹œ ์„ค์น˜๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.


2. ์˜์กด์„ฑ(dependencies) ์„ค์น˜
 package.json์— ๋ช…์‹œ๋œ Express, CORS, dotenv ๊ฐ™์€ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์„
npm install ๋ช…๋ น์œผ๋กœ ์‹ค์ œ ์„œ๋ฒ„์— ๋‚ด๋ ค๋ฐ›๊ณ  ์„ค์น˜ํ•ด์•ผ๋งŒ,
์„œ๋ฒ„ ์ฝ”๋“œ์—์„œ import express from 'express' ๊ฐ™์€ ๊ตฌ๋ฌธ์ด ์—๋Ÿฌ ์—†์ด ๋™์ž‘ํ•œ๋‹ค.


3. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ ๋ฐฐ์น˜ & ์‹คํ–‰
  3.1 ์ฝ”๋“œ ๋ณต์‚ฌ - ๋กœ์ปฌ ์ฝ”๋“œ(๋˜๋Š” ๋นŒ๋“œ ์‚ฐ์ถœ๋ฌผ)๋ฅผ EC2๋กœ ์ „์†ก 
  3.2 ํ™˜๊ฒฝ ๊ตฌ์„ฑ - .env ํŒŒ์ผ, ๋กœ๊ทธ ๋””๋ ‰ํ„ฐ๋ฆฌ, ์‹คํ–‰ ์Šคํฌ๋ฆฝํŠธ ๋“ฑ ์•ฑ ์‹คํ–‰์— ํ•„์š”ํ•œ ์„ค์ • ์ถ”๊ฐ€
  3.3 ์„œ๋ฒ„ ์‹คํ–‰ - node index.js ๋˜๋Š” PM2/systemd๋กœ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์‹คํ–‰


์ด ๊ณผ์ •์„ “์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ ˆ์ด์–ด(Application Layer)” ๋ฅผ EC2 ์ธ์Šคํ„ด์Šค ์œ„์— ์˜ฌ๋ ค ์ฃผ๋Š” ๋‹จ๊ณ„๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.




์ •๋ฆฌ
1. Node.js ์„ค์น˜ → JavaScript ์„œ๋ฒ„ ์ฝ”๋“œ ์‹คํ–‰ ๊ธฐ๋ฐ˜ ๋งˆ๋ จ
2. npm install → ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(Express ๋“ฑ) ์„ค์น˜
3. ์ฝ”๋“œ ๋ฐฐ์น˜ & ์‹คํ–‰ → ์‹ค์ œ HTTP ์„œ๋ฒ„ / API ์„œ๋ฒ„ ๊ฐ€๋™
   ์ด ์„ธ ๊ฐ€์ง€๊ฐ€ ์—†์œผ๋ฉด, EC2์— ์•„๋ฌด๋ฆฌ ์ธ์Šคํ„ด์Šค๋ฅผ ๋„์›Œ๋„ ๋‚˜์˜ ์„œ๋ฒ„ ์ฝ”๋“œ๋Š” “ํ•ด์„ํ•  ํ™˜๊ฒฝ” ์ž์ฒด๊ฐ€ ์—†์–ด์„œ ๋‹จ ํ•œ ์ค„๋„ ์‹คํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค. ๋”ฐ๋ผ์„œ ๋ฐฐํฌ ๋‹จ๊ณ„์˜ ํ•ต์‹ฌ ํ•„์ˆ˜ ์ž‘์—…์œผ๋กœ ๋ฐ˜๋“œ์‹œ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•œ๋‹ค.



๊ทธ๋Ÿผ ๋‚˜๋Š” ์™œ Spring Boot ์•ฑ์„ ๋ฐฐํฌํ•  ๋ชฉ์ ์ธ๋ฐ Node.js/Express ์•ฑ ๋ฐฐํฌ ๊ณผ์ •์„ ์„ ํ–‰ํ• ๊นŒ?

AWS ์ธํ”„๋ผ ๊ตฌ์„ฑ, ๋ณด์•ˆ ๊ทธ๋ฃน, Nginx ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ, ๋„๋ฉ”์ธ·SSL ์—ฐ๊ฒฐ ๊ฐ™์ด “์–ด๋–ป๊ฒŒ ํด๋ผ์šฐ๋“œ ์œ„์—์„œ ์›น ์„œ๋น„์Šค๋ฅผ ๋„์šฐ๊ณ  ์šด์˜ํ•˜๋Š”์ง€”์˜ ๊ธฐ๋ณธ๊ธฐ๋ฅผ ๋‹ค์ง€๋Š”๊ฒŒ ๋ชฉํ‘œ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. 

 

 

์ž, ๊ทธ๋Ÿผ ์‹œ์ž‘ํ•ด๋ณด์ž


1. Node.js ์„ค์น˜ํ•˜๋Š” ๋ฒ•.

 

Amazon Linux 2023์—์„œ Node.js๋ฅผ ์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

์•„๋ž˜ ์˜ˆ์‹œ๋ฅผ ์ฐธ๊ณ ํ•ด์„œ ํŽธํ•œ ์ชฝ์„ ๊ณจ๋ผ ์ง„ํ–‰ํ•˜๋ฉด ๋œ๋‹ค.

ํ•˜์ง€๋งŒ ๋‚˜๋Š” ์ฒซ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์—์„œ ์‹คํŒจ๋ฅผ ๊ฒช์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‘๋ฒˆ์งธ๋ฅผ ๋”ฐ๋ผํ•˜๋Š”๊ฒƒ์„ ๊ถŒ์žฅํ•œ๋‹ค.


๋ฐฉ๋ฒ• 1. DNF ๋ชจ๋“ˆ์„ ์ด์šฉํ•œ ์„ค์น˜ (Amazon Linux 2023 ๊ธฐ๋ณธ ๋ฐฉ์‹) - ์ด๊ฑด ์‹คํŒจ ๋ฐฉ๋ฒ•์ด๋‹ˆ ๋ฐ”๋กœ ๋ฐฉ๋ฒ•2๋ฅผ ๋”ฐ๋ผํ•˜์„ธ์š”!

 

  1. ์‹œ์Šคํ…œ ํŒจํ‚ค์ง€ ์ตœ์‹ ํ™”
sudo dnf update -y

 

 

 

 

 

 

2. ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ Node.js ๋ชจ๋“ˆ ์ŠคํŠธ๋ฆผ ํ™•์ธ

sudo dnf module list nodejs

๋กœ ์น˜๋‹ˆ

 

[ec2-user@ip-172-31-44-167 ~]$ sudo dnf module list nodejs
Last metadata expiration check: 0:41:47 ago on Thu Jun 12 09:03:32 2025.
Error: No matching Modules to list๋ผ๊ณ  ๋‚˜์™”๋‹ค.

Amazon Linux 2023์—์„œ๋Š” RHEL ๊ณ„์—ด์ฒ˜๋Ÿผ dnf module์„ ํ†ตํ•œ Module Stream ๋ฐฉ์‹์ด ์•„๋‹ˆ๋ผ, 
๊ธฐ๋ณธ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— Node.js ํŒจํ‚ค์ง€๊ฐ€ ๋ฐ”๋กœ ๋“ค์–ด์žˆ๊ฑฐ๋‚˜, ์™ธ๋ถ€ RPM ์ €์žฅ์†Œ๋ฅผ ์ถ”๊ฐ€ํ•ด์„œ ์„ค์น˜ํ•˜๋Š” ํ˜•ํƒœ๋กœ ๋ฐฐํฌ๋œ๋‹ค.


 

 

๊ทธ๋ž˜์„œ ๋ฐฉ๋ฒ• 2๋ฅผ ์„ ํƒํ•˜์—ฌ์•ผ ํ•œ๋‹ค. 


๋ฐฉ๋ฒ• 2. NodeSource RPM ์ €์žฅ์†Œ ์ด์šฉ (Red Hat ๊ณ„์—ด ๊ณตํ†ต)

 

  1. ์‹œ์Šคํ…œ ํŒจํ‚ค์ง€ ์ตœ์‹ ํ™”
sudo dnf update -y

 

 

์—…๋ฐ์ดํŠธ ๋ฉ”์‹œ์ง€์— “A newer release of Amazon Linux is available” ๊ฒฝ๊ณ ๊ฐ€ ๋œจ์ง€๋งŒ, ํ˜„์žฌ ์‹œ์Šคํ…œ์— ์„ค์น˜๋œ ํŒจํ‚ค์ง€์—๋Š” ํ•  ์ผ์ด ์—†๋‹ค๋Š” ๋œป์ด๋‹ˆ ๊ทธ๋ƒฅ ๋„˜์–ด๊ฐ€๋„ ๋œ๋‹ค.

 

 

 

 

2. NodeSource ์„ค์น˜ ์Šคํฌ๋ฆฝํŠธ ๋‹ค์šด๋กœ๋“œ & ์‹คํ–‰

curl -fsSL https://rpm.nodesource.com/setup_lts.x | sudo bash -

 

NodeSource ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋งŒ ์ถ”๊ฐ€๋œ ์ƒํƒœ์ด๋‹ค.์ด์ œ ์‹ค์ œ๋กœ Node.js ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๋ฉด ๋œ๋‹ค!

 

 

 

 

 

 

 

๋‹ค์Œ ๋‹จ๊ณ„๋กœ!

 

 


< ์ด์ œ ์—ฌ๊ธฐ์„œ ํ•˜๊ฒŒ ๋   ํ•˜๋Š” ๊ณผ์ •์˜ ์ด์œ ์™€ ๋ชฉ์  ์„ค๋ช… >

1. ๋Ÿฐํƒ€์ž„ ์„ค์น˜ ํ™•์ธ → “Node.js๊ฐ€ EC2์—์„œ ๋ฌธ์ œ์—†์ด ๋™์ž‘ํ•œ๋‹ค”
2. ์•ฑ ํ™˜๊ฒฝ ๊ตฌ์„ฑ → “์˜์กด์„ฑ ๊ด€๋ฆฌ(package.json), ES ๋ชจ๋“ˆ ์„ค์ •(type:module)”
3. ์ตœ์†Œ ์›น ์„œ๋ฒ„ ๋„์šฐ๊ธฐ → “๋„คํŠธ์›Œํฌ ๋ ˆ์ด์–ด(Nginx→3000ํฌํŠธ)๊นŒ์ง€ ์—ฐ๋™ํ•˜๊ธฐ์— ์•ž์„œ ์ˆœ์ˆ˜ Node.js ์„œ๋น„์Šค๊ฐ€ ์ •์ƒ ์ž‘๋™”


์ด๋ ‡๊ฒŒ “๋Ÿฐํƒ€์ž„ → ์˜์กด์„ฑ → ์ฝ”๋“œ → ์‹คํ–‰”์˜ ํ๋ฆ„ ์ „์ฒด๋ฅผ ํ•œ ๋ฒˆ ์ ๊ฒ€ํ•ด ๋‘๋ฉด,
๋‹ค์Œ ๋‹จ๊ณ„์ธ PM2/NGINX/SSL ์„ค์ •์ด๋‚˜ CI/CD ์ž๋™ํ™”๋กœ ๋„˜์–ด๊ฐ”์„ ๋•Œ
“์–ด๋””์„œ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒจ๋„ ์›์ธ์ด ๋Ÿฐํƒ€์ž„์ธ์ง€, ์ฝ”๋“œ์ธ์ง€, ๋ฐฐํฌ ํŒŒ์ดํ”„๋ผ์ธ์ธ์ง€”๋ฅผ
๋น ๋ฅด๊ฒŒ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ฆ‰, ์ด ๊ณผ์ •์€ “๋ฐฐํฌ ์ „ ๊ฒ€์ฆ” ๊ฒธ “์•ฑ ๋ถ€ํŠธ์ŠคํŠธ๋žฉ” ๋‹จ๊ณ„์ด๋‹ค.

 

 

2. Node.js & ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค์น˜

 

2.1 Node.js ์„ค์น˜

sudo dnf install -y nodejs

node -v
npm -v

์„ค์น˜ ํ™•์ธ๋œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ด๋ณด์ž. 

 

 

 

์ œ๋Œ€๋กœ ์„ค์น˜๊ฐ€ ๋˜์—ˆ๋‹ค.

 


์ด์ œ ๊ฐ„๋‹จํžˆ “[Hello, EC2!]” ์ฐ์–ด๋ณด๋ฉด์„œ ํ…Œ์ŠคํŠธ ํ•ด ๋ณด์ž!

 

 

1) ํ„ฐ๋ฏธ๋„์—์„œ ๋ฐ”๋กœ ํ™•์ธํ•˜๊ธฐ

node -e 'console.log("โœ… Node.js is working!");'

 

์œ„ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ํ„ฐ๋ฏธ๋„์— โœ… Node.js is working! ์ด ์ถœ๋ ฅ๋œ๋‹ค.

 

 

 


 

2) ๊ฐ„๋‹จํ•œ Express ์„œ๋ฒ„ ๋„์›Œ ๋ณด๊ธฐ

1. ์ƒˆ ๋””๋ ‰ํ„ฐ๋ฆฌ ์ƒ์„ฑ & ์ง„์ž…

mkdir ~/my-node-app && cd ~/my-node-app

 

 

 

 

2. ํ”„๋กœ์ ํŠธ ์ดˆ๊ธฐํ™” & Express ์„ค์น˜

npm init -y
npm install express

 


๋ฌธ์ œ ๋ฐœ์ƒ!! ๋ฌธ์ œ ํ•ด๊ฒฐํ•˜๊ณ  ๊ฐ€๊ธฐ!

 

์ง€๊ธˆ ํ„ฐ๋ฏธ๋„ ๋กœ๊ทธ๋ฅผ ๋ณด๋‹ˆ, ๋‘ ๊ฐ€์ง€๊ฐ€ ์„ž์—ฌ ์žˆ๋‹ค.

 

  1. ์—๋Ÿฌ ์—†์ด npm init·npm install express ๊นŒ์ง„ ์ž˜ ์‹คํ–‰  package.json ํŒŒ์ผ์ด ์ƒ์„ฑ๋๊ณ , express ๋ชจ๋“ˆ๋„ ์„ค์น˜๋จ
  2. ๊ทธ ๋‹ค์Œ์— “node index.js”๋ฅผ ์‹คํ–‰ํ–ˆ์ง€๋งŒ, index.js ํŒŒ์ผ์ด ์—†์–ด์„œ ์•„๋ž˜์™€ ๊ฐ™์€ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ๋œฌ๋‹ค. 
Error: Cannot find module '/home/ec2-user/my-node-app/index.js'

 

์ฆ‰,

๋ฌธ์ œ ์š”์•ฝ

๋ฌธ์ œ: index.js ํŒŒ์ผ์ด ์—†์–ด์„œ Node๊ฐ€ ์‹คํ–‰ํ•  ์ง„์ž…์ (์—”ํŠธ๋ฆฌ) ๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ.
๋ฐœ์ƒ ๋‹จ๊ณ„: “์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ ์ž‘์„ฑ ๋‹จ๊ณ„” — ๋Ÿฐํƒ€์ž„(ํ™˜๊ฒฝ) ์ค€๋น„๊ฐ€ ๋๋‚˜๊ณ  ์‹ค์ œ ์„œ๋ฒ„ ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค์–ด์„œ ์‹คํ–‰ํ•ด ๋ณด๋Š” ๋‹จ๊ณ„์ด๋‹ค.

 

ํ•ด๊ฒฐ์ฑ…

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

 

 

 

  2. index.js ํŒŒ์ผ ์ƒ์„ฑ & ์ฝ”๋“œ ์ž‘์„ฑ - ํŽธ์ง‘๊ธฐ(์˜ˆ: vi, nano)๋กœ ์—ด๊ณ  ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ๋ถ™์—ฌ ๋„ฃ์–ด์•ผ ํ•œ๋‹ค.

vi index.js

๋ฅผ ์ž…๋ ฅํ•˜๋ฉด

์ด๋Ÿฌํ•œ ์ฐฝ์ด ๋œจ๊ณ  ์•„๋ž˜์˜ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•ด์ฃผ๋ฉด ๋œ๋‹ค. 

import express from 'express';

const app = express();
const PORT = 3000;

app.get('/', (req, res) => {
  res.send('Hello from EC2 Express!');
});

app.listen(PORT, () => {
  console.log(`๐Ÿš€ Server listening on http://localhost:${PORT}`);
});
Vi ์‚ฌ์šฉ๋ฒ• :
1) i ๋ˆŒ๋Ÿฌ INSERT ๋ชจ๋“œ ์ง„์ž…์ฝ”๋“œ๋ฅผ ๋ถ™์—ฌ๋„ฃ๊ธฐ
2)  Esc → :wq → Enter ๋กœ ์ €์žฅ ํ›„ ์ข…๋ฃŒ


Nano ์‚ฌ์šฉ๋ฒ•:
1) ์ฝ”๋“œ ๋ถ™์—ฌ๋„ฃ๊ธฐ
2) Ctrl+O → Enter (์ €์žฅ)
3) Ctrl+X (์ข…๋ฃŒ)

 

 

 

 

3. package.json์— ES ๋ชจ๋“ˆ ํƒ€์ž… ์ง€์ •

package.json์— ๋‹ค์Œ ํ•œ ์ค„์„ ์ถ”๊ฐ€ํ•ด์•ผ import ๋ฌธ๋ฒ•์ด ๋จนํžŒ๋‹ค.

 

๋˜ ์•„๋ž˜์˜ ๋ช…๋ น์–ด๋ฅผ ์ณ์„œ  package.json ํŒŒ์ผ ๋‚ด์šฉ์„ ์ˆ˜์ •ํ•ด์•ผ ํ•œ๋‹ค. 

vi package.json

 

 

{
  "name": "my-node-app",
  "version": "1.0.0",
  "type": "module",           // ES ๋ชจ๋“ˆ ์‚ฌ์šฉ ์„ ์–ธ
  "main": "index.js",         // ์ง„์ž… ํŒŒ์ผ
  "scripts": {
    "start": "node index.js"  // ๋‚˜์ค‘์— npm start ๋กœ ์‹คํ–‰ ๊ฐ€๋Šฅ
  },
  "dependencies": {
    "express": "^4.18.2"      // ์ด๋ฏธ ์„ค์น˜๋œ express ๋ฒ„์ „
  }
}

 

 

 

์ •์ƒ ์‹คํ–‰ ๋˜์–ด์„œ ํ„ฐ๋ฏธ๋„์— ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฉ”์‹œ์ง€๊ฐ€ ๋‚˜ํƒ€๋‚ฌ๋‹ค. 

๐Ÿš€ Server listening on http://localhost:3000

 

 


ํ•œ๋ˆˆ์— ๋‹จ๊ณ„ ์ •๋ฆฌ


1. vi index.js (๋˜๋Š” nano index.js)
2. JS ์ฝ”๋“œ ๋ถ™์—ฌ๋„ฃ๊ธฐ → ์ €์žฅ
3. package.json์— "type":"module" ์ถ”๊ฐ€
4. node index.js๋กœ ์‹คํ–‰


์ด๋ ‡๊ฒŒ ํ•˜์‹œ๋ฉด Bash๊ฐ€ ์•„๋‹ˆ๋ผ Node๊ฐ€ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ฒŒ ๋˜์–ด ์—๋Ÿฌ ์—†์ด ์„œ๋ฒ„๊ฐ€ ๋œฌ๋‹ค.

 

 

 

 

 

 

 

+ Recent posts