1. 程式人生 > 其它 >win10+apache2.4+mod_wsgi4.7+pyhon3.8+django2.2 部署

win10+apache2.4+mod_wsgi4.7+pyhon3.8+django2.2 部署

技術標籤: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下的錯誤日誌