나는 사용하지 않지만 문제를 해결해서 한번 적어본다
windows 환경에서 apache와 flaks 를 연동시키는데 있어서 아무리 따라해봐도 해결이 되지 않았다.
결론적으로 python path 문제였는데 많은 사람들에게 도움이 되었으면 해서 적어본다.
필요한 환경
Python
Git
apache
Visual Studio C++
No Module name "encodings" error
#httpd.conf 에서 WSGIPythonHome에 있던 path에 /include 추가
ex)
WSGIPythonPath {WSGIPythonHome path}/include
아나콘다 환경에서도 똑같다
https://www.apachelounge.com/download/
에서 다운로드 받은 apache 압축파일을 압축을 푼 후 C: 에 Apache24 폴더만 옮긴다.
그 후 C:\Apache24\ 를 환경변수를 추가해준다
여기서 나는 사실 Anaconda 환경에서 진행을 하였지만 혹시나 싶어서 python을 따로 설치를 한 후 진행을 하였다.
Version : 3.8.6
버전은 충돌이 날 수도 있다는 얘기가 있어서 많은 자료들이 사용하고 있는 버전으로 진행을 하였다.
https://www.python.org/downloads/
에서 파이썬을 설치하고 설치 과정에서 PATH 추가를 잊지않는다.
윈도우 10 환경에서 Python을 설치하면 cmd에서
python --version
을 하여도 버전이 나오지 않는 문제가 발생하였다.
이 문제의 해결법은 윈도우 왼쪽 하단 찾기에서 앱 실행 별칭 에 들어가서 python 관련 관리자들을 해제한다.
이 부분을 꼭 해결을 해야한다.
문제가 없다면 다음을 진행한다.
pip install flask
를 진행한다.
그 후 https://github.com/GrahamDumpleton/mod_wsgi 에 있는 파일들을
git clone https://github.com/GrahamDumpleton/mod_wsgi.git
을 진행하고
cd mod_wsgi
python setup.py intsall
을 진행한다.
나의 파일 디렉토리 구조는 다음과 같다.
C:Apache24 - flask - app - hello_world - __init__.py
|
- hello_world.wsgi
파이썬 파일은
# __init__.py 파일
from flask import Flask
app = Flask(__name__)
@app.route('/test')
def hello_world():
return 'hello world'
if __name__ == "__main__":
app.run()
wsgi 파일은
# hello_world.wsgi 파일
import sys
sys.path.append('C:\\Apache24\\flask\\app\\hello_world')
from __init__ import app as application
이렇게 되어있다.
flask의 구성은 일단 이렇게 끝났다.
C:\Apache24\conf 에서
httpd.conf 파일을 수정을 해야한다.
(사실 이리저리 많이 만져보느라 잘 기억은 안나지만 핵심인 것 같다.)
# 37번째 줄
Define SRVROOT "C:/Apache24"
# 60번째 줄
Listen 5000
# 227번째 줄
ServerName localhost:5000
# 236번째 줄 (권한부여)
Require all granted
# 또는 주석처리
후 cmd 에서
mod_wsgi-express module-config
ex)
LoadFile
LoadModule wsgi_module
WSGIPythonHome
에 나온 값들을 맨 마지막 줄에 다 넣어준다
그 후 WSGIPythonPath 를 추가해주는데 WSGIPythonPath 는 WSGIPythonHome 에 나와있는 path에 /include를 추가해준다
WSGIPythonPath {WSGIPythonHome path}/include
다음을 맨 마지막 줄에 넣어주고
Include conf/hello_world.conf
hello_world.conf 파일을 생성해준다.
<VirtualHost *:5000>
ServerName localhost:5000
WSGIScriptAlias / C:/Apache24/flask/app/hello_world.wsgi
<Directory C:/Apache24/flask/app/hello_world>
<Files hello_world.wsgi>
Require all granted
</Files>
</Directory>
</VirtualHost>
여기까지 왔다면 Apache 설정은 거의 끝이다.
C:\Apache24\bin 폴더에서
httpd –k install
httpd –k restart
진행 후
localhost:5000/test
를 들어가본다.
만약 안된다면
C:\Apache24\logs 폴더에서 error.log 확인
지우고 저장하고 다시 httpd –k restart 을 진행하고 다시 확인하면 쉽게 확인 할 수 있다.
잘 읽고 문제 해결하고 갑니다.