-
Notifications
You must be signed in to change notification settings - Fork 18
gettingStarted deploy
tolizhan edited this page May 1, 2025
·
13 revisions
- 部署一个php >= 5.2的网络环境, 若需Swoole环境另见
- 下载框架代码 https://github.com/tolizhan/oFrame/ 或 https://gitee.com/tolizhan/oFrame/
- 解压到任意可访问的路径 Linux下 创建 /data 文件, 给 -R 可读写权限
- 访问框架根目录, 显示界面并且没有红色报错便部署成功
- 打开框架配置/include/of/config.php
- 修改config键值为null 目的是删除 demo 对框架的重写
- 修改debug键值, 生产环境一定要改为"字符串"密码, 防止生产环境敏感信息泄漏, 带密码访问控制台
- 修改db键值连接一个数据库
- 根据实际需求开关 preloaded 中对应的模块
- 删除/demo文件夹
- 若为分布式架构, 将各节点/data文件夹挂载到同一个目录
- 如没特殊需求, 以下三项可忽略
- 框架可放在任意路径下,也可以改名,这里我们确定在"/include/of"
- 修改配置ofDir为"/include/of", 修改rootDir键值为strtr(substr(__FILE__, 0, -22), '\\', '/') 目的是定义磁盘根路径到 "/include/of"
- 修改rootUrl键值 若rootDir为挂载路径, 将导致rootUrl自动计算出错, 此时需要指定
- URL格式可以通过系统入口定制
如: /index.php?c=控制类&a=方法名 或 /index.php/控制类/方法名 等 - CLI模式可以通过"$GLOBALS键值:url编码"来设置超全局变量 可通过 _TZ指定时区, _IP指定IP, _RL指定ROOT_URL
如: php /index.php "_TZ:Europe/London" "get:c=demo_index&a=index" "post:test=demo" 设置$GLOBALS['_GET'] 和 $GLOBALS['_POST']值
- 用新版框架替换旧版不包含配置的全部文件 (注意删除新版中不存在的文件)
- 查看旧版到新版本号的变更日志 changelog.txt
- 按照日志中"-"开头的变化从低到高版升级当前系统
<?php /** * 加载并初始化框架 of.php是该框架唯一入口 * 系统可以设置多个入口文件, 每个文件仅加载 ROOT_DIR/of.php 便好 * 加载成功后可直接调用封装方法, 如: of_base_com_str::uniqid() */ require dirname(__FILE__) . '/include/of/of.php';
<?php /** * 项目的请求方式可以多种多样,甚至是面向过程方式开发,这个文件的功能是将请求信息转化为标准方式,并做一些如用户验证等附加动作 * 下面定义请求方式为$_GET['c']是请求类,$_GET['a']是请求的方法 */ require dirname(__FILE__) . '/include/of/of.php';//调度代码 if (isset($_GET['c'])) { //类名, 动作, 安全校验(调用的类文件返回值必须与此值相同才可通过, null=不验证, false=不通过) $result = of::dispatch($_GET['c'], isset($_GET['a']) ? $_GET['a'] : 'index', true); //返回数组转成json if (is_array($result)) echo json_encode($result); }
<?php return array( ... //数据库连接池 'db' => array( //数据库连接方式(mysqlPdo, mysqli, mysql, polar, tidb, mssqlPdo) 'adapter' => 'mysqli', //数据库连接参数 'params' => array( //数据库地址 'host' => '127.0.0.1', //数据库端口 'port' => 3306, //数据库帐号 'user' => 'root', //数据库密码 'password' => 'admin', //默认数据库 'database' => 'test', //默认字符集 'charset' => 'utf8mb4', //数据库时区, 配合timestamp类型实现跨时区同步, 默认true=框架时区, false=数据库时区, "±00:00"=指定时区 'timezone' => true, //设置隔离级别, ""=跟随系统, "READ UNCOMMITTED", "READ COMMITTED", "READ COMMITTED", "SERIALIZABLE" 'isolation' => 'READ COMMITTED', //是否长连接, true=长连接, false=短连接 'persistent' => false ) ), ... )
<?php return array( ... //数据库连接池 'db' => array( //在可用的连接中随机读取一个作为连接 array(单库配置的结构), array(单库配置的结构), ... ), ... )
<?php return array( ... //数据库连接池 'db' => array( //不在事务中的查询类型使用读数据库, 其它使用写数据库 'write' => array(单配或混合配置结构), 'read' => array(单配或混合配置结构), ), ... )
<?php return array( ... //数据库连接池 'db' => array( //'default'为默认连接源 'default' => array(以上单连接池写法), '非默认连接池' => array(以上单连接池写法), ... ), ... )
<?php /** 在系统根目录创建 /test.php 文件 / require dirname(FILE) . '/include/of/of.php';//使用default连接池 打印结果集 array(array('a' => '1')); print_r(L::sql('SELECT 1 a'));
//使用test连接池 打印结果集 array(array('b' => '2')); print_r(L::sql('SELECT 2 b', 'test'));
手册地址 http://phpof.net/
- 入门指引
-
疑难解答
- 部署时会遇到的那些常见问题
简单却容易忽视 - 框架内置有哪些管理界面
生产模式进入界面需用 __OF_DEBUG__ - 如何定制不同的架构模式
通过配置入口文件中调度方法的参数即可 - 如何面向命名空间开发
of_xx 类可以按照命名空间方式调用 - 如何设置不同的部署模式
通过_of.debug设置 开发,测试,生产 模式 - 为什么控制层类文件要返回true
这是防止非法访问的方法之一 - 为什么传到视图层的变量会被编码
这是因为 XSS 安全防范的原因 - 为什么框架没有SQL构造器
因常规方案牺牲了性能又未很好解决问题 - 如何快速开发用户及权限管理功能
单点登录(SSO)模块因此而存在 - 怎么在系统的基础上扩展底层功能
三点: 扩展开发, 预先加载, 底层钩子 - 怎么使用 Composer 依赖管理工具
框架已集成, 默认关闭状态
- 部署时会遇到的那些常见问题
- 组件使用
- 集成插件
- 扩展开发
- 开发手册