[Python 인터넷] Windows에서 Django와 Apache 연동하기

설치

파이썬이 설치되어 있다고 가정하고 아래의 파일을 설치한다.

  1. Apache - 다운로드
  2. Visual Studio Build Tools - 다운로드
  3. Virtualenv
  4. mod_wsgi

가상환경에서 진행하기 위해 virtualenv를 설치한다. 파이썬이 설치되어 있다면 pip virtualenv 명령어로 설치할 수 있다. C:/Users/python 폴더에 가상환경을 만든다고 가정하고 virtualenv newEnv 명령어로 newEnv라는 새로운 가상환경을 만든다. 가상환경을 실행할 때는 call newEnv/Scripts/activate나 C:/Users/python/newEnv/Scripts 경로에 들어가서 cmd 창에서 activate라고 치면 가상환경이 실행된다. 가상환경을 실행한 후 pip install django 명령어로 django와 그 외 필요한 패키지들을 설치하도록 한다. 마지막으로 mod_wsgi를 사용하기 위해 pip install mod_wsgi 명령어로 설치해준다.

$ C:/Users/python>pip virtualenv
$ C:/Users/python>virtualenv newEnv
$ C:/Users/python>call newEnv/Scripts/activate
$ (newEnv) C:/Users/python>pip install django
$ (newEnv) C:/Users/python>pip install mod_wsgi

wsgi.py

settings.py 파일이 있는 폴더에는 wsgi.py 파일이 존재한다. 여기서는 wsgi_win.py 파일명으로 새로운 wsgi 파일을 생성한다. 아래의 C:/Users/python/newEnv는 각자의 가상환경이 설치된 경로에 맞추고 myapp 또한 각자의 어플리케이션 이름으로 바꾸어주면 된다.

# wsgi_win.py

activate_this = 'C:/Users/pytyon/newEnv/Scripts/activate_this.py'

exec(open(activate_this).read(),dict(__file__=activate_this))

import os
import sys
import site

# 가상환경의 패키지 추가
site.addsitedir('C:/Users/pytyon/newEnv/Scripts/Lib/site-packages')

# PYTHONPATH에 application directory 추가
path = os.path.abspath(__file__+'/../..')
if path not in sys.path:
    sys.path.append(path)

os.environ['DJANGO_SETTINGS_MODULE'] = 'myapp.settings'
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapp.settings")

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

settings.py

settings.py에서 static 파일과 media 파일에 대한 설정이 필요하다. 아래와 같이 설정한 후 python manage.py collectstatic 명령어를 실행한다. 명령어를 실행한 후에는 모든 static 파일들이 static 폴더에 저장되고 후에 저장되는 media 파일 또한 media 폴더에 저장된다. 그리고 urls.py에 static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)도 추가해준다.

# myapp/settings.py
STATIC_URL = '/static/'
STATICFILE_DIRS = (
    os.path.join(BASE_DIR, 'static')
)
STATIC_ROOT = os.path.join(BASE_DIR, 'static')

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

# myapp/urls.py
from django.contrib import admin
from django.conf.urls import url
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    path('admin/', admin.site.urls),
	...   	
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

Apache

압축 파일을 해제한 후, Apache24 폴더를 C 드라이브로 옮기고 C:/Apache24/conf 폴더에 있는 httpd.conf 파일을 나의 환경에 맞게 수정해 주어야 한다. 먼저 ServerName을 검색하여 www.example.com:80으로 되어 있는 주소를 각자 도메인과 포트에 맞게 수정한다.

ServerName www.yourdomain.com:80

위의 가상환경이 실행된 cmd 창에서 mod_wsgi-express module-config 명령어를 실행했을 때 나오는 결과들을 httpd.conf 파일에 그대로 입력한다. 내용은 각자의 환경 설정마다 다르다.

LoadFile "c:/users/myuser/appdata/local/programs/python/python37/python37.dll"
LoadModule wsgi_module "c:/users/newenv/lib/site-packages/mod_wsgi/server/mod_wsgi.cp37-win_amd64.pyd"
WSGIPythonHome "c:/users/newenv"

그 외에 추가로 설정해야 하는 것들은 아래와 같다.

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

WSGIScriptAlias / "c:/users/python/myapp/myapp/wsgi_win.py"
WSGIPythonPath "c:/users/python/myapp/myapp"

<Directory "c:/users/python/myapp/myapp">
<Files wsgi_win.py>
Require all granted
</Files>
</Directory>

Alias /static/ c:/users/python/myapp/static/
<Directory c:/users/python/myapp/static/>
Require all granted
</Directory>

Alias /media/ c:/users/python/myapp/media/
<Directory c:/users/python/myapp/media/>
Require all granted
</Directory>

아파치 서버를 실행할 때 CORS 에러가 나서 아래의 설정을 추가해주었다. error.log에서 print()에 출력되는 내용을 보기 위해 WSGIRestrictStdout Off도 추가해준다.

<Directory c:/users/python/myapp>
    Header set Access-Control-Allow-Origin "*"
</Directory>

WSGIPassAuthorization On
WSGIRestrictStdout Off

C:/Apache24/conf/extra 폴더에 htpd-vhosts.conf 파일을 열어 가상환경 설정을 추가한다.

<VirtualHost *:80>
    ServerName localhost 
    WSGIPassAuthorization On
    Header set Access-Control-Allow-Origin "*"    
    ErrorLog "logs/error.log" common
    CustomLog "logs/access.log" common 
    WSGIScriptAlias /  "c:/users/python/myapp/myapp/wsgi_win.py"
    <Directory "c:/users/python/myapp/myapp">
        <Files wsgi_windows.py>
            Require all granted
        </Files>
    </Directory>

    Alias /static "c:/users/python/myapp/myapp/static"
    <Directory "c:/users/python/myapp/myapp/static">
        Require all granted
    </Directory>  
</VirtualHost>

[출처] https://seon54.github.io/python/2019/07/26/django-apache-windows/

 

 

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
57 [python 인공지능] Deploy ML models with FastAPI, Docker, and Heroku | Tutorial 졸리운_곰 2025.07.08 467
56 [python 인공지능] [VSCode] VSCode에서 ipynb 파일을 HTML(PDF 등..)로 졸리운_곰 2025.05.27 289
55 [Python 인공지능] [파이썬을 이용한 한글 NLP] 03. 간단한 키워드 추출기 졸리운_곰 2025.01.29 458
54 [Python 인공지능] [ 한글 키워드 시각화 ] 파이썬 python 텍스트 마이닝 한글 ( 워드 클라우드 WordCloud, squrify 트리맵으로 빅데이터 마스터) file 졸리운_곰 2025.01.29 398
53 [Python 인공지능] 기계 학습의 A to Z : IPython notebook과 scikit-learn을 활용한 기계 학습 file 졸리운_곰 2024.08.10 523
52 [python] 인공지능 python : 한글 문서 자동 요약 - lexrank 졸리운_곰 2023.07.06 404
51 [python] 인공지능 katiehouse / django-scikit-learn-tutorial file 졸리운_곰 2023.06.03 664
50 [python] [Anaconda]가상환경 설치,삭제 file 졸리운_곰 2022.12.03 405
49 [python][머신러닝] Scikit-learn Tutorial: Machine Learning in Python file 졸리운_곰 2022.11.29 497
48 [python] 파이썬(sklearn) 사이킷런(sklearn) 기초 졸리운_곰 2022.08.20 321
47 [python] scikit-learn이란 file 졸리운_곰 2022.08.20 455
46 [anaconde3][python] Create environment for tensorflow 1.4 in Anaconda 3 졸리운_곰 2022.07.02 563
45 [python][인공지능] [TensorFlow] Anaconda 가상환경 이용하여 TensorFlow GPU 설치 졸리운_곰 2022.01.20 438
44 [Python 인공지능] TextRank 를 이용한 키워드 추출과 핵심 문장 추출 (구현과 실험) file 졸리운_곰 2021.11.22 597
43 [python][인공지능] FLASK를 이용하여 PYTHON에서 PYTORCH를 REST API로 배포하기 졸리운_곰 2021.03.20 364
42 [python 파이썬] Creating REST API for TensorFlow models file 졸리운_곰 2021.02.01 488
41 [python 파이썬 인공지능] Keras 모델을 REST API로 배포해보기 file 졸리운_곰 2021.02.01 411
40 [파이썬 머신러닝] Scikit-learn 기초 졸리운_곰 2020.01.31 579
39 파이썬으로 간단한 뉴럴 네트워크 만들기 How to Create a Simple Neural Network in Python file 졸리운_곰 2020.01.29 22636
38 Keras를 활용한 주식 가격 예측 file 졸리운_곰 2019.02.25 983
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED