win10+apache2.4+mod_wsgi4.7+pyhon3.8+django2.2 部署
阿新 • • 發佈:2020-12-08
技術標籤:apache
環境:
系統 win10
apache2.4 win64
mod_wsgi-4.7.1-cp38-cp38-win_amd64(根據具體python和系統版本下載)
python 3.8
django 2.2
mysql5.7
python3.8 和django2.2,mysql5.7 的部署其他文章有寫,在此忽略
1、apache下載、安裝與配置
1.1、下載地址:
https://www.apachelounge.com/download/
下載的是 httpd-2.4.46-win64-VS16.zip
1.2、預設根目錄路徑是c:
解壓把內部Apache24目錄拷貝到C盤 修改 C:\Apache24\conf\httpd.conf 監聽8009埠 Listen 0.0.0.0:8009
1.3、C:\Apache24\bin>httpd.exe
瀏覽器測試:
http://127.0.0.1:8009
瀏覽器返回:
It works!
表示apache安裝OK
2、mod_wsgi下載、安裝與配置
2.1、下載
https://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi 說明: Mod_wsgi: a WSGI adapter module for the Apache HTTP Server 2.4. Linked against the VC16 binaries from Apache Lounge and VC9 binaries from Apache House. See Running mod_wsgi on Windows for version (in)compatibilities. 下載的是 mod_wsgi‑4.7.1‑cp38‑cp38‑win_amd64.whl python38 window64位
2.2、安裝
F:\apache_mod_wsgi_django2.2>pip install mod_wsgi-4.7.1-cp38-cp38-win_amd64.whl
Processing f:\softwares\special\apache_mod_wsgi_django2.2\mod_wsgi-4.7.1-cp38-cp38-win_amd64.whl
Installing collected packages: mod-wsgi
Successfully installed mod-wsgi-4.7.1
2.3、生成apache載入mod_wsgi的命令
C:\Python38\Scripts>mod_wsgi-express module-config LoadFile "c:/python38/python38.dll" LoadModule wsgi_module "c:/python38/lib/site-packages/mod_wsgi/server/mod_wsgi.cp38-win_amd64.pyd" WSGIPythonHome "c:/python38"
3、修改 C:\Apache24\conf\httpd.conf 新增
LoadFile "c:/python38/python38.dll"
LoadModule wsgi_module "c:/python38/lib/site-packages/mod_wsgi/server/mod_wsgi.cp38-win_amd64.pyd"
WSGIPythonHome "c:/python38"
WSGIScriptAlias / D:/mysite/wsgi.py
WSGIPythonPath D:/mysite
<Directory D:/mysite>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
4、遮蔽apache預設的配置
#<Directory "${SRVROOT}/htdocs">
# Options Indexes FollowSymLinks
# AllowOverride None
# Require all granted
#</Directory>
5、重新啟動httpd
C:\Apache24\bin>httpd.exe
6、通過瀏覽器訪問http://127.0.0.1:8009
一切正常
7、django專案目錄結構說明
d:/mysite
d:/mysite/wsgi.py
import sys
import os
import tempfile
p = os.path.abspath(os.path.dirname(__file__))
sys.path.insert(0, os.path.split(p)[0])
os.environ["DJANGO_SETTINGS_MODULE"] = "settings"
os.environ["PYTHON_EGG_CACHE"] = os.path.join(tempfile.gettempdir(),".python-eggs")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
d:/mysite/settings.py
d:/mysite/myapp/models.py
專案的根目錄名稱不要命名為platform
和python裡面的platform庫衝突,會報錯,
可以檢視apache下的錯誤日誌