0
点赞
收藏
分享

微信扫一扫

Linux centos 安装Workerman 重启

ivy吖 2022-07-27 阅读 78


一、安装  官方手册

​​http://doc.workerman.net/315116​​

Linux centos 安装Workerman 重启_.net

 

1.1、 安装错误:

 WARNING: channel "pecl.php.net" has updated its protocols, use "pecl channel-update pecl.php.net" to update

Linux centos 安装Workerman 重启_php_02

解决办法:

Linux centos 安装Workerman 重启_.net_03

pecl channel-update pecl.php.net

1.2 错误:

Warning: popen() has been disabled for security reasons in OS/Guess.php

警告:出于安全原因,popen()已经在OS/Guess.php中被禁用

Warning: popen() has been disabled for security reasons in OS/Guess.php on line 241
PHP Warning: popen() has been disabled for security reasons in /www/server/php/56/lib/php/OS/Guess.php on line 241

Warning: popen() has been disabled for security reasons in /www/server/php/56/lib/php/OS/Guess.php on line 241

Warning: fgets() expects parameter 1 to be resource, null given in OS/Guess.php on line 242
PHP Warning: fgets() expects parameter 1 to be resource, null given in /www/server/php/56/lib/php/OS/Guess.php on line 242

Warning: fgets() expects parameter 1 to be resource, null given in /www/server/php/56/lib/php/OS/Guess.php on line 242

Warning: pclose() expects parameter 1 to be resource, null given in OS/Guess.php on line 251
PHP Warning: pclose() expects parameter 1 to be resource, null given in /www/server/php/56/lib/php/OS/Guess.php on line 251

Warning: pclose() expects parameter 1 to be resource, null given in /www/server/php/56/lib/php/OS/Guess.php on line 251

Warning: readlink() has been disabled for security reasons in OS/Guess.php on line 257
PHP Warning: readlink() has been disabled for security reasons in /www/server/php/56/lib/php/OS/Guess.php on line 257

Warning: readlink() has been disabled for security reasons in /www/server/php/56/lib/php/OS/Guess.php on line 257
downloading event-2.5.6.tgz ...
Starting to download event-2.5.6.tgz (141,226 bytes)
..............................done: 141,226 bytes
50 source files, building

Warning: putenv() has been disabled for security reasons in PEAR/Builder.php on line 310
PHP Warning: putenv() has been disabled for security reasons in /www/server/php/56/lib/php/PEAR/Builder.php on line 310

Warning: putenv() has been disabled for security reasons in /www/server/php/56/lib/php/PEAR/Builder.php on line 310
running: phpize

Warning: popen() has been disabled for security reasons in PEAR/Builder.php on line 465
PHP Warning: popen() has been disabled for security reasons in /www/server/php/56/lib/php/PEAR/Builder.php on line 465

Warning: popen() has been disabled for security reasons in /www/server/php/56/lib/php/PEAR/Builder.php on line 465
ERROR: failed to run `phpize'

解决办法:

popen readlink putenv三个函数在php.ini里将popen函数禁用了

Linux centos 安装Workerman 重启_.net_04

Linux centos 安装Workerman 重启_.net_05

或者在这里添加

Linux centos 安装Workerman 重启_.net_06

disable_functions中去掉对应三个函数,重启服务

Linux centos 安装Workerman 重启_php_07

 

1.3 继续安装 pecl install event (重点关注1.2.3地方输入的值)

Linux centos 安装Workerman 重启_php_08

三个地方按上面来操作

Linux centos 安装Workerman 重启_php_09

Linux centos 安装Workerman 重启_html_10

 

二 安装Event扩展

 

注意目前libevent扩展不支持php7,php7用户只能使用Event扩展。

Linux centos 安装Workerman 重启_php_11

 

yum install libevent-devel
pecl install channel://pecl.php.net/libevent-0.1.0 //提示libevent installation [autodetect]: 时按回车
echo extension=libevent.so > /etc/php.d/libevent.ini

Linux centos 安装Workerman 重启_html_12

 

四、测试是否成功

<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
<title>Title</title>
</head>
<body>
<script>
ws = new WebSocket("wss://www.xxxx.com:2xxx");
ws.onopen = function() {
alert("连接成功");
ws.send('tom');
alert("给服务端发送一个字符串:tom");
};
ws.onmessage = function(e) {
alert("收到服务端的消息:" + e.data);
};
</script>
</body>
</html>

注意:每次修改Workerman,都要重新启动

 

五、Workerman TP5 php代码测试启动

要启动Workerman,首先需要有一个启动入口文件,里面定义了服务监听的端口及协议。

可以参考​​入门指引--简单开发实例部分​​

这里以我们自己的项目为例,它的启动入口为server.php。

server.php文件是自己写的php文件,路径放到项目中,

Linux centos 安装Workerman 重启_php_13

<?php 
define('APP_PATH', __DIR__ . '/application/');
define('BIND_MODULE','push/Worker');
// 加载框架引导文件
require __DIR__ . '/thinkphp/start.php';
?>

进入项目根目录后再命令启动

宝塔操作方法:

Linux centos 安装Workerman 重启_.net_14

Linux centos 安装Workerman 重启_html_15

启动

以debug(调试)方式启动

​php ​​​server​​.php start​

以daemon(守护进程)方式启动

​php ​​​server​​.php start -d​

停止

​php ​​​server​​.php stop​

重启

​php start.php restart​

平滑重启

​php ​​​server​​.php reload​

查看状态

​php ​​​server​​.php status​

 

4.1 错误:pcntl_fork() has been disabled for security reasons in file 

由于安全原因,pcntl_fork()在第1515行文件/xxxxxx/vendor/workerman/workerman/Worker.php中被禁用

Linux centos 安装Workerman 重启_.net_16

Linux centos 安装Workerman 重启_html_17

 

四、给Workerman 配置SSL证书,就是域名那个SSL证书

 

创建wss服务
问:

Workerman如何创建一个wss服务,使得客户端可以用过wss协来连接通讯,比如在微信小程序中连接服务端。

答:

wss协议实际是websocket+SSL,就是在websocket协议上加入SSL层,类似https(http+SSL)。 所以只需要在websocket协议的基础上开启SSL即可支持wss协议。

方法一 ,直接用Workerman开启SSL
准备工作:

1、Workerman版本不小于3.3.7

2、PHP安装了openssl扩展

3、已经申请了证书(pem/crt文件及key文件)放在磁盘任意目录

代码:

<?php
require_once __DIR__ . '/Workerman/Autoloader.php';
use Workerman\Worker;

// 证书最好是申请的证书
$context = array(
// 更多ssl选项请参考手册 http://php.net/manual/zh/context.ssl.php
'ssl' => array(
// 请使用绝对路径
'local_cert' => '磁盘路径/server.pem', // 也可以是crt文件
'local_pk' => '磁盘路径/server.key',
'verify_peer' => false,
// 'allow_self_signed' => true, //如果是自签名证书需要开启此选项
)
);
// 这里设置的是websocket协议(端口任意,但是需要保证没被其它程序占用)
$worker = new Worker('websocket://0.0.0.0:443', $context);
// 设置transport开启ssl,websocket+ssl即wss
$worker->transport = 'ssl';
$worker->onMessage = function($con, $msg) {
$con->send('ok');
};

Worker::runAll();

参考:​​http://doc.workerman.net/faq/secure-websocket-server.html​​

在代码中配置对应SSL证书的路径:

4.1 把证书上传到宝塔SSL证书路径/www/server/panel/vhost/ssl/www.xxx.com/

名称与后缀修改成下面这样子 

密钥: privkey.pem

           fullchain.pem

Linux centos 安装Workerman 重启_html_18

4.2 修改代码中证书路径:\vendor\topthink\think-worker\src\Server.php

Linux centos 安装Workerman 重启_html_19

 

举报

相关推荐

0 条评论