魔缇Smsot2.0 websocket配置教程

为什么要启用websocket?
WebSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端。
通过websocket可以实现魔缇Smsot2.0中的即时聊天、即时通知等功能。
配置参数
https启用密钥配置
在socket/Applications/smsotstart_gateway.php
中设置
'local_cert' => 'fullchain.pem', // 也可以是crt文件
'local_pk' => 'privkey.pem',//private key文件
修改fullchain.pem
和privkey.pem
的具体引用位置
后台需要配置的参数
服务器IP地址:0.0.0.0
外网websocket端口:9011
通信进程数:5
内网IP地址:127.0.0.1
内部通讯起始端口:9012
服务注册端口:9020
启动服务
温馨提示
启动服务之前,请检查以下函数是否解除禁用
pcntl_fork
pcntl_alarm
pcntl_signal_dispatch
pcntl_wait
pcntl_signal
使用终端启动start.php
进入socket
目录,以daemon守护进程方式启动
温馨提示:守护进程的方式启动,在关闭终端后依旧有效。
php start.php start -d
如果你不会终端启动,如果使用宝塔面板,可以使用下面的教程
使用Supervisor管理器启动
![图片[2]-魔缇Smsot2.0 websocket配置教程-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2021/09/20210930005702256-1024x633.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
点击添加守护进程>运行目录
![图片[3]-魔缇Smsot2.0 websocket配置教程-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2021/09/20210930005738770.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
选择socket
目录,然后在启动命令上填写
php start.php start
![图片[4]-魔缇Smsot2.0 websocket配置教程-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2021/09/20210930010227753.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
点击启动
即可
![图片[5]-魔缇Smsot2.0 websocket配置教程-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2021/09/20210930010300839.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
![图片[6]-魔缇Smsot2.0 websocket配置教程-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2021/09/20210930010325708.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
这里会显示已经启动成功了,如果提示启动进程异常
,请参考后面的相关禁用函数需要解除。
![图片[7]-魔缇Smsot2.0 websocket配置教程-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2021/09/20210930010455490.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
![图片[8]-魔缇Smsot2.0 websocket配置教程-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2021/09/20210930011421245.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
启动报错
解除相关函数禁用
如果启动出现报错情况,请解除相关函数的禁用:pcntl_fork
pcntl_alarm
pcntl_signal_dispatch
pcntl_wait
pcntl_signal
如果还有提示XXXX disabled for unsecurity reason的
也请您自行解除禁用
提示进程已占用
在启动异常后,发现日志里提示进程端口已经被占用。
我们可以用下面命令看下,进程号
ps -aux |grep worker
然后使用kill -9
把进程挨个干掉就好了
![图片[9]-魔缇Smsot2.0 websocket配置教程-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2021/09/20210930012523837-1024x459.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
开机自启动设置
不经常重启服务器的不建议设置,自己给自己找麻烦。启动了之后手动输入一下就行了,或者按照上述Supervisior管理器部署上就行了。如果你头比较铁,可以研究下,通过系统服务来启动websocket,使用下面的方法则不需要上面的Supervisior管理器
创建service文件
在/lib/systemd/system
创建workerman.service
[Unit]
Description=workerman
After=network.target
[Service]
Type=forking
ExecStart=/www/server/php/70/bin/php /www/wwwroot/ycbstzx.cn/socket/start.php start -d
ExecReload=/www/server/php/70/bin/php /www/wwwroot/ycbstzx.cn/socket/start.php restart
ExecStop=/www/server/php/70/bin/php /www/wwwroot/ycbstzx.cn/socket/start.php stop
PrivateTmp=true
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
这里参数中/www/server/php/70/bin/php
是宝塔默认安装php7.0的路径,/www/wwwroot/ycbstzx.cn/start.php
是我们启动websocket文件的路径。
添加好该文件之后要重启一下,才能生效。重启之后,我们运行下面的命令启动服务
systemctl start workerman.service
![图片[10]-魔缇Smsot2.0 websocket配置教程-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2021/09/20210930014707591-1024x322.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
可以通过下面命令检测是否处于active
启动状态,如果不是可以看到报错的情况
systemctl status workerman.service
然后,我们将服务设置成开机启动就好了
systemctl enable workerman.service
![图片[11]-魔缇Smsot2.0 websocket配置教程-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2021/09/20210930014833704-1024x66.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
- 最新
- 最热
只看作者