κ°œμš”

AWS Lightsail μ—μ„œ μ‹€ν–‰λ˜κ³  μžˆλŠ” λ‘κ°œμ˜ μ›Ή μ‘μš©ν”„λ‘œκ·Έλž¨μ΄ μžˆμŠ΅λ‹ˆλ‹€.

  • 1 vCPU ν”„λ‘œμ„Έμ‹±
  • 512MB λ©”λͺ¨λ¦¬
  • 20GB SSD μŠ€ν† λ¦¬μ§€
  • 3.5 USD μ›”λ³„μš”κΈˆ
  • 1TB 전솑
  • OS: Ubuntu 16.04

두 개의 μ›Ή μ‘μš©ν”„λ‘œκ·Έλž¨μ€ PHP λ₯Ό μ‚¬μš©ν•˜κ³ , nginx λ₯Ό μ‚¬μš©ν•΄μ„œ μ„œλΉ„μŠ€λ˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

ν˜Ήμ‹œλ‚˜ λ‹€λ₯Έ μ„œλ²„λ‘œ μ΄μ „ν•˜κ²Œ 될 μˆ˜λ„ 있고, 관리도 νž˜λ“€μ–΄μ„œ ꡬ성을 μ½”λ“œν™”ν•˜κ³  μ‹Άμ–΄μ‘ŒμŠ΅λ‹ˆλ‹€.

κ·Έλž˜μ„œ, 두 μ‘μš©ν”„λ‘œκ·Έλž¨μ„ μ»¨ν…Œμ΄λ„ˆμ—μ„œ 싀행될 수 μžˆλŠ” ν™˜κ²½μœΌλ‘œ μ΄μ „ν–ˆμŠ΅λ‹ˆλ‹€.

Lightsail 에 μƒˆλ‘œμš΄ μΈμŠ€ν„΄μŠ€λ₯Ό λ§Œλ“€κ³ , Dockerλ₯Ό μ„€μΉ˜ν•˜κ³ , docker-compose 둜 ꡬ성 λ‚΄μš©μ„ κ΄€λ¦¬ν•˜λ„λ‘ μ΄μ „ν–ˆμŠ΅λ‹ˆλ‹€.

  • 1 vCPU
  • 1GB λ©”λͺ¨λ¦¬
  • 30GB SSD μŠ€ν† λ¦¬μ§€
  • 5.0 USD μ›”λ³„μš”κΈˆ
  • 2TB 전솑
  • OS: Ubuntu 20.04

κ³„νš

aws lightsail container

κ΅¬ν˜„

호슀트 80, 443 ν¬νŠΈλŠ” nginx μ»¨ν…Œμ΄λ„ˆμ— μ—°κ²°λ©λ‹ˆλ‹€.

DBMS 와 두 web app은 호슀트 μž₯μΉ˜μ— 포트λ₯Ό μ—°κ²°ν•˜μ§€ μ•Šκ³ , μ»¨ν…Œμ΄λ„ˆ λ‚΄λΆ€μ—μ„œλ§Œ μ ‘κ·Όν•  수 μžˆλ„λ‘ EXPOSE λͺ…λ ΉμœΌλ‘œ κ΅¬μ„±ν•©λ‹ˆλ‹€.

도컀 λ„€νŠΈμ›Œν¬λ₯Ό λ§Œλ“€μ–΄μ„œ μ‚¬μš©ν•©λ‹ˆλ‹€.

nginx μ—μ„œ λ¦¬λ²„μŠ€ ν”„λ‘μ‹œ 연결을 μœ„ν•œ λ„€νŠΈμ›Œν¬μ™€ web app μ—μ„œ DBMS 접근을 μœ„ν•œ λ„€νŠΈμ›Œν¬λ₯Ό λΆ„λ¦¬ν•˜λ €κ³  ν–ˆμœΌλ‚˜, λ³΅μž‘ν•΄μ§€λŠ” 것 κ°™μ•„ λ‚΄λΆ€ λ„€νŠΈμ›Œν¬λŠ” ν•˜λ‚˜λ§Œ μ‚¬μš©ν•˜λ„λ‘ κ΅¬μ„±ν•©λ‹ˆλ‹€.

docker network

도컀 λ„€νŠΈμ›Œν¬λ₯Ό μž‘μ„±ν•©λ‹ˆλ‹€. μ»¨ν…Œμ΄λ„ˆλŠ” μž‘μ„±λœ λ„€νŠΈμ›Œν¬λ‘œ μ—°κ²°λ©λ‹ˆλ‹€.

$ docker network create <name of network>

bridge λ„€νŠΈμ›Œν¬κ°€ μ‚¬μš©λ©λ‹ˆλ‹€.

nginx

GUI ν™˜κ²½μ—μ„œ 관리할 수 μžˆλŠ” Nginx Proxy Manager λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.

이제, νŽΈλ¦¬ν•˜κ²Œ GUI ν™˜κ²½μ—μ„œ λ¦¬λ²„μŠ€ ν”„λ‘μ‹œλ₯Ό 관리할 수 μžˆμŠ΅λ‹ˆλ‹€.

docker-compose.yml νŒŒμΌμ„ μž‘μ„±ν•΄μ„œ ꡬ성을 μ½”λ“œν™”ν•©λ‹ˆλ‹€.

DBMS

docker-compose.yml νŒŒμΌμ„ μž‘μ„±ν•΄μ„œ ꡬ성을 μ½”λ“œν™”ν•©λ‹ˆλ‹€.

λ³Όλ₯¨μ„ μ—°κ²°ν•΄μ„œ λ°μ΄ν„°λ² μ΄μŠ€ 파일이 μœ μ§€λ©λ‹ˆλ‹€.

web apps

docker-compose.yml νŒŒμΌμ„ μž‘μ„±ν•΄μ„œ ꡬ성을 μ½”λ“œν™”ν•˜κ³ , λ³Όλ₯¨μ„ μ—°κ²°ν•΄μ„œ ν•„μš”ν•œ νŒŒμΌμ„ ν˜ΈμŠ€νŠΈμ—μ„œ μ ‘κ·Όν•  수 있고, νŒŒμΌλ“€μ΄ μ»¨ν…Œμ΄λ„ˆ μ™ΈλΆ€μ—μ„œ κ΄€λ¦¬λ˜μ–΄ 계속 μœ μ§€λ©λ‹ˆλ‹€.

μ™„λ£Œ

Nginx Proxy Manager λ₯Ό μ‚¬μš©ν•˜λ©΄ 도메인을 μ—°κ²°ν•˜κ³ , λ¦¬λ²„μŠ€ ν”„λ‘μ‹œ κ΅¬μ„±μ‹œ Let’s Encrypt μ—μ„œ μΈμ¦μ„œλ₯Ό κ°„νŽΈν•˜κ²Œ κ΅¬μ„±ν•˜κ³ , μž¬λ°œν–‰μ΄ μžλ™ν™”λ˜μ–΄ νŽΈλ¦¬ν•©λ‹ˆλ‹€.

이제, ν•„μš”ν•œ ꡬ성이 μ½”λ“œν™”λ˜κ³ , ν•„μš”ν•œ νŒŒμΌμ€ ν˜ΈμŠ€νŠΈμ—μ„œ 확인할 수 μžˆμœΌλ―€λ‘œ μ„œλ²„ 이전을 맀우 νŽΈλ¦¬ν•˜κ²Œ 진행할 수 μžˆμŠ΅λ‹ˆλ‹€.

ꡬ성이 λ³€κ²½λœ λΈ”λ‘œκ·Έ: bbon.kr web app 이 잘 λ™μž‘ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

이슈

ν•œλ²ˆμ”© CPU μ‚¬μš©λŸ‰ κΈ‰μ¦ν•˜λŠ” ν˜„μƒμ΄ λ°œμƒν•˜κ³  μžˆμœΌλ‚˜, 원인을 찾을 수 μ—†μŠ΅λ‹ˆλ‹€.

적은 λ¦¬μ†ŒμŠ€λ‘œ μ„œλ²„λ₯Ό λͺ¨λ‹ˆν„°λ§ν•  수 μžˆλŠ” 도ꡬλ₯Ό μ°Ύκ³  μžˆμŠ΅λ‹ˆλ‹€.

남은 사항

Nginx Proxy Managerλ₯Ό μ‚¬μš©ν•΄μ„œ λ¦¬λ²„μŠ€ ν”„λ‘μ‹œλ‘œ κ΅¬μ„±λœ web app 의 도메인 λ³„λ‘œ μΈμ¦μ„œλ₯Ό μ‚¬μš©ν•˜κ³  μžˆλŠ”λ°, Let’s Encrypt μ—μ„œ μ œκ³΅ν•˜λŠ” μ™€μΌλ“œμΉ΄λ“œ μΈμ¦μ„œλ₯Ό μ‚¬μš©ν•˜λ„λ‘ ꡬ성해야 ν•©λ‹ˆλ‹€.

CPU μ‚¬μš©μ΄ κΈ‰μ¦ν•˜λŠ” ν˜„μƒμ˜ 원인을 νŒŒμ•…ν•˜κ³ , ν•΄κ²°ν•΄μ•Ό ν•©λ‹ˆλ‹€.