Windows Server2016使用Apache 部署Django的Websocket

最近的项目需要做一个聊天室,自然而然想到了使用websocket,但是我在网上在了半天,都没有找到合适的解决办法,东拼西凑,解决了这个问题,下面说一下了的解决流程

配置环境

Python版本:3.6
Mysql版本:8.0.19
Apache版本:Apache2.4

第一步

首先打开Apache的conf文件夹下的httpd.conf文件,
1、搜索LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so,删除他前面的#号
2、搜索LoadModule proxy_module modules/mod_proxy.so,删除他前面的#号

打开配置虚拟环境的那个文件,这得看你自己是怎么配置的,有的人是在vhost-ssl.conf文件,有的人是在
httpd-ssl.conf,有的是在httpd-vhosts.conf文件,关键在于你自己是怎么配置的,如果你还没有配置,可以去看我的另外一篇文章。
这里我打开的的vhost-ssl.conf文件

Listen 443
#自定义ssl
#第二个
<VirtualHost *:443>
	# 项目根路径,经测试,这个写到项目所在文件夹或者直接进入文件夹内都可以
	DocumentRoot "C:/wwwroot/mxg"
	# 这里填写域名,没有域名随便填写即可
	ServerName 你的域名
	ServerAlias 你的域名
	SSLEngine on
	SSLProtocol TLSv1 TLSv1.1 TLSv1.2
	SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
	SSLCertificateFile "证书crt"
	SSLCertificateKeyFile "key文件路径"
	SSLCertificateChainFile "1_root_bundle.crt文件路径"
	# 项目的wsgi.py文件,注意目录前有`/`和空格
	
	WSGIScriptAlias / C:/wwwroot/mxg/mxg/wsgi.py
	<Directory "C:/wwwroot/mxg/mxg">
		Options Indexes FollowSymLinks
		AllowOverride None
		Require all granted
	</Directory>
	 # 静态文件路径
	Alias /static C:/wwwroot/mxg/static
	<Directory C:/wwwroot/mxg/static>
		AllowOverride None
		Options None
		Require all granted
	</Directory>

	ProxyRequests Off
	ProxyPass /chat_room/ ws://127.0.0.1:8000/chat_room/
	ProxyPassReverse /chat_room/ ws://127.0.0.1:8000/chat_room/
	# 错误日志记录文件
	ErrorLog "C:/wwwroot/mxg/logs/access_ate.log"
	TransferLog "C:/wwwroot/mxg/logs/access.log"
</VirtualHost>    

这里的 /chat_room/ 就是我的html文件中写的websocket路径

Windows Server2016使用Apache 部署Django的Websocket_第1张图片

关键在于你得在服务器上面还得再开启一个窗口,用于执行转发过来的ws信息,打开命令行窗口,把你的django项目运行起来,这样就可以正常使用websocket了

第二步

python manage.py runserver 127.0.0.1:8000

或者也可以直接创建一个bat文件
内容如下:

@echo off
python c:/wwwroot/mxg/manage.py runserver 127.0.0.1:8000 #这里的python后面就是DJANGO项目manage.py 存在的路径

保存之后双击运行它就可以了。现在就只能这样去运行了,暂时我也没有想到其他的办法,有高招的朋友,欢迎下面留言。

你可能感兴趣的:(python学习)