์ด ๋ฌธ์์์๋ MS Windows์์ Django ํ๋ก์ ํธ์ ์๋์ ๋ณด์ฅํ๊ธฐ ์ํด Apache, Python ๋ฐ PostgreSQL ํ๋ก๊ทธ๋จ์ ์ค์นํ๊ณ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ธํ ์ง์นจ์ ์ ๊ณตํฉ๋๋ค. Django์๋ ๋ก์ปฌ์์ ์ฝ๋๋ฅผ ํ
์คํธํ๊ธฐ ์ํ ๊ฒฝ๋ ๊ฐ๋ฐ ์๋ฒ๊ฐ ์ด๋ฏธ ํฌํจ๋์ด ์์ง๋ง ํ๋ก๋์
๊ด๋ จ ์์
์๋ ๋ ์์ ํ๊ณ ๊ฐ๋ ฅํ ์น ์๋ฒ๊ฐ ํ์ํฉ๋๋ค. mod_wsgi๋ฅผ ์ค์ ํ์ฌ ํ๋ก์ ํธ์ ์ํธ ์์ฉํ๊ณ Apache๋ฅผ ์ธ๋ถ ์ธ๊ณ์ ๊ฒ์ดํธ์จ์ด๋ก ์ค์ ํฉ๋๋ค.
์ค์น ๋ฐ ๊ตฌ์ฑ์ MS Windows 10 32๋นํธ์์ ์ํ๋ฉ๋๋ค. ๋ํ 32๋นํธ ๋ฐ์์ ๋ณดํธ์ ์ด๋ฉฐ 64๋นํธ ์ํคํ
์ฒ์์ ์๋ํฉ๋๋ค. 64๋นํธ ์ค์น๊ฐ ํ์ํ ๊ฒฝ์ฐ 64๋นํธ ์ํํธ์จ์ด ๋ฐฐํฌ์ ๋ํด ๋์ผํ ๋จ๊ณ๋ฅผ ๋ฐ๋ณตํ๋ฉด ์์
์์๊ฐ ๋์ผํฉ๋๋ค.
Django ํ๋ก์ ํธ๋ก Severtart ํ๋ก๊ทธ๋จ์ ์ฌ์ฉํ ๊ฒ์
๋๋ค. ์ธ์ ์ฅ๋น์ ๊ณต๊ธ ๋ฐ ์๋น์ค ๊ณ์ฝ์ ๊ณ ๋ คํ์ฌ ์นดํธ๋ฆฌ์ง ์ด๋์ ๊ด๋ฆฌํ๋๋ก ์ค๊ณ๋์์ต๋๋ค. ๋ชจ๋ ํ๋ก๊ทธ๋จ๊ณผ ๋ชจ๋์ C:severcart ๋๋ ํ ๋ฆฌ์ ์ค์น๋ฉ๋๋ค. ์์น๋ ์ค์ํ์ง ์์ต๋๋ค.
Python
์ฒซ ๋ฒ์งธ ๋จ๊ณ๋ Python ์น ์ฌ์ดํธ์์ Python์ ๋ค์ด๋ก๋ํ์ฌ ์ค์นํ๋ ๊ฒ์ ๋๋ค. ์ด์ ์ฒด์ ๋ก Windows๋ฅผ ์ ํํ๊ณ 32๋นํธ ๋ฒ์ ์ ์ ํํฉ๋๋ค. ์์ฑ ๋น์ ํ์ฌ ๋ฒ์ ์ 3.9.0rc2์ ๋๋ค.
์ค์น ํ์ผ์ ๋ค์ด๋ก๋ํ ํ ์ค์น ํ์ผ์ ๋ง์ฐ์ค ์ค๋ฅธ์ชฝ ๋ฒํผ์ผ๋ก ํด๋ฆญํ๊ณ "๊ด๋ฆฌ์ ๊ถํ์ผ๋ก ์คํ"์ ์ ํํฉ๋๋ค. ์๋ ํ๋ฉด์ ๋ณด์์ผ ํฉ๋๋ค.
"์ฌ์ฉ์ ์ถ๊ฐ๋ฅผ ์ํ ๋ฐ์ฒ ์ค์น(๊ถ์ฅ)" ๋ฐ "PATH์ Python 3.9 ์ถ๊ฐ" ํ์ธ๋ ์์ ์๋ ํ์ธ๋์ ์ค์ ํ๊ณ "์ค์น ์ฌ์ฉ์ ์ง์ "์ ํด๋ฆญํฉ๋๋ค.
"pip", "py launcher", "๋ชจ๋ ์ฌ์ฉ์์ฉ(์์น ํ์)"์ ๋ํ ํ์ธ๋์ ์ค์ ํ๊ณ "๋ค์"์ ํด๋ฆญํฉ๋๋ค.
์์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ๋ชจ๋ ์
๋ ฅ ํ๋๋ฅผ ์ ํํ๊ณ "์ค์น"๋ฅผ ํด๋ฆญํ์ญ์์ค.
์ฑ๊ณต์ ์ผ๋ก ์ค์น๋์๋์ง ํ์ธํ๋ ค๋ฉด cmd๋ฅผ ์ด๊ณ python์ ์
๋ ฅํฉ๋๋ค. ์ค์น์ ์ฑ๊ณตํ๋ฉด ์๋์ ์ ์ฌํ ํ๋กฌํํธ๊ฐ ํ์๋ฉ๋๋ค.
mod_wsgi ์ค์น
์ฌ์ดํธ์ mod_wsgi์์ ์ปดํ์ผ๋ ํจํค์ง๋ฅผ ๋ค์ด๋ก๋ํฉ๋๋ค.
cmd ๋๋ powershell์์ ํ์ค pip ํจํค์ง ๊ด๋ฆฌ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋์ ์ค์นํฉ๋๋ค.
pip install -U mod_wsgi-4.7.1-cp39-cp39-win32.whl
์ํ์น
์ฌ์ดํธ์์ ๋ฐฐํฌ ํคํธ ๋ค์ด๋ก๋
์น ์๋ฒ์ ์ต์ ๋ฒ์ ์ Apache 2.4.46 win32 VS16์
๋๋ค. ๋ํ ํ๋ก๊ทธ๋จ์ด ์๋ํ๋ ค๋ฉด ์ฌ์ ์ค์น๋ ํจํค์ง "Visual C ++ Redistributable for Visual Studio 2019 x86"์ด ํ์ํฉ๋๋ค.
C: severcartApache24 ๋๋ ํ ๋ฆฌ์ Apache ๋ฐฐํฌํ์ ์์ถ์ ํผ ๋ค์ ์ซ์ 37์ด ์๋ ์ค์ ์ฐ๋ฆฌ์ ๊ฒ์ผ๋ก ๋ณ๊ฒฝํฉ๋๋ค.
Define SRVROOT "C:/severcart/Apache24"
๋ช ๋ น์ค์์ ์คํํ์ฌ Apache์ ์๋์ ํ์ธํฉ๋๋ค.
C:/severcart/Apache24/bin> httpd.exe
๊ฒฐ๊ณผ์ ์ผ๋ก ๋ธ๋ผ์ฐ์ ์์
Apache ์๋น์ค๋ฅผ ์ค์นํ๋ ค๋ฉด ๋ช
๋ น์ค์์ ๊ด๋ฆฌ์๋ก ๋ช
๋ น์ ์คํํฉ๋๋ค.
C:severcartApache24bin>httpd.exe -k install -n "Apache24"
๋ค์์ผ๋ก mod_wsgi ๋ชจ๋์ Apache์ ์ฐ๊ฒฐํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ ค๋ฉด ๋ช ๋ น์ค์์ ๋ช ๋ น์ ์คํํฉ๋๋ค.
C:Windowssystem32>mod_wsgi-express module-config
์ด๋ ๊ฒ ํ๋ฉด ํ์ค ์ถ๋ ฅ์ ๋ค์ ์ค์ด ์ธ์๋ฉ๋๋ค.
LoadFile "c:/severcart/python/python39.dll"
LoadModule wsgi_module "c:/severcart/python/lib/site-packages/mod_wsgi/server/mod_wsgi.cp39-win32.pyd"
WSGIPythonHome "c:/severcart/python"
C:severcartApache24confextrahttpd-wsgi.conf ํ์ผ์ ๋ง๋ค๊ณ ๊ฑฐ๊ธฐ ์์ ์ธ์๋ ์ค์ ๋ณต์ฌํ์ฌ ๋ถ์ฌ๋ฃ์ต๋๋ค.
์ ๊ตฌ์ฑ์ ๊ธฐ๋ณธ httpd.conf ํ์ผ์ ์ฐ๊ฒฐํฉ๋๋ค.
conf/extra/httpd-wsgi.conf ํฌํจ
๋ณ๊ฒฝ ์ฌํญ ์ ์ฅ, Apache ์๋น์ค ๋ค์ ์์
Net stop Apache24
Net start Apache24
PostgreSQL
์ฌ์ดํธ์์ ๊ฐ์ ธ์จ PostgreSQL ์ค์น
์ค์น ๋จ๊ณ๋ ์์ ์ ์๋์ด ์์ผ๋ฉฐ ์ฃผ์์ด ํ์ํ์ง ์์ต๋๋ค. ์ค์น๋ ๋งค์ฐ ๊ฐ๋จํฉ๋๋ค.
Django ํ๋ก์ ํธ์ ๋ฐ์ดํฐ ๊ตฌ์กฐ๊ฐ ์ ์ฅ๋ Postgres์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์์ฑํฉ๋๋ค.
C:severcartpostgresqlbin>psql -h 127.0.0.1 -U postgres -W
CREATE DATABASE severcart WITH ENCODING='UTF8' OWNER=postgres CONNECTION LIMIT=-1 template=template0;
DB๊ฐ ์์ฑ๋์์ต๋๋ค. ์ด์ Django ํ๋ก์ ํธ๋ฅผ ๋ฐฐํฌํด ๋ณด๊ฒ ์ต๋๋ค.
์น ์ ํ๋ฆฌ์ผ์ด์ ์ค์น
์ด๋ ๊ฒ ํ๋ ค๋ฉด ์ฌ์ดํธ์์ zip ์์นด์ด๋ธ๋ฅผ ๋ค์ด๋ก๋ํ์ญ์์ค.
๊ธฐ๋ณธ ๊ตฌ์ฑ ํ์ผ C: severcartappconfsettings_prod.py๋ฅผ ๋ณ๊ฒฝํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ์ธ๋ถ ์ ๋ณด๋ฅผ ์ง์ ํฉ๋๋ค.
Python ์ฌ์ DATABASES์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ์ธ๋ถ ์ ๋ณด๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. ์ฌ๊ธฐ์์ ์ค์ ์ ๋ํด ์์ธํ ์์๋ณด์ธ์.
Django ํ๋ก์ ํธ ๋ด์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๊ธฐ ์ํ Python ๊ธฐ๋ฅ ํฉ ์ค์น
C:severcartapptkinstaller>python install.py
์คํฌ๋ฆฝํธ๊ฐ ์๋ํ๋ ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ํ
์ด๋ธ, ๊ตฌ๋ฌธ, ์ธ๋ฑ์ค ๋ฑ์ผ๋ก ์ด๊ธฐํ๋๋ฉฐ ํ๋ก๊ทธ๋จ์์ ๋์ ์์
์ ์ํํ ์ฌ์ฉ์๋ฅผ ์์ฑํ๋๋ก ์ ์๋ฉ๋๋ค.
Django ์ ํ๋ฆฌ์ผ์ด์
์ Apache ์๋ฒ์ ์ฐ๊ฒฐํฉ๋๋ค. ์ด๋ฅผ ์ํด ๊ตฌ์ฑ ํ์ผ์ ๋ณด์ํฉ๋๋ค.
๋ค์ ํ
์คํธ๊ฐ ํฌํจ๋ httpd-wsgi.conf
Alias /static "c:/severcart/app/static"
Alias /media "c:/severcart/app/media"
<Directory "c:/severcart/app/static">
# for Apache 2.4
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
<Directory "c:/severcart/app/media">
# for Apache 2.4
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
WSGIScriptAlias / "c:/severcart/app/conf/wsgi_prod.py"
WSGIPythonPath "c:/severcart/python/"
<Directory "c:/severcart/app/conf/">
<Files wsgi_prod.py>
Require all granted
</Files>
</Directory>
Apache ์๋น์ค๋ฅผ ๋ค์ ์์ํ๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ ์คํธํฉ๋๋ค.
๊ทธ๊ฒ ๋ค์ผ. ์ฝ์ด ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค.
๋ค์ ๊ธฐ์ฌ์์๋ ๊ณ ๊ฐ์ ์ปดํจํฐ์ Django ํ๋ก์ ํธ๋ฅผ ์ ์ํ๊ฒ ๋ฐฐํฌํ๊ธฐ ์ํด InnoSetup์์ ์ค์น ์๋ ์์ถ ํด์ ์์นด์ด๋ธ๋ฅผ ์์ฑํฉ๋๋ค. ๋ชจ๋ ๋จ๊ณ๋ฅผ ๋ฐ๋ณตํ๊ณ ์ถ์ ์ฌ๋๋ค์ ์ํด
์ถ์ฒ : habr.com