๋์ผํ gunicorn ์ธ์คํด์ค๋ฅผ ํตํด ๋ง์ ์์ฉ ํ๋ก๊ทธ๋จ์ ์คํํ์ฌ ๋์ผํ ํ์ด์ฌ ์ธํฐํ๋ฆฌํฐ๋ฅผ ์ฌ์ฉํ๋๋ก ํ๋ ๋ฐฉ๋ฒ์ด ์์ผ๋ฉด ์ข์ ์๊ฐ์ด๋ผ๊ณ ์๊ฐํ์ญ๋๊น?
์ ์ด๋ ๋์๊ฒ ์ด๊ฒ์ ๋งค์ฐ ์ ์ฉํ ๊ฒ์
๋๋ค. ์๋ํ๋ฉด ๋์ผํ ์์คํ
์์ ์คํ๋๋ ๋ง์ ์์ ์์ฉ ํ๋ก๊ทธ๋จ(๋งค์ฐ ๋ฎ์ ๋ก๋)์ด ์๊ธฐ ๋๋ฌธ์ ๋ง์ RAM์ ์ ์ฝํ ์ ์๊ธฐ ๋๋ฌธ์
๋๋ค.
์ด๋ฐ ์ข
๋ฅ์ ํ๋์ ์ต์ข
์ฌ์ฉ์๊ฐ ๊ฐ์ฅ ์ ํด๊ฒฐํ๋ค๊ณ ์๊ฐํฉ๋๋ค. gunicorn์ด ๊ธฐ์กด ์น ์๋ฒ์ ๋น๊ตํ์ฌ "์ฌ๋ฌ ์ฌ์ดํธ"์์ ์๋ํ๋ ๋ฐฉ์์๋ ๋๋ ทํ ์ฐจ์ด๊ฐ ์์ต๋๋ค.
werkzeug์ ๊ฐ์ ๊ฐ๋จํ ํ์ด์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ณ ๋ ์ฑ์ด ๋ค๋ฅธ ๊ฒฝ๋ก์์ ์๋ตํ๋๋ก ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๋๋ ์ด๊ฒ์ด ํต์ฌ์ ์ํ์ง ์๋๋ค๋ ์ ์ ๋์ํด์ผ ํฉ๋๋ค. ํ์ง๋ง Routes๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฅผ ์ํํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํ๋ ์์ ๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
http://github.com/benoitc/gunicorn/blob/master/examples/multiapp.py
์ฑ๋ง๋ค ํน์ ๋ง์ดํธ ์ง์ ์ ์ง์ ํ๋ ๋์ ์ด๋ฆ์ผ๋ก ๊ฐ์ ํธ์คํธ๊ฐ ์๋ ์๋ฅผ ๊ฐ์ง ์ ์์ต๋๊น?
์, ์์ ํ ๊ฐ๋ฅํฉ๋๋ค. ์ฑ์ ๋ํ ํ๊ฒฝ['HTTP_HOST']์ ๊ฐ๋จํ ๋งคํ์ ์์ฑํ ์ ์์ต๋๋ค.
๋๋ ์ด๊ฒ์ด gunicorn์ ๋ด์ฅ ๋ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด๋ป๊ฒ ์๊ฐํ์ญ๋๊น?
์ด๊ฒ์ contrib ํญ๋ชฉ๊ณผ ๊ฐ์ gunicorn์ ์ ํ์ ๋ถ๋ถ์ผ ์ ์์ต๋๋ค.
๋ณ๋์ ๊ตฌ์ฑ์ด ์๋ ๋ ๋ฆฝํ ๋ฉํฐํ๋ ์ ์์ฉ ํ๋ก๊ทธ๋จ์ผ๋ก ๊ฐ์ฅ ์ข์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. Django/Paste ์ ๋ฌธํ๋ ๊ฑฐ๊ธฐ์ ๊ฐ์ผ ํฉ๋๋ค. ์ด์ ๊ฐ์ด:
$ gunicorn wsgi_multi django:project1 myblog.wsgi:wsgi_app anotherapp.foo
์ฌ๊ธฐ์์ gunicorn์ ํ๋์ ์์ฉ ํ๋ก๊ทธ๋จ wsgi_multi๋ง ์คํํ๊ณ ๋ค๋ฅธ ์ธ์๋ ์ผ๋ถ ํน์ API๋ฅผ ํตํด ์ ๋ฌ๋ฉ๋๋ค. ๋๋ ๊ตฌ์ฑ์ ํตํด ๋๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก.
๋๋ ์ด ํฐ์ผ์์ ์ ์๋ ๊ฒ๊ณผ ๊ฐ์ ๊ฒ์ ์ฐ๋ ค๊ณ ๋ง์ ์๊ฐ์ ๋ณด๋์ต๋๋ค. ๋จผ์ HTTP_HOST๋ฅผ ๊ธฐ๋ฐ์ผ๋ก virtualenv๋ฅผ ์ ํํ๋ ์ฝ๋๋ฅผ ์ฌ์ฉํด ๋ณด์์ต๋๋ค. ์์ํ ํ์ด์ฌ์์ virtualenvs๋ฅผ ๋นํ์ฑํํ ์ ์๋ค๋ ๊ฒ์ด ๋ฐํ์ก์ต๋๋ค. ๊ทธ๋์ ๊ทธ๊ฒ์ ์ธ์ฒ์ด์์ต๋๋ค.
๊ทธ๋ฐ ๋ค์ ์๊ฐํ์ต๋๋ค. ๋จ์ผ virtualenv๋ผ๋ ์๊ตฌ ์ฌํญ์ด ์์ ์ ์์ผ๋ฏ๋ก HTTP_HOST๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ค๋ฅธ WSGI ์ฑ์ผ๋ก ์ ํํ๋ ์ฝ๋๋ฅผ ์์ฑํ์ต๋๋ค. django๋ ์ ๋ง ๋๋ผ์ด ์์ ์ ์ญ ๋ณ์๊ฐ ๋์ฒ์ ์์ต๋๋ค.
๊ทธ๋์ ๊ธฐ๋ณธ์ ์ผ๋ก, ๋ด๊ฐ ๋งํ๋ ๊ฒ์ ์์์ ์ ์ํ ๊ฒ๋งํผ ์ฝ๊ฑฐ๋ ์คํ ๊ฐ๋ฅํ์ง ์๋ค๋ ๊ฒ์ ๋๋ค.
์์ ์๊ฐ ์ฑ์ ๋ฐ๋ผ ๋ค๋ฅธ virtualenv์์ ์คํ๋๊ณ ์ค์ gunicorn ๋ง์คํฐ๊ฐ ๋ ๋ง์ ์์ ์๊ฐ ํ์ํ ์ฑ์ด ์ด๋ฅผ ์ป๋๋ก ํ๋ ์ผ์ข ์ ๋ก๋ ๋ฐธ๋ฐ์ฑ ์์ ์ ์ํํ๋ ๊ฒ์ด ๋ ์คํ ๊ฐ๋ฅํฉ๋๊น? ์๋ง๋ ์ฐ๊ธฐ๊ฐ ์ฝ์ง ์๊ฑฐ๋ ์ฌ๋ฏธ๊ฐ ์์ ๊ฒ์ ๋๋ค :(
์ด๋ฐ ์ผ์ ๊ฐ๋ฅํ๊ฒ ํ๊ธฐ ์ํด django๋ฅผ ์ ๋ฆฌํ๊ณ ์ถ์ต๋๋ค...
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋๋ ์ด๊ฒ์ด ํต์ฌ์ ์ํ์ง ์๋๋ค๋ ์ ์ ๋์ํด์ผ ํฉ๋๋ค. ํ์ง๋ง Routes๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฅผ ์ํํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํ๋ ์์ ๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
http://github.com/benoitc/gunicorn/blob/master/examples/multiapp.py