安装步骤(源码接入)
2.1 IM目录结构
2.2 IM部署(windows服务器,已phpStudy为例)
A.部署IM的服务器
域名地址指向到im 源码文件的public目录,点击新增并保存设置生成配置文件
B. 修改database文件
C. 在浏览器访问
如果出现500的错误,这是网络字体跨域引起的需要在服务器apache配置项开启LoadModule headers_module modules/mod_headers.so项(去掉#即可)
如果能访问到以下内容,说明部署成功
D.启动workerman socket服务
修改workerman 连接数据库配置。注:新版的im下面不需要修改,直接读取database.php
双击start_for_win.bat文件
如果出现以下界面,说明workerman启动成功
注:如果出现类似"php不是内部或外部命令"的提示,说明没有设置好php环境变量(https://www.workerman.net/windows)
workerman 的 GatewayWorke 框架,集成到此便已经完成了
E.Socket连接配置:
修改以下5个文件,新版im不需要修改test/common/js/main.js和test/common/js/main.mobile.js
修改socket连接端口为IM所在服务器IM, 例如IM 服务器ip为: 192.168.1.200,端口自定义,例如:8283
Workerman:在 start_gateway.php 中配置
以下文件ip固定:0.0.0.0 端口跟上面socket端口保持一致,如:8283
2.3 IM部署(linux服务器)
本系统采用的 Getwayworker 框架,这个框架也是基于 Workerman 开发的。因此在 linux 下搭建的依赖需求和 Workerman 完全相同。
A. linux服务器搭建
1. 需要PHP>=5.4,并配置好PHP的环境变量(环境变量很重要)。
2. Linux用户运行以下脚本检查本地环境是否满足WorkerMan要求
curl -Ss http://www.workerman.net/check.php | php
如果脚本中全部提示ok,则代表满足WorkerMan运行环境。
3. workerman 依赖于某些拓展(php -m 可查看php已加载的拓展)。必须安装了pcntl、posix、pdo及pdo.mysql扩展,如果并发连接数大于1024建议安装event扩展(php>=5.4)或者libevent扩展(注意目前libevent扩展不支持php7),请根据PHP版本自行选择。
4. 拓展安装链接 :
(http://doc.workerman.net/appendices/install-extension.html)
B.
1.如果出现500错误,查看nginx的报错日志如果如下
解决方案如下:
在/usr/local/nginx/conf/fastcgi.conf(不同安装方法,找相应的路径)文件中,open_basedir后面追加相应的参数
例如:当前的项目目录为/home/wwwroot/im.com,那在后面追加的参数为:":/home/wwwroot/im.com"
然后重启nginx
2.部署IM项目,如果浏览器访问能出现以下页面,说明系统部署成功
C. Getwayworker部署及启动(重点)
1、在IM系统 vendor目录下载linux版Getwayworker,是一个zip 文件,解压重命名就可以用(因 vendor目录下已存在windows 版的Getwayworker,linux下的注意不要与之重名)(源码已下好,文件为GatewayWorker-linux,此步可跳过)
wget http://www.workerman.net/download/GatewayWork.zip
unzip GatewayWorker.zip(源码以下好,此步省略)。然后将windows下的 Events.php 替换 liunx原来Events.php
修改 start_gateway.php 文件:$gateway=newGateway
("Websocket://0.0.0.0:8283");
修改start_register.php文件 $register = new Register
('text://0.0.0.0:1239');
修改start_businessworker.php 文件$worker->registerAddress = '127.0.0.1:1239';
2、workerman/mysql 类文件(源码已下好,该步跳过)
分两种方式获得:
方法一:请进入 Getwayworker-linux 目录,通过 composer 安装 workerman 的 mysql 类 composer require workerman/mysql
方法二:源码workerman 的 mysql 类,把widows GatewayWorker /vendor/workerman/mysql 文件复制一份到 GatewayWorker-linux
/vendor/workerman目录下(注意目录结构,windows与linux应一致)。在GatewayWorker-linux目录start.php下 引入mysql类,如下图:
D.启动 workerman
第一种方式:进入 Applications 执行 php start.php start(终端关闭后 workerman 会随之关闭并退出。)
第二种方式:进入 Applications 执行 php start.php start –d(终端关闭后 workerman 继续后台正常运行)
初次部署请以第一种方法启动,可查看是否出现错误,当系统稳定后可进入第二种方式启动。
如果出现以下界面,说明部署成功
【注】:
1、若出现php 命令无法执行,请设置php 环境变量。
2、websocket 启动后无法停止,请参考(http://doc.workerman.net/faq/stop-fail.html)。
3、即时聊天或上传图片 出现图片跨域或者500错误,请给public/uploads目录最高权限。
4、更多详情请参考workerman官网,(http://doc.workerman.net/).
上传图片大小限制 \public\config\chat.conf,2改为8支持8M不能改为10或以上
s:8:"img_size";s:1:"2"
ssl配置:
\vendor\GatewayWorker\Applications\live\start_gateway.php 在这个文件中加上ssl配置相关代码
$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协议(端口任意,只要没有被其它程序占用就行)
$gateway = new Gateway("websocket://0.0.0.0:8283", $context);
// 开启SSL,websocket+SSL 即wss
$gateway->transport = 'ssl';