λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
HYU/μ‘Έμ—… ν”„λ‘œμ νŠΈ

7. μ›Ή μ„œλ²„ ꡬ상

by Jaeguk 2024. 3. 20.

이번 ν™œλ™ μš”μ•½


μ΄λ²ˆμ£Όμ—λŠ” λ°±μ—”λ“œ μ„œλ²„λ₯Ό μ–΄λ–€ μ‹μœΌλ‘œ ꡬ성할지에 λŒ€ν•΄μ„œ ꡬ상을 ν•΄λ³΄μ•˜λ‹€

ν”„λ‘ νŠΈμ—”λ“œ κ°œλ°œμ€ 일단 μž μ‹œ 미뀄두고, μ΄λ²ˆμ£Όμ—λŠ” λ°±μ—”λ“œ μ„œλ²„ κ°œλ°œμ„ μ§„ν–‰ν–ˆλ‹€
일반적인 μƒν™©μ΄μ—ˆλ‹€λ©΄ λ‘œμ»¬μ—μ„œ κ°œλ°œμ„ ν•˜κ³ , AWS에 λ°°ν¬ν•˜λŠ” μ‹μœΌλ‘œ 진행을 ν–ˆμ„ 것이닀.
그런데 연ꡬ싀에 μƒμ‹œ 가동할 수 μžˆλŠ” μ„œλ²„ 컴퓨터가 μžˆλ‹€κ³  ν•˜μ…”μ„œ, 이것을 ν™œμš©ν•˜λŠ” λ°©ν–₯으둜 진행을 κ²°μ •ν–ˆμ—ˆλ‹€.
λ°±μ—”λ“œ 개발 κ²½ν—˜λ„ λ³„λ‘œ μ—†μ§€λ§Œ, μ„œλ²„ μ»΄ν“¨ν„°λ‘œ μ„œλ²„λ₯Ό μš΄μ˜ν•˜λŠ” 것은 처음이라 이것저것 μ•Œμ•„λ³΄μ•„μ•Ό ν–ˆλ‹€.

 

원격 접속


계속 연ꡬ싀에 λ°©λ¬Έν•΄μ„œ μž‘μ—…μ„ ν•  μˆ˜λŠ” μ—†μ–΄μ„œ, μ›κ²©μœΌλ‘œ μ„œλ²„ 컴퓨터에 접속할 수 μžˆλ„λ‘ μ„ΈνŒ…μ„ ν–ˆλ‹€

기본적인 μ„ΈνŒ…μ€ μ‘°κ΅λ‹˜μ΄ ν•΄μ£Όμ‹œκ³ , λ‚˜λŠ” 연ꡬ싀에 λ°©λ¬Έν•΄μ„œ λ‚΄ 계정을 λ“±λ‘ν•˜κΈ°λ§Œ ν–ˆλ‹€.
ν¬λ‘¬μ—μ„œ μ œκ³΅ν•˜λŠ” 원격 λ°μŠ€ν¬ν†±μ„ μ‚¬μš©ν•΄μ„œ 접속할 수 μžˆλ‹€.

크둬 원격 λ°μŠ€ν¬ν†±

미리 μ„€μ •ν•΄λ‘” ν•€ 번호λ₯Ό μž…λ ₯ν•˜λ©΄, ν•΄λ‹Ή 기기에 접속할 수 μžˆλ‹€.
원격 접속은 처음 ν•΄λ³΄λŠ”λ° μ‹ κΈ°ν–ˆλ‹€,, 크둬 ν•˜λ‚˜λ‘œ 원격 접속이 κ°€λŠ₯ν•˜λ‹€λ‹ˆ

 

μ›Ή μ„œλ²„ ꡬ상


λ°±μ—”λ“œ μ„œλ²„λ₯Ό μ–΄λ–€ μ‹μœΌλ‘œ κ΅¬ν˜„ν• μ§€ ꡬ상을 ν•΄λ³΄μ•˜λ‹€

그전에 일반적으둜 μ›Ή μ„œλ²„λŠ” μ–΄λ–€ μ‹μœΌλ‘œ μš΄μ˜ν•˜λŠ”μ§€λ₯Ό μ‚΄νŽ΄λ³΄μ•˜λ‹€

WASλΌλŠ” κ°œλ…μ„ 처음 μ ‘ν–ˆλŠ”λ°, WASλŠ” 동적 μ‚¬μ΄νŠΈλ₯Ό μ „λ¬Έμ μœΌλ‘œ μ²˜λ¦¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨ 이라고 μƒκ°ν•˜λ©΄ λœλ‹€

  • μ„œλ²„ 디렉토리에 μ €μž₯된 νŒŒμΌμ„ κ·ΈλŒ€λ‘œ ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ μ œκ³΅ν•˜λŠ” 것을 정적 웹이라고 ν•œλ‹€
    • νšŒμ‚¬ μ†Œκ°œ κΈ€μ²˜λŸΌ 데이터가 λ³€ν•  일이 μ—†λŠ” κ²½μš°μ—λŠ” 정적 μ›ΉμœΌλ‘œ μΆ©λΆ„ν•˜λ‹€
  • DB와 μ—°λ™ν•΄μ„œ 데이터가 계속 λ°”λ€ŒλŠ” κ²½μš°μ— μ„œλ²„λŠ” 동적 웹을 μ œκ³΅ν•΄μ•Ό ν•œλ‹€
    • κ²Œμ‹œνŒμ²˜λŸΌ 맀번 데이터가 λ™μΌν•˜μ§€ μ•Šμ€ μ‚¬μ΄νŠΈμ˜ κ²½μš°μ—λŠ” 동적 웹을 ν•„μš”λ‘œ ν•œλ‹€

λ¬Όλ‘  WASκ°€ 없어도 동적인 웹을 μ œκ³΅ν•˜λŠ” 것은 κ°€λŠ₯ν•˜λ‹€.
μ΄μ „μ—λŠ” Apache와 PHP 그리고 MySQL을 μ—°λ™ν•΄μ„œ 동적 웹을 μ œκ³΅ν•˜λŠ” μ€„μ—¬μ„œ APM 방식을 많이 μ‚¬μš©ν–ˆλ‹€.
ν•˜μ§€λ§Œ μš”μ¦˜μ€ μŠ€ν”„λ§κ³Ό 같은 μ„œλ²„λ₯Ό μš΄μ˜ν•˜κ²Œ λ˜λ©΄μ„œ APMλ§ŒμœΌλ‘œλŠ” 동적 μ‚¬μ΄νŠΈλ₯Ό μ²˜λ¦¬ν•˜λŠ” 것이 μ–΄λ €μ›Œμ‘ŒκΈ° λ•Œλ¬Έμ— WASκ°€ ν•„μš”ν•˜κ²Œ 된 것이닀.

WASλΌλŠ” 것은 μžλ°” μ§„μ˜μ—μ„œ μ‚¬μš©λ˜λŠ” μš©μ–΄μ΄μ§€λ§Œ, λ‹€λ₯Έ μ§„μ˜μ—λ„ μš©μ–΄λ§Œ λ‹€λ₯Ό 뿐 λΉ„μŠ·ν•œ 역할을 ν•˜λŠ” μ‘΄μž¬λ“€μ΄ μžˆλ‹€

 

그럼 μ›Ή μ„œλ²„λŠ” μ–΄λ–€ 역할을 ν•˜λŠ”μ§€?
WASκ°€ λ°”λ‘œ ν΄λΌμ΄μ–ΈνŠΈμ˜ μš”μ²­μ„ μ²˜λ¦¬ν•  μˆ˜λ„ μžˆμ§€λ§Œ, μ—¬λŸ¬ μ΄μœ μ—μ„œ μ›Ή μ„œλ²„λ₯Ό μ‚¬μš©ν•œλ‹€

 

μ›Ή μ„œλ²„μ˜ μ—­ν• 


Load Balancer (μš”μ²­μ„ λΆ„μ‚°μ‹œν‚€λŠ” μ—­ν• )

  • NodeJS λ˜λŠ” ν†°μΊ£κ³Ό 같은 WASλ₯Ό μ—¬λŸ¬κ°œ λ‘λŠ” κ²½μš°μ— 각각에 λŒ€ν•΄ λΆ€ν•˜λ₯Ό λΆ„μ‚°μ‹œν‚€λŠ” 역할을 μˆ˜ν–‰ν•œλ‹€
  • ν•˜λ‚˜μ˜ μ„œλ²„μ— λŒ€ν•΄ μ—¬λŸ¬κ°œμ˜ WASλ₯Ό λ‘λŠ” μ΄μœ λŠ”
    • ν΄λΌμ΄μ–ΈνŠΈμ˜ μš”μ²­μ΄ λ§Žμ„ 경우 μš”μ²­μ„ λΆ„μ‚°ν•΄μ„œ 처리
    • μ„œλ²„ μ—…λ°μ΄νŠΈμ‹œμ— μ„œλΉ„μŠ€ μ œκ³΅μ„ μœ μ§€ν•˜λ©΄μ„œ 순차적으둜 μ—…λ°μ΄νŠΈ ν•˜κΈ° μœ„ν•΄μ„œ

 

Reverse Proxy (λ¦¬λ²„μŠ€ ν”„λ‘μ‹œ)

ν”„λ‘μ‹œλΌκ³  ν•˜λ©΄, λŒ€μ‹  μ²˜λ¦¬ν•΄μ£ΌλŠ” 역할을 μ˜λ―Έν•œλ‹€

  • μ„œλ²„μ˜ 정보λ₯Ό ν΄λΌμ΄μ–ΈνŠΈλ‘œλΆ€ν„° κ°μΆ”λŠ” μ—­ν• 
    • ν΄λΌμ΄μ–ΈνŠΈμ˜ 정보λ₯Ό μ„œλ²„λ‘œλΆ€ν„° κ°μΆ”λŠ” 것을 Forward Proxy라고 ν•˜λŠ”λ°, κ·Έκ²ƒμ˜ λ°˜λŒ€ κ°œλ…μ΄λ‹€ (κ·Έλž˜μ„œ Reverse) 
    • ν˜„μž¬ μ„œλ²„ ν”„λ‘œκ·Έλž¨μ΄ λͺ‡ 번 ν¬νŠΈμ—μ„œ λ™μž‘ν•˜λŠ”μ§€
    • μ„œλ²„μ˜ λ¦¬μ†ŒμŠ€λ“€μ΄ 어디에 λ“€μ–΄μžˆλŠ”μ§€ λ“±λ“±
  • μ„œλ²„μ˜ 응닡을 μΊμ‹±ν•˜μ—¬ λΉ λ₯Έ 응닡이 κ°€λŠ₯ν•˜λ„λ‘ ν•˜λŠ” μ—­ν• 

 

Apache vs Nginx


μ›Ή μ„œλ²„μ—λŠ” λŒ€ν‘œμ μœΌλ‘œ Apache, Nginx 두가지가 μžˆλ‹€

  • MS의 IISλΌλŠ” μ›Ή μ„œλ²„λ„ μžˆμ§€λ§Œ, ν˜„μž¬ μ„œλ²„ μ»΄ν“¨ν„°λŠ” OSκ°€ μš°λΆ„νˆ¬μ΄κΈ° λ•Œλ¬Έμ— μœˆλ„μš° ν™˜κ²½μ—μ„œ λ™μž‘ν•˜λŠ” IISλŠ” λ°°μ œν–ˆλ‹€

Apache

  • μš”μ²­λ§ˆλ‹€ μƒˆλ‘œμš΄ ν”„λ‘œμ„ΈμŠ€ λ˜λŠ” μŠ€λ ˆλ“œλ₯Ό κ³„μ†ν•΄μ„œ 생성
  • μ†λ‹˜μ΄ μ°Ύμ•„μ˜¬ λ•Œλ§ˆλ‹€ μƒˆλ‘œμš΄ ν…Œμ΄λΈ”μ„ κΊΌλ‚΄μ„œ μ‘λŒ€ν•˜λŠ” 방식
    • μ„œλ²„μ˜ λ¦¬μ†ŒμŠ€λ₯Ό 많이 μž‘μ•„λ¨ΉλŠ”λ‹€

Nginx

  • 이벀트 λ‹¨μœ„λ‘œ μš”μ²­μ„ ν•˜λ‚˜μ”© μ²˜λ¦¬ν•œλ‹€
  • ν…Œμ΄λΈ”μ„ ν•˜λ‚˜λ§Œ 두고, μ†λ‹˜μ„ λ’€λ‘œ μ­‰ μ€„μ„Έμ›Œμ„œ ν•œλͺ…μ”© μ‘λŒ€ν•˜λŠ” 방식
    • μ„±λŠ₯κ³Ό 가벼움이 μ€‘μš”ν•œ κ³³μ—μ„œ μ‚¬μš©λœλ‹€
  • μš”μ¦˜μ€ λŒ€λΆ€λΆ„ Apacheκ°€ μ•„λ‹Œ Nginxλ₯Ό μ‚¬μš©ν•˜λŠ” 좔세라고 ν•œλ‹€

 

포트 ν¬μ›Œλ”©


μ™ΈλΆ€μ—μ„œ μ„œλ²„μ— μš”μ²­μ‹œ μ„œλ²„μ˜ μ–΄λ–€ ν¬νŠΈμ— 접속해야 할지 λͺ¨λ₯΄κΈ° λ•Œλ¬Έμ— 포트 ν¬μ›Œλ”©μ΄ ν•„μš”ν•˜λ‹€

  • http://192.12.34.56μ΄λΌλŠ” μ„œλ²„λ‘œ ν”„λ‘ νŠΈμ—μ„œ μš”μ²­μ„ 보낸닀고 ν•  λ•Œ, ν•΄λ‹Ή PC의 μ–΄λ–€ ν¬νŠΈμ—μ„œ μ„œλ²„κ°€ λ™μž‘ν•˜κ³  μžˆλŠ”μ§€ λͺ¨λ₯΄κΈ° λ•Œλ¬Έμ— μš”μ²­μ— λŒ€ν•΄μ„œ 포트 ν¬μ›Œλ”©μ„ ν•΄μ£ΌλŠ” 과정이 ν•„μš”ν•˜λ‹€
  • Nginxμ—μ„œ 포트 ν¬μ›Œλ”© κΈ°λŠ₯도 μ œκ³΅ν•˜κΈ° λ•Œλ¬Έμ— ν•΄λ‹Ή κΈ°λŠ₯을 μ‚¬μš©ν•˜λ©΄ 될 것 κ°™λ‹€

 

ν…ŒμŠ€νŠΈ


λ‘œμ»¬μ—μ„œ Nginxλ₯Ό μ„€μΉ˜ν•΄μ„œ ν…ŒμŠ€νŠΈλ₯Ό ν•΄λ³΄μ•˜λ‹€

Nginxλ₯Ό μ‚¬μš©ν•΄λ³Έ 적이 μ—†μ–΄μ„œ μ—¬κΈ°μ €κΈ°λ₯Ό μ°Ύμ•„λ³΄λ©΄μ„œ μ§„ν–‰ν–ˆλ‹€

brew install nginx // nginx μ„€μΉ˜
nginx // nginx μ‹œμž‘
nginx -s stop // nignx 쀑단
nginx -s reload // λ‚΄μš© λ³€κ²½μ‹œ 쀑단없이 λ¦¬λ‘œλ“œ

λ‚˜λŠ” ν˜„μž¬ MacOSλ₯Ό μ‚¬μš©ν•˜κ³  있기 λ•Œλ¬Έμ— homebrewλ₯Ό μ‚¬μš©ν•΄μ„œ Nginxλ₯Ό μ„€μΉ˜ν–ˆλ‹€

이후 nginx.confλΌλŠ” μ„€μ • 파일이 μžˆλŠ” 곳에 κ°€μ„œ ν•΄λ‹Ή 파일의 μ„€μ • λ‚΄μš©μ„ ν…ŒμŠ€νŠΈν•˜λ €λŠ” 상황에 맞게 쑰금 μˆ˜μ •ν–ˆλ‹€.

// nginx.conf
server {
    listen       8080;
    server_name  localhost;

    #charset koi8-r;

    #access_log  logs/host.access.log  main;

    # location / {
    #     root   html;
    #     index  index.html index.htm;
    # }

    location / {
        proxy_pass http://localhost:5173;
    }
...
  • server_name: ν˜„μž¬ μš΄μ˜μ€‘μΈ μ„œλ²„μ˜ 도메인
    • μš°λ¦¬λŠ” 아직 도메인을 κ΅¬λ§€ν•˜μ§€ μ•Šμ•˜κΈ° λ•Œλ¬Έμ—, localhostλ₯Ό μ‚¬μš©ν•΄μ„œ μ ‘μ†ν•œλ‹€
  • http://localhost:8080으둜 λ“€μ–΄μ˜¨ μš”μ²­μ„ http://localhost:5173으둜 ν¬μ›Œλ”© μ‹œν‚€κ² λ‹€λŠ” μ˜λ―Έμ΄λ‹€
    • ν˜„μž¬ μš°λ¦¬κ°€ κ΅¬μΆ•ν•˜κ³  μžˆλŠ” ν”„λ‘ νŠΈκ°€ 5173번 ν¬νŠΈμ—μ„œ λ™μž‘ν•˜κΈ° λ•Œλ¬Έμ— 이것을 μ΄μš©ν•΄μ„œ ν…ŒμŠ€νŠΈν•˜λ € ν–ˆλ‹€
  • λ°±μ—”λ“œμ—μ„œλŠ” μ„œλ²„ μ»΄ν“¨ν„°μ˜ ip둜 μš”μ²­μ΄ λ“€μ–΄μ˜€λ©΄, λ°±μ—”λ“œ μ„œλΉ„μŠ€κ°€ λ™μž‘ν•˜κ³  μžˆλŠ” 포트둜 ν¬μ›Œλ”© μ‹œν‚€λ©΄ 될 것이닀

 

μ™Όμͺ½μ΄ 포트 ν¬μ›Œλ”©, 였λ₯Έμͺ½μ΄ μ›λž˜ μ„œλΉ„μŠ€

  • 8080번 포트둜 접속해도 5173번 ν¬νŠΈμ—μ„œ λ™μž‘ν•˜κ³  μžˆλŠ” ν”„λ‘ νŠΈ μ„œλΉ„μŠ€μ— 접속할 수 μžˆλŠ” 것을 ν™•μΈν–ˆλ‹€

 

Reference


μ•„νŒŒμΉ˜, NginX, 톰캣이 λ­”κ°€μš”? (+ μ›Ήμ„œλ²„, WAS, λ‘œλ“œλ°ΈλŸ°μ‹±, ν”„λ‘μ‹œ)

μ§‘μ—μžˆλŠ” μ»΄ν“¨ν„°λ‘œ μ›Ήμ„œλΉ„μŠ€ 배포 μ€€λΉ„ν•˜κΈ°

Nginxλ₯Ό μ΄μš©ν•˜μ—¬ ν¬νŠΈν¬μ›Œλ”©μ„ ν•΄λ³΄μž

[nginx] ν¬νŠΈν¬μ›Œλ”©, 그리고 λ¦¬λ²„μŠ€ ν”„λ‘μ‹œ(Port Forwarding, and Reverse Proxy)

[Mac OS]Mac ν™˜κ²½μ—μ„œ nginx μ‹€ν–‰ν•˜κΈ°

Nginx λͺ…λ Ήμ–΄ λͺ¨μŒ

728x90