1、数据库配置
在文件目录的application下的全局数据库配置文件 database.php
// 数据库类型
'type' => 'mysql',
// 服务器地址
'hostname' => '127.0.0.1',
// 数据库名
'database' => 'layim',
// 用户名
'username' => 'root',
// 密码
'password' => 'root',
如果你的模块使用了不同的数据库信息,那么可以单独配置每个模块的数据库信息,如index模块
QQ截图20190516092743.jpg
2、系统目录结构说明
project 应用部署目录
├─application 应用目录(可设置)
│ ├─common 公共模块目录(可更改)
│ ├─index 模块目录(可更改)
│ │ ├─config.php 模块配置文件
│ │ ├─common.php 模块函数文件
│ │ ├─controller 控制器目录
│ │ ├─model 模型目录
│ │ ├─view 视图目录
│ │ └─ ... 更多类库目录
│ ├─command.php 命令行工具配置文件
│ ├─common.php 应用公共(函数)文件
│ ├─config.php 应用(公共)配置文件
│ ├─database.php 数据库配置文件
│ ├─tags.php 应用行为扩展定义文件
│ └─route.php 路由配置文件
├─extend 扩展类库目录(可定义)
├─public WEB 部署目录(对外访问目录)
│ ├─static 静态资源存放目录(css,js,image)
│ ├─index.php 应用入口文件
│ ├─router.php 快速测试文件
│ └─.htaccess 用于 apache 的重写
├─runtime 应用的运行时目录(可写,可设置)
├─vendor 第三方类库目录(Composer)
├─thinkphp 框架系统目录
│ ├─lang 语言包目录
│ ├─library 框架核心类库目录
│ │ ├─think Think 类库包目录
│ │ └─traits 系统 Traits 目录
│ ├─tpl 系统模板目录
│ ├─.htaccess 用于 apache 的重写
│ ├─.travis.yml CI 定义文件
│ ├─base.php 基础定义文件
│ ├─composer.json composer 定义文件
│ ├─console.php 控制台入口文件
│ ├─convention.php 惯例配置文件
│ ├─helper.php 助手函数文件(可选)
│ ├─LICENSE.txt 授权说明文件
│ ├─phpunit.xml 单元测试配置文件
│ ├─README.md README 文件
│ └─start.php 框架引导文件
├─build.php 自动生成定义文件(参考)
├─composer.json composer 定义文件
├─LICENSE.txt 授权说明文件
├─README.md README 文件
├─think 命令行入口文件
3、workerman 目录说明
vendor
├─App
│ ├─Event.php 废弃文件,无用
├─Config
│ ├─Db.php workerman数据库配置信息
├─Init
│ ├─Events.php workman业务层代码
│ ├─start.php workman启动脚本
│ ├─start_gateway.php gateway进程启动脚本,包括端口号等设置
│ ├─start_businessworker.php businessWorker进程启动脚本
│ ├─start_register.php 注册服务启动脚本
├─start_for_win.bat win系统下启动脚本
...
3.1workerman 配置
Db.php
各参数参考database.php来进行配置
public static $db1 = array(
'host' => '127.0.0.1',
'port' => 3306,
'user' => 'root',
'password' => 'root',
'dbname' => 'layim',
'charset' => 'utf8'
);
start_businessworker.php
<?php
// 自动加载类
require_once __DIR__ . '/../../../autoload.php';
use \Workerman\Worker;
use \GatewayWorker\BusinessWorker;
// bussinessWorker 进程
$worker = new BusinessWorker();
// worker名称
$worker->name = 'ChatBusinessWorker';
// bussinessWorker进程数量
$worker->count = 4;
// 服务注册地址
//如果不是本地运行,请修改为你实际服务器内网地址
$worker->registerAddress = '127.0.0.1:1237';
$worker->eventHandler = 'Events';
// 如果不是在根目录启动,则运行runAll方法
if(!defined('GLOBAL_START'))
{
Worker::runAll();
}
start_gateway.php
// 设置进程数,gateway进程数建议与cpu核数相同
$gateway->count = 4;
// 分布式部署时请设置成内网ip(非127.0.0.1)
$gateway->lanIp = '127.0.0.1';//本地运行,可不修改
// 内部通讯起始端口,假如$gateway->count=4,起始端口为4000
// 则一般会使用4000 4001 4002 4003 4个端口作为内部通讯端口
$gateway->startPort = 4000;
// 心跳间隔
$gateway->pingInterval = 50;
//客户端必须定时发送心跳给服务端,否则pingNotResponseLimit*pingInterval秒内没有任何数据发来则关闭对应连接,并触发onClose
$gateway->pingNotResponseLimit = 0;
// 服务端定时向客户端发送的数据
$gateway->pingData = '{"type":"ping"}';
// 服务注册地址,同$gateway->lanIp
$gateway->registerAddress = '127.0.0.1:1237';
start_register.php
无需做修改
3.2、workerman启动方式
如果你是在windows上运行的话,直接双击/vendor/workerman/Conf/start_for_bat.bat即可 如果你是在linux或mac上运行的话,请进入/vendor/workerman/application/Init目录,然后运行
php start.php start -d
workerman相关命令
开启服务 命令如下 启动 以debug(调试)方式启动
php start.php start
以daemon(守护进程)方式启动
php start.php start -d
停止 php start.php stop
重启 php start.php restart
平滑重启 php start.php reload
查看状态 php start.php status
查看连接状态 php start.php connections
3.3、注意事项
1.如果是在云服务器运行,那么请开放workerman 的gateway 进程端口8282
2.如果在linux服务器运行,请对runtime目录以及public/uploads目录 777权限
(chmod -R 777 runtime
/ chmod -R 777 public/uploads
)
3.当全部启动成功后在浏览器访问IP:8282
能看到如下信息,则代表服务启动成功
400 Bad Request
Sec-WebSocket-Key not found.
This is a WebSocket service and can not be accessed via HTTP.
See http://wiki.workerman.net/Error1 for detail.
如果启动失败,对照官方手册排查
http://doc.workerman.net/faq/workerman-start-fail.html。
4、前端相关设置
4.1 soeket配置
1) 在前端首页layim\application\index\view\index\index.html
以及相关需要调用socket进行通讯的页面进行如下初始化new WebSocket('ws://IP:8282');
2) socket相关api
socket.onopen = function(){} //连接成功时触发
socket.onmessage = function(res){ }//监听收到的消息
socket.send(data); //发送消息
4.2 layim相关初始化
在index.html中的js进行layim的初始化配置
layim.config({
//获取主面板列表信息
init: {
url: "{:url('index/getList')}" //接口地址(返回的数据格式见下文)
,type: 'get' //默认get,一般可不填
,data: {} //额外参数
}
//获取群员接口
,members: {
url: "{:url('index/getMembers')}" //接口地址(返回的数据格式见下文)
,type: 'get' //默认get,一般可不填
,data: {} //额外参数
},
uploadFile: {
url: "{:url('upload/uploadFile')}"
}
,uploadImage: {
url: "{:url('upload/uploadimg')}"
}
,brief: false //是否简约模式(默认false,如果只用到在线客服,且不想显示主面板,可以设置 true)
,title: '我的LayIM' //主面板最小化后显示的名称
,maxLength: 3000 //最长发送的字符长度,默认3000
,isfriend: true //是否开启好友(默认true,即开启)
,isgroup: true //是否开启群组(默认true,即开启)
,right: '0px' //默认0px,用于设定主面板右偏移量。该参数可避免遮盖你页面右下角已经的bar。
,chatLog: "{:url('Chatlog/index')}" //聊天记录地址(如果未填则不显示)
,find: "{:url('findgroup/index')}" //查找好友/群的地址(如果未填则不显示)
,copyright: false //是否授权,如果通过官网捐赠获得LayIM,此处可填true
});
更多请查看源码
网友评论