最近的项目需要做一个聊天室,自然而然想到了使用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路径
关键在于你得在服务器上面还得再开启一个窗口,用于执行转发过来的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 存在的路径
保存之后双击运行它就可以了。现在就只能这样去运行了,暂时我也没有想到其他的办法,有高招的朋友,欢迎下面留言。