部署Apache服务器

1、apache服务的安装这里不做赘述,因为网上一大堆。

链接:https://blog.csdn.net/qq_24394093/article/details/90550134

安装Python环境

链接:https://blog.csdn.net/L_15156024189/article/details/84831045

为Apache配置Python环境

1、打开apache安装目录下apache/conf/http.conf配置文件

我们需要添加的配置项目如下(本文以windows为例子,如果是linux环境,更换路径即可):

Listen 8000 # 配置程序端口
LoadFile "c:/users/29582/appdata/local/programs/python/python35/python35.dll" # 配置python库加载
LoadModule wsgi_module "c:/users/29582/appdata/local/programs/python/python35/lib/site-packages/mod_wsgi/server/mod_wsgi.cp35-win_amd64.pyd" # 配置python环境及静态可执行pyd文件
WSGIPythonHome "c:/users/29582/appdata/local/programs/python/python35" # 配置python.exe路径
WSGIScriptAlias / C:/Users//Desktop/IVSWebServer/WebADM/WebADM/wsgi.py # 配置启动文件
WSGIPythonPath C:/Users//Desktop/IVSWebServer/WebADM #配置项目路径 <Directory C:/Users//Desktop/IVSWebServer/WebADM/WebADM> # 授权
<Files wsgi.py>
Require all granted
</Files>
</Directory>

至此,如果你仅仅是使用python来部署你的django程序的话,就已经可以启动程序,重启apache,环境即部署成功,不需要关注下一步。

websocket处理

如果你的代码中使用到了websocket,那上述步骤无法让你的程序成功运行

你的程序可能报以下错误:liveVideo.vue?cd97:480 WebSocket connection to 'ws://192.168.222.146:8000/analysis/longconnect/' failed: Error during WebSocket handshake: Unexpected response code: 400

那就表示你的websocket在apache无法正常运行。

1、首先我们先了解下程序原本的运行方式:

如果开发环境是在本地,采用python manage.py runserver 127.0.0.1:8000来运行程序的话,前端发送的websocket请求可以直接发送到127.0.0.1:8000这台服务器程序上。

但是如果你使用apache服务器,apache会过滤掉websocket请求,所以才会报错。

apache支持代理,可通过代理将所有的websocket请求转发到另外一台专门处理websocket的服务器上处理

原先请求流程图如下:

异常情况流程同意图:

解决方案流程图:

图中的django程序有两个,虽然名字相同,程序相同,但是跑的是两个服务(一个是apache启动的,一个是命令行启动的)。

根据上述流程图我们可以知道apache无法将ws直接转发给dajngo程序,可以这么理解如果apache代码的django程序是127.0.0.1:8000端口的服务,那么websocket无法通过apache转发到8000端口,那是不是我们就没有解决方案了呢??

答案是肯定有解决方案的,通过查询apache官方的文档:http://httpd.apache.org/docs/2.0/mod/mod_proxy.html#page-header

我们看到,apache是支持代理websocket

具体配置方式如下:

1、打开apache安装目录下apache/conf/http.conf配置文件使能mod_proxy.so、mod_proxy_wstunnel.so(将#号去掉即为使能),用来处理ws和wss服务

2、打开apache安装目录下apache/conf/http.conf配置文件在最下方配置

如果此解决方案对您有帮助,记得给我点赞哈,如有疑问欢迎联系qq:295823911一起探讨。

最新文章

  1. 在CHROME里安装 VIMIUM 插件, 方便操作
  2. Python实战 :2017国考职业表excel转数据库,再查询生成excel
  3. jquery处理json对象
  4. 网站推广优化(SEO,网站关键字优化,怎么优化网站,如何优化网站关键字)
  5. Moon.Orm 5.0 (MQL版) 实战实例
  6. DEDECMS中直接通过数据库插入文章
  7. android之dialog
  8. 用vim处理字符的大小写转换
  9. uva 11731 - Ex-circles
  10. mysql数据类型——TEXT和Blob
  11. C++ Primer 5th 第13章 拷贝控制
  12. android学习笔记---63-PopupWindow,泡泡窗口的实现
  13. CSS样式的优先机制
  14. nexus私服搭建及maven生命周期
  15. C++中memset()函数的作用
  16. 69.js--点击事件等比例弹出层div
  17. NC 63凭证辅助相关表
  18. 《Linux内核分析》第六周学习笔记
  19. 【vue报错】——listen EADDRINUSE :::8080 解决方案
  20. mysql服务启动、停止、重启

热门文章

  1. apache 添加多个站点
  2. Netty 学习笔记(3) ------ ChannelPipeline 和 ChannelHandler
  3. jmeter零散知识点
  4. 一些非常实用的git命令
  5. Flutter + Android 混合开发
  6. jsp课堂笔记3
  7. cli框架 获取 命令行 参数
  8. Windows下给PHP安装redis扩展
  9. Java 线程池记录
  10. mac下高效安装 homebrew 及完美避坑姿势 (亲测有效)