windows下 apache 配置 Django

最近在用Django,研究了一下在apache 下配置Django,踩了好多坑,來記錄一下

由於之前的apache在跑php 程序,用的是默認端口80,想配置php 和django 同時能運行,那麼Django 需要配置另外一個端口:8000,也就是在apache 的配置文件中增加一個<VirtualHost> 設置對應的django 的根目錄就可以,整體的思路就是這樣的,下滿開始配置:

(1)現有系統和軟件的版本:

A  操作系統 :win7 64位

B python :Python 3.6.5 (64位)

C apache 版本:Apache/2.4.33 (Win64)

 

值得注意的是:python 和apache 的版本的位數應該保持一致,由於之前是用phpstudy 的環境搭建的,apache 的版本是32位的,但是python 是64位的導致在apache 加載python時候失敗,之後重新安裝了apache 64位 問題解決,如果版本32/64位 不正確可能會出現下面的錯誤:

Syntax error on line 535 of D:/Apache24/conf/httpd.conf:

Cannot load d:/programdata/anaconda3/python36.dll into server:

%1 \xb2\xbb\xca\xc7\xd3\xd0\xd0\xa7\xb5\xc4 Win32 \xd3\xa6\xd3\xc3\xb3\xcc\xd0\xf2\xa1\xa3

下面簡單介紹下查看版本號的方法:

1)Pyhton

window 進入cmd 命令行後,輸入python 回車:

上圖中紅色方框中的信息就是python版本的位數

2)apache

在cmd 命令行中 進入到apache 的安裝目錄,我的apache 安裝到了D:\Apache24  下,進入到該目錄的bin 文件夾下,會看到httpd.exe文件,然後 ,輸入 httpd -v 回車

(2) 安裝python 的mod_wsgi 模塊

點擊 https://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi  下載apache和python對應的版本,我的apache 是2.24 ,python 是3.6.5 64位,我下載的是 mod_wsgi‑4.5.24+ap24vc14‑cp36‑cp36m‑win32.whl ,下載到python安裝目錄下的Scripts 下,然後在cmd 命令行進入到mod_wsgi‑4.5.24+ap24vc14‑cp36‑cp36m‑win32.whl 這個文件所在的目錄下,輸入:

php install mod_wsgi‑4.5.24+ap24vc14‑cp36‑cp36m‑win32.whl

安裝成功後 輸入 mod_wsgi-express module-config

 

將運行的結果:複製到 apache 的配置文件  d:/Apache24/conf/httpd.conf

LoadFile "d:/programdata/anaconda3/python36.dll"
LoadModule wsgi_module "d:/programdata/anaconda3/lib/site-packages/mod_wsgi/server/mod_wsgi.cp36-win_amd64.pyd"
WSGIPythonHome "d:/programdata/anaconda3"

至此 mod-wsgi 安裝成功。

(3)啓動apache

在命令行中,進入到apache 的安裝目錄:D:/apache24/bin , 輸入命令:

httpd -k start

啓動apache之後,瀏覽器中打開:http://localhost/ 呈現出apache 的啓動頁面:

這說明apache 安裝並啓動成功了,接下來我們來配置一下python的相關信息

(4)在 d:/Apache/conf/httpd.conf 中增加如下配置信息:

Listen 8000 #django 程序的接口

#python
LoadFile "d:/programdata/anaconda3/python36.dll"
LoadModule wsgi_module "d:/programdata/anaconda3/lib/site-packages/mod_wsgi/server/mod_wsgi.cp36-win_amd64.pyd"
WSGIPythonHome "d:/programdata/anaconda3"

 #設置wsgi路徑
WSGIScriptAlias / E:/pro/django/exam/exam/wsgi.py
WSGIPythonPath  E:/pro/django/exam/ #設置請求django 請求的根目錄的路徑,這個要設置,不然會報500錯

注意:上面的配置信息中,WSGIPythonPath 一定要配置好,不然會報500錯誤,在錯誤日誌中能看到報錯信息爲:“ModuleNotFoundError: No module named 'exam' ”

實際上是在瀏覽器訪問地址時候,apache 會指定wsgi 的路徑去尋找對應的wsgi.py, WSGIPythonPath 是指明根目錄,在wsgi.py 中會有 “os.environ.setdefault("DJANGO_SETTINGS_MODULE", "exam.settings")” 如果不指定WSGIPythonPath 會報錯: ModuleNotFoundError: No module named 'exam' 

 virsualhost 配置信息,可以放到httpd.conf 裏,也可以單獨放一個.conf 中,方便維護,我保存在 vhosts.conf中,然後在httpd.conf 裏引入 vhosts.conf: "Include conf/vhosts.conf"

<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName localhost
    ErrorLog D:\Apache24\logs\error.log
    CustomLog D:\Apache24\logs\access.log common
    # 根目錄
    DocumentRoot "D:/Apache24/htdocs"
    <Directory "D:/Apache24/htdocs">
	AllowOverride None
        Options None  
        Require all granted
    </Directory>

</VirtualHost>
<VirtualHost *:8000>
    ServerAdmin [email protected]
    ServerName localhost
    ErrorLog D:\Apache24\logs\error_django.log
    CustomLog D:\Apache24\logs\access_django.log common
    
    # 根目錄
    DocumentRoot "E:/pro/django/"
    <Directory "E:/pro/django/exam/exam">  
        <Files wsgi.py>  
            Require all granted  
        </Files>  
    </Directory>
    
    #設置根目錄
    <Directory "E:/pro/django">  
        Options Indexes FollowSymLinks
	AllowOverride None
	Require all granted
    </Directory>


</VirtualHost>

(5) python的配置文件

1) settings.py

#設置允許訪問的主題頭信息
ALLOWED_HOSTS = ['127.0.0.1','localhost']

2)wsgi.py

import os

from django.core.wsgi import get_wsgi_application

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "exam.settings") #設置成項目的配置文件的路徑

application = get_wsgi_application()

 3)setting.wsgi

import os
import sys
import django.core.handlers.wsgi

sys.path.append(r'E:/pro/django/') #django 項目路徑


os.environ['DJANGO_SETTINGS_MODULE'] = 'exam.settings' #配置文件settings.py 所在路徑
application = django.core.handlers.wsgi.WSGIHandler()

設置完成後重啓apache,然後訪問 http://localhost:8000/ 就能看見django 的網站了

附錄:我的項目:exam 是我用 django-admin創建的項目,目錄在E:/pro/django/

django-admin startproject exam

下面附上我的目錄截圖,方便大家參考:

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