Django開發學習筆記04-windows+Apache+Django生產環境部署

1.生產環境:

  • 阿里雲windows server 2008 R2 Enterprise(64位)
  • python-3.7.4-amd64
  • mysql-5.6.43-winx64
  • pip install PyMySQL=0.9.3
  • pip install django=2.2.5

2.下載與安裝Apache

2.1

https://www.apachehaus.com/cgi-bin/download.plx#APACHE24VC15

2.2解壓縮,修改Apache24\conf\httpd.conf 文件中的apache路徑和端口

....
#Define SRVROOT "/Apache24"
Define SRVROOT "C:\zwl\Apache24"
ServerRoot "${SRVROOT}"
....
Listen 0.0.0.0:8008
....
ServerName localhost:8008
.....

2.3打開C:\zwl\Apache24\bin\httpd.exe,

在瀏覽器輸入http://127.0.0.1:8008/

網頁出現 It works 則表示配置成功,否則爲失敗,需仔細檢查上述修改是否正確

3.安裝mod_wsgi模塊

https://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi

 3.1把whl文件改成zip,解壓縮,把裏面的mod_wsgi.so拷貝到C:\zwl\Apache24\modules路徑下,httpd.conf 中新增一段配置:

#添加mod_wsgi.so 模塊
LoadModule wsgi_module modules/mod_wsgi.so

 3.2若mod_wsgi解壓後找不到mod_wsgi.so文件(如有跳過此步驟)

運行cmd,進入該文件目錄執行安裝操作:

pip3 install "mod_wsgi-4.6.7+ap24vc15-cp37-cp37m-win_amd64.whl"
mod_wsgi-express module-config

把三行內容複製到httpd.conf:

#添加mod_wsgi.so 模塊
LoadFile "c:/users/administrator/appdata/local/programs/python/python37/python37.dll"
LoadModule wsgi_module "c:/users/administrator/appdata/local/programs/python/python37/lib/site-packages/mod_wsgi/server/mod_wsgi.cp37-win_amd64.pyd"
WSGIPythonHome "c:/users/administrator/appdata/local/programs/python/python37"

4.配置Apache與Django的接口

4.1.打開Apache配置文件 httpd.conf,在末尾增加一段配置:

#添加mod_wsgi.so 模塊
LoadFile "c:/users/administrator/appdata/local/programs/python/python37/python37.dll"
LoadModule wsgi_module "c:/users/administrator/appdata/local/programs/python/python37/lib/site-packages/mod_wsgi/server/mod_wsgi.cp37-win_amd64.pyd"
WSGIPythonHome "c:/users/administrator/appdata/local/programs/python/python37"

#指定myweb項目的wsgi.py配置文件路徑
WSGIScriptAlias / C:/zwl/py/django02/django02/wsgi.py

#指定項目路徑
WSGIPythonPath C:/zwl/py/django02

<Directory C:/zwl/py/django02/django02>
<Files wsgi.py>
    Require all granted
</Files>
</Directory>


Alias /static C:/zwl/py/django02/static
<Directory C:/zwl/py/django02/static>
    AllowOverride None
    Options None
    Require all granted
</Directory>

4.2.打開django項目setting配置:

注:我用的是'*'

DEBUG = False

ALLOWED_HOSTS = ['127.0.0.1','localhost']  #允許訪問的ip。也可以用'*'表示,代表不受限制

4.3重啓bin\httpd.exe,輸入URL

我的用的是阿里雲服務器,所以可以用外網訪問

 

 配置過程中遇到的問題解決:

1.apache開啓後,無法訪問django項目。可查看logs下的error報錯。

2.

django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.3 or newer is required; you have 0.9.3

這個錯誤的解決是pymysql引起的,只需:

找到Python安裝路勁下的C:\Users\Administrator\AppData\Local\Programs\Python\Python37\Lib\site-packages\django\db\backends\mysql\base.py文件

將文件中的如下代碼註釋

if version < (1, 3, 3):
    raise ImproperlyConfigured("mysqlclient 1.3.3 or newer is required; you have %s" % Database.__version__)

3.因爲我用的是阿里雲,用外網IP訪問不通。因爲是阿里雲需要在控制檯對雲服務器進行端口安全配置

 

 apache隨電腦啓動,可以添加進服務裏

cmd下用cd命令切換到原來的apache安裝路徑的bin目錄下
httpd -k install #通過該命令,被安裝的服務名稱是Apache2.2,使用的配置文件是conf\httpd.conf
httpd -k install -n "service name" #如果想指定服務名稱,請採用該命令
httpd -k install -n "service name" -f "D:\conf\custom.conf" #如果想指定服務名稱,並且使用定製的配置文件,請使用該命令


httpd -k start #啓動apache服務
httpd -k stop 或 httpd -k shutdown #停止apache服務
httpd -k restart #重啓apahce服務

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章