๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์„œ๋ฒ„

[Nginx] putty์—์„œ Nginx ์„ค์น˜ ๋ถ€ํ„ฐ ์‹คํ–‰, pm2 gitHub์—ฐ๊ฒฐ๊นŒ์ง€

๐Ÿ›ต Nginx์˜ ์—ญํ• 

  • ๋น„๋™๊ธฐ, Event-Driven ๋ฐฉ์‹์œผ๋กœ ํด๋ผ์ด์–ธํŠธ์— ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•ด์ฃผ๋Š” ์›น์„œ๋ฒ„
  • ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ ์ฒ˜๋ฆฌ๋ฅผ ๋ถ„์‚ฐ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๋กœ๋“œ ๋ฐธ๋Ÿฐ์Šค๋ฅผ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ํšจ์œจ์ ์ธ ์ฒ˜๋ฆฌ
  • ์ •์ ํŒŒ์ผ์„ ๋‹ค์ด๋ ‰ํŠธ๋กœ ์ œ๊ณต
  • ํด๋ผ์ด์–ธํŠธ๋Š” Nginx ํฌํŠธ๋กœ๋งŒ ๋ฐฑ์—”๋“œ ์„œ๋ฒ„์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์–ด ๋ณด์•ˆ์— ๋„์›€์ด ๋จ
  • ๋™์‹œ ์ ‘์† ์ฒ˜๋ฆฌ์— ํŠนํ™”๋œ ์›น ์„œ๋ฒ„ ํ”„๋กœ๊ทธ๋žจ์ด๋‹ค. ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ ์ฒ˜๋ฆฌ๋ฅผ ๋ถ„์‚ฐ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๋กœ๋“œ ๋ฐธ๋Ÿฐ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํšจ์œจ์ ์ธ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅ
  • ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•˜๋Š” endpoint๋Š” ์ตœ์ข… ๋ชฉ์ ์ง€ ์„œ๋ฒ„๊ฐ€ ์•„๋‹Œ ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ
  • → Nginx๋ฅผ ํ†ตํ•ด express๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ์‹ค์ œ ํฌํŠธ๋ฅผ ์ˆจ๊ธฐ๊ณ , Nginx์˜ 80ํฌํŠธ๋ฅผ ์ด์šฉํ•ด Reverse Proxying์„ ํ•จ์œผ๋กœ์จ ํด๋ผ์ด์–ธํŠธ๋Š” Nginx ํฌํŠธ๋กœ๋งŒ ๋ฐฑ์—”๋“œ ์„œ๋ฒ„์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Œ

 

๐Ÿ›ด Nginx ์„ค์น˜ ๋ฐ ์‹œ์ž‘

  1. nginx ์„ค์น˜$ sudo apt-get install nginx
  2. $ sudo apt-get update
  3. ์„ค์น˜ ํ™•์ธ
  4. $ sudo systemctl status nginx
  5. nignx ์‹œ์ž‘
  6. ํ•ด๋‹น EC2์˜ ํƒ„๋ ฅ์  IP์ฃผ์†Œ๋กœ ๋“ค์–ด๊ฐ”์„๋•Œ ์•„๋ž˜์™€ ๊ฐ™์ด ๋‚˜์˜ค๋ฉด ์„ฑ๊ณต์ž…๋‹ˆ๋‹ค.

 

๐Ÿšฒ Nginx ํด๋”์— ํ”„๋ก์‹œ ์„ค์ •ํ•  ํŒŒ์ผ ๋งŒ๋“ค๊ธฐ

  1. $cd /etc/nginx/sites-available
  2. $ vi ์›ํ•˜๋Š” ํŒŒ์ผ๋ช… - (vi example-server ๋ผ๊ณ  ์„ค์ •ํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •)
  3. ๋“ค์–ด์˜จ ํŒŒ์ผ์— ์•„๋ž˜์™€ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€
  4. server_name์— ํƒ„๋ ฅ์  ip์ฃผ์†Œ ๋˜๋Š” ๋„๋ฉ”์ธ ์ฃผ์†Œ๊ฐ€ ์žˆ๋‹ค๋ฉด ๋„๋ฉ”์ธ ์ฃผ์†Œ๋ฅผ ์ ์–ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. sever_name์— ์ ์€ ์ฃผ์†Œ๋กœ ์ ‘์†ํ•˜๋ฉด putty์ƒ์—์„œ ๋Œ์•„๊ฐ€๋Š” 127.0.0.1:3000์œผ๋กœ ์—ฐ๊ฒฐํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
// etc/nginx/sites-available/example-server

server {
	listen 80;
	server_name &&&.&&&; // ํ•ด๋‹น ec2 ip๋ฒˆํ˜ธ ํ˜น์€ ๋„๋ฉ”์ธ
	location / {
		proxy_pass http://127.0.0.1:expressํฌํŠธ๋ฒˆํ˜ธ;
	}
}
  1. sudo ln -s /etc/nginx/sites-available/example-server/etc/nginx/sites-enabled/
  2. nginx ์žฌ์‹œ์ž‘
  3. $ sudo service nginx restart
  4. EC2 ์žฌ์‹œ์ž‘
    aws ์‚ฌ์ดํŠธ์— ๋“ค์–ด๊ฐ€์„œ ec2๋ฅผ ์žฌ์‹œ์ž‘ ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์„œ๋น„์Šค-EC2-์ธ์Šคํ„ด์Šค๋ฅผ ๋“ค์–ด๊ฐ€์„œ ์žฌ๋ถ€ํŒ…ํ•  ์ธ์Šคํ„ด์Šค๋ฅผ ์„ ํƒํ•˜๊ณ  ์ž‘์—…-์ธ์Šคํ„ด์Šค ์ƒํƒœ-์žฌ๋ถ€ํŒ… ์ˆœ์œผ๋กœ ์„ ํƒํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

๐Ÿ›น pm2๋กœ putty์— gitํŒŒ์ผ ์—ฐ๊ฒฐ, putty๋‚ด์—์„œ ์‹คํ–‰

  1. git init : git ์ƒ์„ฑํ•˜๊ธฐ
  2. git clone git_path : ์ฝ”๋“œ๊ฐ€์ ธ์˜ค๊ธฐ
  3. → clone๊นŒ์ง€ํ•˜๋ฉด ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ์— .gitํŒŒ์ผ์ด ํฌํ•จ๋œ ํด๋”๊ฐ€ ์ƒ๊ธด๋‹ค.
  4. git pull origin master
  5. localํ™˜๊ฒฝ์—์„œ npm start๊ฐ€ node ./bin/www๋กœ ์„ค์ • ๋˜์–ด์žˆ๋‹ค๋ฉด pm2 start ./bin/www ๋กœ ์‹คํ–‰์‹œํ‚ค๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์„ฑ๊ณต ํ–ˆ๋‹ค๋ฉด
์•ž ๊ณผ์ •๋“ค์„ ๋ชจ๋‘ ์‹คํ–‰ํ–ˆ๋‹ค๋ฉด ํฌํŠธ ๋ฒˆํ˜ธ์—†์ด ํƒ„๋ ฅ์  IP์ฃผ์†Œ ๋งŒ์„ ์ณ์„œ ๋“ค์–ด๊ฐ”์„๋•Œ ๋‚ด๊ฐ€ git์— ์˜ฌ๋ฆฐ npmํŒŒ์ผ์˜ ์‹คํ–‰ ํ™”๋ฉด๊ณผ ๋˜‘๊ฐ™์ด ๋‚˜์˜ต๋‹ˆ๋‹ค!

 

๋ฐ˜์‘ํ˜•