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 webmaster@dummy-host2.example.com
    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 webmaster@dummy-host2.example.com
    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

下面附上我的目录截图,方便大家参考:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值