WSGI
μ ν ν¬ μ₯κ³ : 4-08 WSGI
- μ₯κ³ μλ²λ₯Ό ꡬλνκΈ° μν΄ μ§κΈκΉμ§λ
python manager.py runserver
μ²λΌ μ₯κ³ μ λ΄μ₯ μλ²λ₯Ό ꡬλνλ λ°©μμ μ¬μ©
- μ₯κ³ μ λ΄μ₯ μλ²λ μ΄λ² μ₯μμ μ€λͺ
ν μΉ μλ²μ WSGI μλ²μ κΈ°λ₯μ λͺ¨λ ν¬ν¨νκ³ μμ
- λ€λ§ λ΄μ₯ μλ²λ κΈ°λ₯μ΄ λ¨μνκ³ 'λλ μμ²'μ΄λ 'λμ μμ²'μ ν¨μ¨μ μΌλ‘ μ²λ¦¬νμ§ λͺ»νλ―λ‘ μ΄μ νκ²½μλ μ ν©νμ§ μμ
μΉ λΈλΌμ°μ
- μΉ λΈλΌμ°μ κ° μΉ μλ²μ μμ²νλ νμ΄μ§λ ν¬κ² λ κ°μ§λ‘ λΆλ₯
- μ μ νμ΄μ§
- λμ νμ΄μ§
μ μ (static) νμ΄μ§
# μΉ λΈλΌμ°μ λ‘ λ€μ URL μμ²
http://3.35.153.92:8000/static/style.css
# κ·Έλ¬λ©΄ μΉ λΈλΌμ°μ νλ©΄μ λ€μκ³Ό κ°μ λ΄μ© μΆλ ₯
.comment {
border-top:dotted 1px #ddd;
font-size:0.7em;
}
- μλ²λ μμ κ°μ μΉ λΈλΌμ°μ μ μμ²μ λ°μΌλ©΄ μλ²μ
/static/style.css
νμΌμ μ½μ΄μ 리ν΄
style.css
λ νμΌμ΄λ―λ‘ νμ λ³νμ§ μλ λμΌν κ°μ 리ν΄ν κ²
- νμ₯μλͺ
μ΄
js
μΈ μλ°μ€ν¬λ¦½νΈλ jpg
, png
μ κ°μ μ΄λ―Έμ§ νμΌλ λ§μ°¬κ°μ§
- μ΄λ° νμΌλ€μ μ μ νμΌ(static file)μ΄λΌκ³ ν¨
- μ΄λ κ² μΉ λΈλΌμ°μ μμ
css
, js
, jpg
, png
μ κ°μ μ μ νμΌμ μμ²νλ κ²μ μ μ νμ΄μ§ μμ²μ΄λΌκ³ ν¨
λμ (dynamic) νμ΄μ§
- μΉ λΈλΌμ°μ κ° κ²μν λ©μΈ νμ΄μ§λ₯Ό μμ²νλ κ²½μ°λ₯Ό μκ°ν΄λ΄€μ λ, μλ²λ μ΄λ° μμ²μ΄ λ€μ΄μ€λ©΄ μ§λ¬Έ λͺ©λ‘μ μ‘°ννμ¬ λ¦¬ν΄
- μ΄λ μλ΅ λ°μ΄ν°μΈ μ§λ¬Έ λͺ©λ‘μ λ°μ΄ν°λ² μ΄μ€μ λ΄μ©μ λ°λΌ μμλ‘ λ³ν¨
- μ΄λ κ² μλ΅μ΄ μμλ‘ λ³νλ μμ²μ λμ νμ΄μ§ μμ²μ΄λΌκ³ ν¨
μΉ μλ²(Web Server)
- μΉ μλ²λ μΉ λΈλΌμ°μ μ μ μ μμ²κ³Ό λμ μμ²μ μ²λ¦¬νλ μλ²
- λνμ μΈ μΉ μλ²μλ μνμΉ(
Apache
), μμ§μμ€(Nginx
) λ±μ΄ μμ
- μ¬κΈ°μλ μ₯κ³ μ κ°μ₯ μ μ΄μΈλ¦¬λ μμ§μμ€(
Nginx)
λ₯Ό μΉ μλ²λ‘ μ¬μ©ν κ²
- μΉ μλ²μ μ μ νμ΄μ§ μμ²μ΄ λ€μ΄μ€λ©΄ μ μ νμΌμ μ½μ΄ μλ΅νλ©΄ λλ―λ‘ κ°λ¨νμ§λ§ λμ νμ΄μ§ μμ²μ μ‘°κΈ λ³΅μ‘
- μΉ μλ²μ λμ νμ΄μ§ μμ²μ΄ λ€μ΄μ€λ©΄ μΉ μλ²λ νμ΄μ¬ νλ‘κ·Έλ¨μ νΈμΆν΄μΌ ν¨
- μλ₯Ό λ€μ΄ μ§λ¬Έ λͺ©λ‘ νμ΄μ§ μμ²μ΄ λ€μ΄μ€λ©΄ μ§λ¬Έ λͺ©λ‘μ μ‘°ννμ¬ λ¦¬ν΄νλ νμ΄μ¬ νλ‘κ·Έλ¨μ νΈμΆν΄μΌ νμ§λ§ λλΆλΆμ μΉ μλ²λ νμ΄μ¬ νλ‘κ·Έλ¨μ νΈμΆν μ μλ κΈ°λ₯μ΄ μμ
- μ΄λ»κ² νμ΄μ¬ νλ‘κ·Έλ¨μ νΈμΆν΄μΌ νλμ§ λͺ¨λ₯΄κΈ° λλ¬Έ
- μ΄λ¬ν μ΄μ λ‘ νμ΄μ¬ νλ‘κ·Έλ¨μ νΈμΆνλ
WSGI
(web server gateway interface) μλ²κ° λ°λμ νμ
- μΉ μλ²μ λμ μμ²μ΄ λ°μνλ©΄ μΉ μλ²κ°
WSGI
μλ²λ₯Ό νΈμΆνκ³ , WSGI
μλ²λ νμ΄μ¬ νλ‘κ·Έλ¨μ νΈμΆνμ¬ λμ νμ΄μ§ μμ²μ λμ μ²λ¦¬νλ κ²
Tip! WSGI
λ 'μμ€ν€', 'μμ€κΈ°' νΉμ WSGI μ² μλ₯Ό κ·Έλλ‘ λ°μ
WSGI μλ²
WSGI
μλ²λ μΉμλ²κ° λμ νμ΄μ§ μμ²μ μ²λ¦¬νκΈ° μν΄ νΈμΆνλ μλ²
WSGI
μλ²μλ μ¬λ¬ μ’
λ₯κ° μμ§λ§ uwsgi
μ Gunicorn
μ κ°μ₯ λ§μ΄ μ¬μ©νλ©° μ¬κΈ°μλ Gunicorn
μ μ¬μ©ν κ²
- μΉμλ²μ λμ νμ΄μ§ μμ²μ΄ λ°μνλ©΄ μΉ μλ²λ
WSGI
μλ²λ₯Ό νΈμΆνκ³ WSGI
μλ²λ λ€μ WSGI
μ ν리μΌμ΄μ
μ νΈμΆ
- μ¬κΈ°μ μμ μλ μ€μν μ¬μ€μ μ€μ λμ νμ΄μ§ μμ²μ κ²°κ΅
WSGI
μ ν리μΌμ΄μ
μ΄ μ²λ¦¬νλ€λ μ
WSGI
μ ν리μΌμ΄μ
μλ μ₯κ³ (Django
), νλΌμ€ν¬(Flask
), ν λ€μ΄λ(Tornado
) λ±μ΄ μμ
WSGI
μλ²λ μΉ μλ²μ WSGI
μ ν리μΌμ΄μ
μ€κ°μ μμΉ
- κ·Έλμ
WSGI
μλ²λ WSGI
λ―Έλ€μ¨μ΄(middleware) λλ WSGI
컨ν
μ΄λ(container)λΌκ³ λ ν¨
WSGI μ ν리μΌμ΄μ
WSGI
μλ²λ νμ λ€μ νμΌμ κ²½μ νμ¬ μ₯κ³ (django) νλ‘κ·Έλ¨μ νΈμΆ
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings')
application = get_wsgi_application()
- μ΄ νμΌμ μ μΈλ
application
μ΄ λ°λ‘ μ₯κ³ μ μ ν리μΌμ΄μ
- μ΄ νμΌμ μ₯κ³ νλ‘μ νΈ μμ±μ μλμΌλ‘ λ§λ€μ΄μ§λ©° νΉλ³ν κ²½μ°κ° μλκ³ λ μμ ν νμκ° μμ
WSGI μμλ
- μΉ λΈλΌμ°μ μ μ μ νμ΄μ§ μμ²μ [μΉ μλ²]κ° μ²λ¦¬νκ³ , λμ νμ΄μ§ μμ²μ [
WSGI
μλ² β WSGI
μ ν리μΌμ΄μ
]μΌλ‘ μ²λ¦¬