包含“c”的产品文档
魔方云系统使用文档>10. 网站管理与升级>资源包
管理员将各个资源配置打包成套餐类型(及资源包),这个资源包可以分配给代理用户,有资源包的代理商就可以进行实例创建、用户创建,类似于用户代理的模式。 1、进入资源包页面,创建资源包 2、资源包创建 3、将创建的资源包分配给用户使用注意:分配了资源包的用户就是代理商,可以根据资源包的配置创建实例或者创建子账户 4、管理员查看资源分配情况 5、代理商必须选择资源包,进行实例创建、子账户创建,当资源包里面的资源被使用完毕,则不能再创建实例/子账户  6、代理商查看自己名下资源包资源的使用情况 
魔方云系统使用文档>11. 关于三方对接>WHMCS对接弹性IP
clouddisk模块的data目录需要给写入权限,用于缓存操作步骤1、添加弹性IP的服务器接口服务器hash参数说明:<zjmfdir>admin</zjmfdir>  // 二级目录<user_prefix>xxx</user_prefix> // 用户前缀,用于区分不同平台对接<username>uid</username>  // 创建用户名类型,uid=用户ID,其他=邮箱/手机号注意:hash参数需要和关联的魔方云模块一致,否则可能会出现用户不一致的情况,username建议使用uid 2、添加弹性IP产品,模块名称选择魔方云弹性IP 3、设置产品参数,此处可以直接设置,也可以设置可选配置项可选配置选项:node_group|节点分组ID、area|区域ID、node|节点ID、ip_group|IP分组ID、in_bw|进带宽、bw|带宽 4、保存后,可以到前台会员中心购买相关产品 5、产品订购后,可以进入产品内页,关联云主机 6、也可以进入云主机内页,直接将弹性IP分配给该云主机  
业务系统开发文档>插件开发
一、位置插件放在\public\plugins\addon\目录下 二、目录结构\plugins\addon\idcsmart_ticket|--- controller(控制器目录,后台控制器直接放此目录下)|--- clientarea(前台控制器放此目录下)|--- lang(语言目录)|--- zh-cn.php(中文语言文件)|--- template(模板)|--- admin(后台模板目录)|--- clientarea(前台模板目录)|--- IdcsmartTicket.php(插件主文件)|--- route.php(自定义路由文件)|--- sidebar.php(后台插件导航文件) 三、开发流程以工单插件为例:1、创建工单插件目录\public\plugins\addon\idcsmart_ticket\;①目录名以小写字母+下划线形式,必须以字母开头,如idcsmart_ticket; 2、创建入口文件:IdcsmartTicket.php:①命名空间namespace addon\idcsmart_ticket(控制器下命名空间对应相应目录即可,其它同理);②以目录名大驼峰+.php,创建在插件根目录下,如idcsmart_ticket\IdcsmartTicket.php;③文件中需要定义info属性,示例:# 插件基本信息public $info = array(    'name'        => 'IdcsmartTicket', //插件英文名,作为插件唯一标识,改成你的插件英文就行了    'title'       => '智简魔方工单插件', //插件名称    'description' => '智简魔方工单插件', //插件描述    'author'      => 'idcsmart',  //开发者    'version'     => '1.0',      // 版本号);④必须实现install()安装以及uninstall()卸载方法⑤可实现钩子方法,如要实现订单创建后钩子after_order_create,则可在此文件中创建public function afterOrderCreate($param)公共方法;⑥系统会在订单创建后的位置放置⑤中的钩子,放置方式:hook(‘after_order_create’,[‘id’=>$orderId]) ;⑦如果定义变量noNav,表示不需要默认导航(具体参考7,插件后台导航)public $noNav; 3、创建插件后台控制器 idcsmart_ticket\controller\TicketController.php①命名空间addon\idcsmart_ticket\controller;②继承后台基类控制器PluginAdminBaseController,增加了权限控制,允许使用一些通用方法;③get_admin_id()可获取后台管理员登录ID;④实现接口,如public function ticketList(),系统默认访问此接口的url为:网站地址/admin/addon?_plugin=idcsmart_ticket&_controller=ticket&_action=ticket_list,说明:系统默认地址默认登录,若需要免登录访问,需要自定义路由(见后面自定义路由);⑤系统提供了生成④中默认访问地址的方法:idcsmart_addon_url($url,$vars=[],$is_admin=false)参数说明:url: 格式:插件名://控制器名/方法,如 IdcsmartTicket://Ticket/ticketListvars: 参数,默认为空数组Is_admin: 是否后台,默认为false 4、创建插件前台控制器idcsmart_ticket\controller\clientarea\TicketController.php①命名空间addon\idcsmart_ticket\controller\clientarea;②继承前台基类控制器PluginBaseController,允许使用一些通用方法;③get_client_id()可获取前台客户登录ID;④实现接口,如public function ticketList(),系统默认访问此接口的url为:网站地址/console/addon?_plugin=idcsmart_ticket&_controller=ticket&_action=ticket_list或者:网站地址/console/addon?_plugin=1&_controller=ticket&_action=ticket_list,1表示插件ID;说明:系统默认地址默认登录,若需要免登录访问,需要自定义路由(见后面自定义路由);⑤系统提供了生成④中默认访问地址的方法:idcsmart_addon_url($url,$vars=[],$is_admin=false)参数说明:url: 格式:插件名://控制器名/方法,如 IdcsmartTicket://Ticket/ticketListvars: 参数,默认为空数组Is_admin: 是否后台,默认为false 5、插件提供两种路由:①、系统默认url带参数,参考4②、自定义路由,插件根目录下定义route.php,示例:前台路由:Route::group('console/v1',function (){Route::get('ticket',"\\addon\\idcsmart_ticket\\controller\\clientarea\\TicketController@ticketList")->append(['_plugin'=>'idcsmart_ticket','_controller'=>'ticket','_action'=>'ticket_list']);# 带上默认参数,可以使用继承控制器app\admin\controller\PluginBaseController的一些通用方法,也可以不追加这些参数(_plugin插件名称C风格,_controller控制器名称C风格,_action方法名称C风格)})->middleware(\app\http\middleware\ParamFilter::class)->middleware(\app\http\middleware\CheckHome::class);#前台需要登录就使用此中间件后台路由:Route::group(DIR_ADMIN . '/v1',function (){ Route::get('ticket',"\\addon\idcsmart_ticket\controller\TicketController@ticketList")->append(['_plugin'=>'idcsmart_ticket','_controller'=>'ticket','_action'=>'ticket_list']);})->middleware(\app\http\middleware\ParamFilter::class)->middleware(\app\http\middleware\CheckAdmin::class);#后台需要登录就使用此中间件 6、插件多语言①创建语言文件lang/zh-cn.php,返回如下格式的数组:return [    'success_message' => '请求成功',    'ticket_title_require' => '请输入工单标题','ticket_log_client_create_ticket' => '{client}新建工单:{ticket_id}',] ②使用lang_plugins('语言标识',$param=[])实现多语言,$param为语言文件中参数,格式['{client}'=>'wyh'],如:lang_plugins('ticket_log_client_create_ticket',['{client}'=>'wyh','{ticket_id}'=>1]);③前端多语言文件  前台语言文件:在template/clientarea/lang/目录下index.js文件;  后台语言文件:在template/admin/lang目录下(function () {  const module_lang = {    "zh-cn": {      add: "添加",    },    "zh-hk": {      add: "添加",    },    "en-us": {      add: "Add",    },  };  const DEFAULT_LANG = localStorage.getItem("backLang") || "zh-cn";  window.module_lang = module_lang[DEFAULT_LANG];})();    具体参考idcsmart_ticket工单插件 7、插件后台导航①导航默认会创建在插件导航之下,默认链接:plugin/插件名/index.html,对应template/admin/index.php文件,同时需要在lang/下的语言文件创建如下格式的语言,nav_plugin_addon_插件名:'nav_plugin_addon_idcsmart_ticket' => '工单', ②自定义导航,若是一级导航,会增加在插件导航之上,管理导航之下,在插件根目录下创建sidebar.php,示例:/* *  自定义后台导航菜单(仅支持一二级),注意系统会在插件导航下默认创建url为"plugin/插件名称/index.html"的导航,因此需要在template/admin/目录下创建index.php文件作为插件入口 */return [    [ # 一级导航        'name' => 'nav_plugin_addon_ticket', # 导航名称,不要与系统冲突(参考idcsmart_nav表中name字段),同时需要在lang/目录下定义语言        'url'  => '', # 为空表示一级导航,不需要链接        'icon' => 'tools', # 图标,获取图标:https://tdesign.tencent.com/vue/components/icon        'in' => '', # 一级导航,此值为空        'child' => [ # 二级导航            [                'name' => 'nav_plugin_addon_ticket_list', # 导航名称                'url' => 'ticket', # 链接格式,会自动加上.html                'in' => 'nav_user_management', # 可定义导航在某个一级导航之下,默认会放置在此一级导航最后的位置(获取方式:idcsmart_nav表中的parent_id==0的name字段)                'icon' => '', # 图标,获取图标:https://tdesign.tencent.com/vue/components/icon            ],            [                'name' => 'nav_plugin_addon_ticket_internal_list', # 导航名称                'url' => 'ticket_internal', # 链接格式,会自动加上.html                'in' => '', # 可定义导航在某个一级导航之下,默认会放置在此一级导航最后的位置                'icon' => '', # 图标,获取图标:https://tdesign.tencent.com/vue/components/icon            ],        ]    ],]; 8、插件前台导航①导航默认会创建在插件导航之下,默认链接:plugin/插件名/index.html;②自定义导航,会增加在插件导航之上,管理导航之下,在插件根目录下创建sidebar_clientarea.php,示例:/* *  自定义前台导航菜单(仅支持一二级) */return [    [        'name' => 'nav_plugin_addon_ticket', # 链接名称,同时需要在lang/目录下定义语言        'url'  => '', # 链接格式,会自动加上.html        'icon' => '', # 图标        'child' => [ # 二级菜单            [                'name' => 'nav_plugin_addon_ticket_list',                'url' => 'ticket',                'icon' => '', # 图标            ],        ]    ],];  9、插件后台权限管理在插件根目录下创建auth.php,示例如下(注意定义语言):<?php/* *  定义权限,系统会默认插入名称为插件名的一级权限,以下仅需定义二级/三级权限;(首先,要使用二级权限,插件后台控制器需要继承app\event\controller\PluginAdminBaseController基类控制器) */return [    [        'title' => 'auth_plugin_addon_ticket_list', # y用户工单        'url' => 'ticket',        'child' => [ # 操作权限            [                'title' => 'auth_plugin_addon_ticket_view', # 工单查看                'url' => '',                'auth_rule' => 'TicketController::ticketList',  # 工单列表具体控制器方法                'auth_rule_title' => 'auth_rule_plugin_addon_ticket_list'  # 具体权限名称            ],            [                'title' => 'auth_plugin_addon_ticket_receive',                'url' => '',                'auth_rule' => 'TicketController::receive',                'auth_rule_title' => 'auth_rule_plugin_addon_ticket_receive'  # 具体权限名称            ],            [                'title' => 'auth_plugin_addon_ticket_resolved',                'url' => '',                'auth_rule' => 'TicketController::resolved',                'auth_rule_title' => 'auth_rule_plugin_addon_ticket_resolved'  # 具体权限名称            ],        ]    ],    [        'title' => 'auth_plugin_addon_ticket_detail', # 工单详情        'url' => 'ticket_detail',        'child' => [            [                'title' => 'auth_plugin_addon_ticket_view',                'url' => '',                'auth_rule' => 'TicketController::index',                'auth_rule_title' => 'auth_rule_plugin_addon_ticket_index'  # 具体权限名称            ],            [                'title' => 'auth_plugin_addon_ticket_reply',                'url' => '',                'auth_rule' => 'TicketController::reply',                'auth_rule_title' => 'auth_rule_plugin_addon_ticket_reply'  # 具体权限名称            ],            [                'title' => 'auth_plugin_addon_ticket_download',                'url' => '',                'auth_rule' => 'TicketController::download',                'auth_rule_title' => 'auth_rule_plugin_addon_ticket_download'  # 具体权限名称            ],        ]    ],    [        'title' => 'auth_plugin_addon_ticket_internal_list', # 内部工单        'url' => 'ticket_internal',        'child' => [            [                'title' => 'auth_plugin_addon_ticket_view',                'url' => '',                'auth_rule' => 'TicketInternalController::ticketInternalList',                'auth_rule_title' => 'auth_rule_plugin_addon_ticket_internal_list'  # 具体权限名称            ],            [                'title' => 'auth_plugin_addon_ticket_view',                'url' => '',                'auth_rule' => 'TicketInternalController::index',                'auth_rule_title' => 'auth_rule_plugin_addon_ticket_internal_index'  # 具体权限名称            ],            [                'title' => 'auth_plugin_addon_ticket_add',                'url' => '',                'auth_rule' => 'TicketInternalController::create',                'auth_rule_title' => 'auth_rule_plugin_addon_ticket_internal_create'  # 具体权限名称            ],            [                'title' => 'auth_plugin_addon_ticket_receive',                'url' => '',                'auth_rule' => 'TicketInternalController::receive',                'auth_rule_title' => 'auth_rule_plugin_addon_ticket_internal_receive'  # 具体权限名称            ],            [                'title' => 'auth_plugin_addon_ticket_resolved',                'url' => '',                'auth_rule' => 'TicketInternalController::resolved',                'auth_rule_title' => 'auth_rule_plugin_addon_ticket_internal_resolved'  # 具体权限名称            ],            [                'title' => 'auth_plugin_addon_ticket_reply',                'url' => '',                'auth_rule' => 'TicketInternalController::reply',                'auth_rule_title' => 'auth_rule_plugin_addon_ticket_internal_reply'  # 具体权限名称            ],            [                'title' => 'auth_plugin_addon_ticket_forward',                'url' => '',                'auth_rule' => 'TicketInternalController::forward',                'auth_rule_title' => 'auth_rule_plugin_addon_ticket_internal_forward'  # 具体权限名称            ],        ]    ],]; 10、插件接口内部调用使用plugin_api($addon,$controller,$action,$param=[])函数可内部调用插件API,需要开发者提供插件API开发文档,具体格式参考系统API文档 * @param string addon - 插件 require * @param string controller - 控制器前缀 require * @param string action - 方法 require * @param array param - 传入的参数 四、示例具体可参考智简魔方工单插件public\plugins\addon\idcsmart_ticket\ 
业务系统开发文档>v10开发规范
ct_divert/;2、类库、函数文件统一以.php为后缀,如app.php 、common.php;3、类的文件名均以命名空间定义,并且命名空间的路径和类库文件所在路径一致,如ProductModel.php对应ProductModel类,命名空间app\common\model对应路径app/common/model/;4、类(包含接口和Trait)文件采用驼峰法命名(首字母大写),类名(包括接口和Trait)和文件名保持一致,统一采用驼峰法命名(首字母大写),其它文件采用小写+下划线命名,如类文件app/common/logic/ConfigOptionsLogic.php对应ConfigOpitonsLogic类,公共函数文件app/common.php;5、目录结构finance  财务系统├─app           应用目录│  ├─admin           后台│  │  ├─controller      控制器目录│  │  ├─model           模型目录(业务逻辑写这里或逻辑类里)│  │  ├─validate        验证器目录│  ├─home            前台│  │  ├─controller      控制器目录│  │  ├─model           模型目录│  │  ├─validate        验证器目录│  ├─common          公共目录│  │  ├─logic           逻辑类目录│  │  ├─model           模型目录(前后台通用模型方法写这里面的model类)│  ├─command         命令行目录│  │  ├─Cron.php        系统默认定时任务文件│  ├─excption           错误处理目录│  ├─http           网关目录│  │  ├─middleware      中间件目录│  ├─common.php         公共函数文件(写函数注释,比较通用的方式先写好,如curl)│  ├─middleware.php     中间件定义文件├─cron                   定时任务│  ├─cron.php            定时任务├─config                全局配置目录│  ├─app.php            应用配置│  ├─cache.php          缓存配置│  ├─console.php        控制台配置│  ├─cookie.php         Cookie配置│  ├─database.php       数据库配置│  ├─filesystem.php     文件磁盘配置│  ├─lang.php           多语言配置│  ├─log.php            日志配置│  ├─middleware.php     中间件配置│  ├─route.php          URL和路由配置│  ├─session.php        Session配置│  ├─trace.php          Trace配置│├─route                  路由目录│  ├─admin.php          后台路由│  ├─home.php           前台路由│├─public                WEB目录(对外访问目录)│  ├─index.php          入口文件│  ├─admin         后台模板目录│  ├─home         前台模板目录│  ├─plugins         插件目录│  ├─.htaccess          用于apache的重写│├─runtime               应用的运行时目录(可写,可定制)├─vendor                Composer类库目录6、使用模型方式进行增删改查,写在app/common/model/下(前后台通用);例子:创建订单,建立文件app/common/model/OrderModel.php,create()创建订单;7、逻辑类,写在app/common/logic/下,例子:ProvisionLogic.php服务模块逻辑类等;二、函数和类、属性命名1、类的命名采用驼峰法(首字母大写),例如 User、UserType;2、函数的命名使用小写字母和下划线(小写字母开头)的方式,例如 get_client_ip,公共函数文件app/common.php统一使用此方式命名;3、方法的命名使用驼峰法(首字母小写),例如 getUserName;4、属性的命名使用驼峰法(首字母小写),例如 tableName、instance;5、特例:以双下划线__打头的函数或方法作为魔术方法,例如 __call 和 __autoload;6、变量的命名使用驼峰法(首字母小写),例如 $tableName。实例化类的变量和类名同名,大驼峰变量,例如:$User。逻辑类中的变量加后缀,例如:$SmsLogic。三、常量和配置1、常量以大写字母和下划线命名,例如 APP_PATH;2、配置参数以小写字母和下划线命名,例如 url_route_on 和url_convert;3、环境变量定义使用大写字母和下划线命名,例如APP_DEBUG;四、数据库表说明1、数据库表采用 innodb引擎;2、utf8mb4字符集;3、带自增主键;4、有默认值(text这类类型除外);5、字符串类型的一定要有默认值,不要用NULL;6、创建表一定要有字段说明;7、日期存时间戳,所以日期类型用int(11);8、价格相关数据用 decimal(10,2),有的可能需要更高的精度decimal(10,5);9、适当添加索引,参考数据库表索引建立;10、数据库里不使用存储过程、视图、函数、触发器、事件(否则维护麻烦);11、数据表和字段采用小写加下划线方式命名,并注意字段名不要以下划线开头,例如 idcsmart_accounts表和 amount_out字段,不建议使用驼峰和中文作为数据表及字段命名。12、数据库表不使用外键;13、数据库用5.7,开启严格模式。14、表与表关联的ID要带表名。例如:product_id。15、表或字段读取不需要写as,例如client c。16、搜索参数名$keywords。分页:$page 条数:$limit 排序:$orderby 升序降序:$sort desc asc ;17、五、智简魔方代码规范1、控制器方法中尽量只写传参,验证、json返回,业务逻辑写在model里,或者逻辑类里;2、控制器里只有接口方法,不要写多余的方法在控制器文件中,其他方法、逻辑写model里或者逻辑类里、或者公共函数里;3、除接口返回json格式外,其他函数方法一律返回单个值,或者数组;4、更改框架核心代码、基类控制器时,一定要商量,并写好更改的文档,做好记录;5、函数超过两个参数,采用数组方式传入;(讨论:这个涉及到后面可能会不断的增加传入参数)6、公共函数里 尽量不使用数据库操作,用use 引用模型类;7、不要实例化控制器;8、变量赋值运算前后添加空格。例如:$td .= '</td>';9、类,函数名后面的花括号紧跟后面,换行写。例如:class CartController extends CommonController{10、注释格式①api接口和类里面方法的注释格式/**     * @title title     * @desc desc* @author author* @version version     * @url url     * @method method* @namespace namespace     * @param type name default desc validate* @return type name default desc     */如果当前default没有的话可以用 - 占位,validate没有的话可以不写return的参数如果仅返回单个数据并无变量名称是type之后的参数可以不填方法的param如果有顺序的话需要按顺序写param和return后面的参数以空格隔开,参数的内容之中不能存在空格例如/** * @title 节点分组列表 * @desc 节点分组列表 * @author hh * @version v1 * @url node_groups * @method GET * @param int $page 1 页数  * @param int $per_page 20 每页条数  * @param string $orderby id 排序(id,name) * @param string $sort desc 排序方向 * @param string $search - 搜索 * @param string $list_type page 获取类型(all,page),all会忽略页数直接返回所有 * @return int $data[].id - 节点分组ID * @return string $data[].name - 节点分组名称 * @return string $data[].description - 节点分组名称 * @return string $data[].create_time - 创建时间 * @return int $data[].node[].id - 使用节点ID * @return string $data[].node[].name - 使用节点名称 * @return int $meta.total - 总条数     * @return int $meta.total_page - 总页数     * @return int $meta.page - 当前页     * @return int $meta.per_page - 每页条数 */②公共方法的注释格式/**     * @title title     * @desc desc* @author author* @version version     * @param type name default desc validate* @return type name default desc     */如果当前default没有的话可以用 - 占位,validate没有的话可以不写return的参数如果仅返回单个数据并无变量名称是type之后的参数可以不填方法的param如果有顺序的话需要按顺序写param和return后面的参数以空格隔开,参数的内容之中不能存在空格/**     * @title 获取客户端IP地址     * @desc 获取客户端IP地址* @author hh* @version v1     * @param integer $type 返回类型0返回IP地址1返回IPV4地址数字   * @param boolean $adv 是否进行高级模式获取(有可能被伪装)   * @return string     */ 六、其他1、前端传值用json,后端统一返回json格式数据;2、返回数组一律转化为对象;3、所有函数都需要写清楚文档;4、状态码:200返回正确 400返回错误 302重定向 500系统错误,401登录失效,404无权限5、数据返回格式:{“status”:200/400/302/500,"msg":"success message","data":{}}6、控制器的函数中不要写参数8、php使用8.19、注意不要使用php 语言结构或函数 来作为方法、变量;10、公共语言 写在后台的语言文件; 键值 小写+下划线;11、语言文件写法:success_message => ‘请求成功’字段统一备注字段统一用 notes varchar(1000)支付字段统一用 gateway产品id统一用 product_id用户id统一用 client_id计费周期字段统一用 billing_cycle 
业务系统使用文档>11、系统迁移>魔方财务迁移v10
c目录下;  访问:财务地址/move.php,选择导出,下一步,开始,等待导出数据库文件成功即可3.将move.php文件和财务的导出包放在V10的 public目录下  访问:V10地址/move.php,选择导入,选择财务的导出包,下一步,开始,等待提示到导入数据完成即可。
业务系统使用文档>2、系统设置>2.5、导航管理>2.5.1 如何添加前台自定义导航
1.点击系统设置导航设设置 -选择前台导航管理-新建页面 2.页面类型选择自定义 输入URL链接网址  设置自定义导航名称 设置完成 点击保存注意:无法进行后台自定义导航添加   
DCIM使用文档>5.装机常见问题>5.5 解决debian+ubuntu16以上开机脚本不生效
ch /root/123.txt        #不能直接写真实路径     正确写法:touch /target/root/123.txt 特别注意:不要把永久存留的文件创建到 /tmp目录,因为重装完成后会重启系统,重启会删除/tmp下的东西案例:给debian 11镜像更换 国内源1、给debian 11镜像更换 国内源(注意 文件路径是/target开头的哦) cat > /target/etc/apt/sources.list << EOF deb https://mirrors.ustc.edu.cn/debian/ bullseye main contrib non-free deb https://mirrors.ustc.edu.cn/debian/ bullseye-updates main contrib non-free deb https://mirrors.ustc.edu.cn/debian-security/ bullseye-security main contrib non-free deb http://deb.debian.org/debian bullseye-backports main EOF 2、给debian 11安装 软件     chroot /target && apt update      chroot /target && apt install mtr -y     或者这样(推荐下面这种,亲测有效)     chroot /target apt update      chroot /target apt install mtr -y附:这是一个网上的debian ks 自动应答脚本    https://github.com/oxypwn/kickstart/blob/master/debian/debian.ksB、Ubuntu 16 及以后版本 开机脚本不生效关键点:自定义脚本中不能使用 echo cat printf tee > >> 这6个指令存在的问题1、d-i preseed/late_command 命令不能使用 echo cat printf tee > 以及 >>> 这6个指令touch /etc/sysctl.d/custom.conf echo 'net.core.default_qdisc=fq' > /etc/sysctl.d/custom.conf 上面的命令,只会有touch 成功创建文件,echo 不会成功的2、sed 不能向空文件写入内容,这是sed的问题,不是ubuntu的问题解决办法利用可使用的shell 指令,完成文件的创建和内容的写入 比如 cp sed 等等不创建新文件,让ubuntu 18 安装完成后开启bbr sed -i '$a\net.ipv4.tcp_ecn = 1' /etc/sysctl.conf sed -i '$a\net.core.default_qdisc = fq' /etc/sysctl.conf sed -i '$a\net.ipv4.tcp_congestion_control = bbr' /etc/sysctl.conf创建 新文件,让ubuntu 18 安装完成后开启bbr,您可以参考这样的写法 cp -a /etc/hosts /etc/sysctl.d/custom.conf sed -i '2,$d' /etc/sysctl.d/custom.conf sed -i '1s\.*\net.ipv4.tcp_ecn = 1\' /etc/sysctl.d/custom.conf sed -i '$a\net.core.default_qdisc = fq' /etc/sysctl.d/custom.conf sed -i '$a\net.ipv4.tcp_congestion_control = bbr' /etc/sysctl.d/custom.conf
业务系统使用文档>8、商品管理>如何对接魔方云资源包
ccount_type=agent,如下图: 2、添加商品,接口类型选择步骤1添加的接口  3、进行商品配置,用户前台购买时,可以选择的配置 4、其他配置中,代理商对接,资源包ID需要填写商品接口中填写的代理商名下的资源包ID(魔方云平台可以查看)  5、当资源包配置多个时,用户在前台订购商品时,可以选择机器开在哪一个资源包下,如果选择的资源包资源不足时,会提示:资源包XXX不足 
业务系统开发文档>对象存储开发文档
c\plugins\oss\目录下 二、目录结构\plugins\oss\tencentcloud_oss|--- config(自定义配置)|--- config.php(自定义配置文件)|--- TencentcloudOss.php(对象存储主文件)|--- config.php(配置文件,系统后台可配置) 三、开发流程以腾讯云对象存储为例:1、创建腾讯云对象存储目录\public\plugins\oss\tencentcloud_oss\;①目录名以小写字母+下划线形式,必须以字母开头,如tencentcloud_oss; 2、创建入口文件:TencentcloudOss.php:①命名空间namespace oss\tencentcloud_oss(控制器下命名空间对应相应目录即可,其它同理);②以目录名大驼峰+.php,创建在支付接口根目录下,如tencentcloud_oss\TencentcloudOss.php③文件中需要定义info属性,示例:// 插件基础信息public $info = array(    'name'        => 'TencentcloudOss',//Demo插件英文名,改成你的插件英文就行了    'title'       => '腾讯云对象存储',    'description' => '腾讯云对象存储',    'status'      => 1,    'author'      => '智简魔方',    'version'     => '1.0.0',    'module'      => 'oss',    'help_url'    => 'https://cloud.tencent.com/product/cos'); ④必须实现install()安装以及uninstall()卸载方法⑤必须实现‘目录名大驼峰+Link’方法,用于检测对象存储是否联通,如:public function TencentcloudOssLink()⑥必须实现‘目录名大驼峰+Data’方法,用于判断对象存储是否有数据,如:public function TencentcloudOssData($param),无参数⑥必须实现‘目录名大驼峰+Upload’方法,用于文件上传,如:public function TencentcloudOssUpload($param),参数param(此参数为数组,示例json方便显示):{"file_path":"/test/","file_name":"test.png"}参数说明:file_path:文件保存路径file_name:文件名返回:data.url:文件访问地址⑦必须实现‘目录名大驼峰+Download’方法,参数param(此参数为数组,示例json方便显示):{"file_path":"/test/","file_name":"test.png","action":"preview"}参数说明:file_path:文件保存路径file_name:文件名action: 动作,preview预览,download下载返回:data.url:文件下载地址 3、确定是否需要后台配置文件,如果需要,在对象存储根目录下加上config.php,示例:<?phpreturn [    'module_name'          => [// 在后台插件配置表单中的键名 ,会是config[text]        'title' => '名称', // 表单的label标题        'type'  => 'text', // 表单的类型:text,password,textarea,checkbox,radio,select等        'value' => '腾讯云对象存储', // 表单的默认值        'tip'   => '友好的显示名称', //表单的帮助提示    ],    'secret_id'  => [                       // 在后台插件配置表单中的键名 ,会是config[text]        'title' => 'Secret ID',             // 表单的label标题        'type'  => 'text',              // 表单的类型:text,password,textarea,checkbox,radio,select等        'value' => '',                  // 表单的默认值        'tip'   => 'Client ID', //表单的帮助提示    ],    'secert_key'    => [        'title' => 'Secret Key',        'type'  => 'text',        'value' => '',        'tip'   => 'Secret Key',    ],    'bucket'    => [        'title' => 'Bucket',        'type'  => 'text',        'value' => '',        'tip'   => '存储桶名称',    ],    'region'    => [        'title' => 'Region',        'type'  => 'text',        'value' => '',        'tip'   => 'Bucket 所在区域',    ],]; 4、到后台存储对象接口管理界面刷新就会看到新添加的存储对象接口,安装、配置即可使用。 四、示例参考腾讯云对象存储tencentcloud_oss 五、常见问题