《windwos上apache+django+mod_wsgi+ssl项目部署》之一:Apache文件夹认识、报错解决方案

Apache 功能介绍

一、Apache文件简介

夹内文件如下 启动文件夹 配置文件夹 日志文件这三个比较常用

1.1主文件夹

在这里插入图片描述
在extra有扩展文件夹 里面的httpd-ssl.conf 配置ssl证书的和http-vhosts.conf文件配置虚拟主机的 可以设置多个端口
在这里插入图片描述

1.2配置文价

装完第一件事就是在conf配置文件夹里http.cof文件里改端口和自己对呀的安装路径配置
在这里插入图片描述
2.监听端口设置
在这里插入图片描述
3、默认索引位置 存放起始页面,我们用wsgi的启动模块所以就不要用设置了在这里插入图片描述

1.3Apache mod_wsgi模块简介

Apache HTTP服务器的mod_wsgi扩展模块,实现了Python WSGI标准,可以支持任何兼容Python WSGI标准的Python应用。

  1. WSGI(Web Server Gateway Interface)是一个统一的Python接口标准(PEP 3333),该标准描述了Python应用如何与Web服务器通信,多个Python应用之间如何级联以处理请求。
    WSGI的实现位于Python应用和Web服务器之间,从而支持将兼容的Python应用无缝部署到任何Web服务器上。

  2. Apache服务器对Python WSGI应用的执行模式

1)embedded模式

在Apache的子进程中执行Python WSGI应用。这样,Python WSGI应用将与Apache上的其他应用共享进程。

执行性能高,但需要调整Apache MPM设置。

2)daemon模式(推荐)

Apache启动专用进程执行Python WSGI应用,但是Python WSGI应用需要提供进程监控或WSGI适配器。

执行更安全。

  1. mod_wsgi扩展模块的安装

1)建议安装环境
Python 2.6或Python 3.3以后版本
Apache 2.4以后版本
2)作为Apache的一个扩展模块,以源代码安装到Apache服务器

wget https://github.com/GrahamDumpleton/mod_wsgi/archive/4.5.14.tar.gz
tar xvfz mod_wsgi-4.5.14.tar.gz
./configure
make
make install
LoadModule wsgi_module modules/mod_wsgi.so
service httpd restart
在启动服务器之前,还需要配置Apache服务器以加载mod_wsgi扩展模块,将Web请求转发到该模块处理。
3)作为Python安装包,以源代码安装到Python的虚拟环境

wget https://github.com/GrahamDumpleton/mod_wsgi/archive/4.5.14.tar.gz
tar xvfz mod_wsgi-4.5.14.tar.gz
python setup.py install
4)作为Python安装包,从PyPI在线安装到Python的虚拟环境

pip install mod_wsgi
4.验证安装

利用mod_wsgi-express命令行工具,启动Apache服务器和mod_wsgi扩展模块,无需任何配置。

mod_wsgi-express start-server

1.4Django 的debug和allowed_HOS设置

在这里插入图片描述

1.如果开启了DEBUG模式,那么以后我们修改了Django项目的代码,然后按下ctrl+s,那么Django就会自动的给我们重启项目,不需要手动重启。
2.如果开启了DEBUG模式,那么以后Django项目中的代码出现bug了,那么在浏览器中和控制台会打印出错信息。否则的我们很难寻找到bug的位置,也不方便调试代码。
在生产环境中,禁止开启DEBUG = True,因为当你的网站出错误时,别人能看到你的源代码,而我们也不需要给用户看到这些错误信息。所以需要关掉DEBUG = True,即设置DEBUG = False
如果设置了DEBUG = False,那么就必须设置settings.py中的ALLOWED_HOSTS.
ALLOWED_HOSTS:这个变量是用来设置以后别人只能通过这个变量中的ip地址或者域名来进行访问。

二、报错解决

Apache报错:argumer for all must require all…

一般都是字符或自己打错了,根据提示的第几行去发现
在这里插入图片描述
在写的时候注意 有的末尾有空格 导致识别不了字符
在这里插入图片描述

Django报错:10013访问权限不允许

在这里插入图片描述
这个报错的原因是因为django的端口被占用,只需要把8080端口改成其他的就可以了

检测apachen是否识别到了wsgi启动模块

于是我在原来wsgi.py后缀加了1 看看apachen是否识别到这个一步,果然看了apache的错误日志文件发现了检测出 说明apachen这一端识别的了我们输入的host主机名,只是mod_wsgi启动不成功,
在这里插入图片描述
我们改回来 再到其他文件上加点错误

启动Apache报错:cannot define multiple Listeners on the sa,e IP:prot

在这里插入图片描述
这是由于443端口被占用了,我们把apache配置httpd.conf里的listen443取消注释后,就能正常部署项目

启动apache报错: the requested operation has filed

在这里插入图片描述
这是因为配置出错了,需要去检查配置文件,
1、端口问题被占用
2、django的启动路径有问题
3.mod_wsgi路径有问题
因为python3.5的版本虚拟环境是自带的,所以安装mod _wsgi会只出问题在这里插入图片描述

访问网页报错:forbidden

这是因为权限的原因
在这里插入图片描述
只需要添加以下授权的代码
<Directory “要访问的文件路径”>
Require all granted

访问网页报错:Bad Request

在这里插入图片描述

访问网页一直在加载转

在httpd.conf末尾里加上这句 ,这句是用python解释器强制解析识别不了库,这个问题困扰了我好几天

WSGIApplicationGroup %{GLOBAL}

这是因为你访问的443端口要走https协议 默认是走http协议,所以你要再访问的前缀http://改成 https

三、安装ssl证书

参考:https://www.cnblogs.com/potatog/p/10670776.html

3.1打开ssl的拓展模块

要打开证书扩展模块,证书文件才会程出现

把主配置文件httpd.conf的
LoadModule ssl_module modules/mod_ssl.so 取消注释
在这里插入图片描述
Include conf/extra/proxy-html.conf也取消注释
在这里插入图片描述
然后在#Include conf/extra/httpd-ssl.conf下面写一行加一行配置信息

Include conf/extra/ssl.conf

就是我们用自己的配置文件 不用原来的http-ssl.conf,因为原来的内容太多

在这里插入图片描述

3.2导入证书到配置中

打开extra文件下新建一个ssl.conf配置文件
在这里插入图片描述

3.3导入腾讯云ssl证书

这是我们腾讯云免费申请的ssl证书 下载下来后就有三个文件
在这里插入图片描述
在apachen的目录下新建cert文件夹 复制三个证书文件到cert目录下

再到Apache24\conf\extra下的我们自己新建ssl.conf里添加代码

 Listen 443
<VirtualHost *:443>
ServerName www.chaochaotool.top
ServerAlias example.com
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
SSLCertificateFile "${SRVROOT}/cert/2_www.chaochaotool.top.crt"
SSLCertificateKeyFile "${SRVROOT}/cert/3_www.chaochaotool.top.key"
SSLCertificateChainFile "${SRVROOT}/cert/1_root_bundle.crt"
DocumentRoot "C:/xmprogram/cqc/cqc_01"
<Directory "C:/xmprogram/cqc/cqc_01/">
    Options +Indexes +FollowSymLinks +ExecCGI
    AllowOverride all
    Order allow,deny
    Allow from all
    Require all granted
  </Directory>
</VirtualHost>

在这里插入图片描述
ssl证书配置是下面这样按照路径改 其中
${SRVROOT}的意思就是我们在httpd.conf里面设置的apache配置的根目录
在这里插入图片描述
给大家科普一下,http+ssl=https就是加密的传输方式,我们与网站进行连接都是三次握手的方式传输文件,所以会访问对方我公钥文件,私钥用来辨别身份的,只有自己的私钥可以解开自己的公钥。以下文件注意路径:

这是ssl的设置文件

#ssl的设置文件
SSLCertificateChainFile "${SRVROOT}/cert/1_root_bundle.crt"    

在这里插入图片描述

#网站域名的公钥文件
SSLCertificateFile "${SRVROOT}/cert/2_www.chaochaotool.top.crt"  

在这里插入图片描述

#网站域名的私钥文件
SSLCertificateKeyFile "cert/3_www.chaochaotool.top.key"

在这里插入图片描述

配置完后用https访问我们自己的域名,就可以成功咯

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

&超

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值