🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 部署演示站 为了让用户更好的体验我们开发的插件,我们需要在上线前部署好对应应用插件的演示站。 如果你开发了多个应用插件,为了减少开发者的工作量,你可以将多个应用插件部署在同一个站点中,共用同一个后台管理,但务必使用不同的演示账号用于区分。 ## 温馨提示 演示站务必单独部署,不要将演示站和你的业务系统部署在同一台服务器。 强烈建议关闭文件上传功能,如果一定要开放,请定期检查和清理上传的文件或图片 ## 准备工作 1、一台云服务器,建议使用Linux,如果你还没有云服务器,建议使用腾讯云服务器,点击购买 2、一个域名(必须已经备案且状态正常) ## 安装Web运行环境 建议使用宝塔管理面板来安装Web运行环境。 宝塔安装文档:https://www.fastadmin.net/video/install.html ## 关闭调试模式 演示站务必**关闭**调试模式,后台移除`插件管理`、`分类管理`等几个栏目,只保留必要的演示权限。 调试模式设置方法可以参考:https://doc.fastadmin.net/doc/faq.html ## 安装FastAdmin+应用插件 请参考官方文档安装FastAdmin和你的应用插件,如果有依赖插件,也请一并安装。 ## 配置数据库权限 正常我们安装完FastAdmin和应用插件后,数据库是无任何读写限制的,此时我们需要通过`phpMyadmin`来修改数据库的增删改权限。 首先我们登录`phpMyadmin`后,打开指定的数据库,这里我们以`fastadmin-demo`数据库为例,运行以下SQL语句,请将`fastadmin-demo`替换成你自己的数据库名 ~~~sql GRANT SELECT, REFERENCES, LOCK TABLES ON `fastadmin-demo`.* TO 'fastadmin-demo'@'127.0.0.1'; GRANT UPDATE, DELETE ON `fastadmin-demo`.`fa_sms` TO 'fastadmin-demo'@'127.0.0.1'; GRANT UPDATE (token, loginfailure, updatetime, loginip, logintime) ON `fastadmin-demo`.`fa_admin` TO 'fastadmin-demo'@'127.0.0.1'; GRANT INSERT ON `fastadmin-demo`.`fa_user_money_log` TO 'fastadmin-demo'@'127.0.0.1'; GRANT INSERT, UPDATE (avatar, email, updatetime, nickname, logintime, loginip, username, token, successions, mobile, loginfailure, money, score, level, maxsuccessions, prevtime) ON `fastadmin-demo`.`fa_user` TO 'fastadmin-demo'@'127.0.0.1'; GRANT INSERT, UPDATE, DELETE ON `fastadmin-demo`.`fa_user_token` TO 'fastadmin-demo'@'127.0.0.1'; GRANT INSERT ON `fastadmin-demo`.`fa_admin_log` TO 'fastadmin-demo'@'127.0.0.1'; GRANT INSERT ON `fastadmin-demo`.`fa_user_score_log` TO 'fastadmin-demo'@'127.0.0.1'; ~~~ 接下来我们还需要给你的插件添加指定的增删改权限,我们选中数据库后,点击权限,如图: ![](https://img.kancloud.cn/01/34/013489f444b9186130e83a5464090e9a_1400x608.png) 再点击修改权限,如图: ![](https://img.kancloud.cn/99/c4/99c474c7222278c5691eafce029f72c1_1566x788.png) 默认是只有`select`权限的,此时我们点击`表`,如图: ![](https://img.kancloud.cn/35/50/3550b0db052a57e6e6c00864bdb2266b_1580x1294.png) 点击下方的`选择文本域`,如图: ![](https://img.kancloud.cn/e7/20/e7204ee66243265151acd89e52b4176b_1662x1328.png) 按需选择最小的演示权限,如图: ![](https://img.kancloud.cn/76/58/76587f81d7980e9225b3fc0bf7ed72a6_1606x1190.png) 点击`执行`即可完成一个表的权限设置,重复以上部署对其它表进行权限设置。 在进行以上权限设置后,我们前台部分体验时将会报数据库无权限的错误。请看后续的`优化错误提示`来优化下前台的提示信息。 ## 修改文件权限 当我们后台完成了所有插件配置后,我们需要来设定项目目录的文件和文件夹权限。 首先我们登录到项目根目录,通过以下命令来设定权限 ~~~bash cd /www/wwwroot/yoursite.com chown -R www:www ./ chmod -R 555 ./ chmod -R 755 runtime ~~~ 如果你还希望开放文件上传权限,请执行 ~~~bash chmod -R 755 public/uploads ~~~ 开放了文件上传权限后务必确俣`public/uploads`无脚本执行权限,通常在`Nginx`中可以进行以下设置 ~~~nginx location ~ ^/(uploads|assets)/.*\.(php|php5|jsp)$ { deny all; } ~~~ ## 优化错误提示 > 目前已经可以通过安装演示站点优化插件来实现优化,无需修改任何框架文件,该章节内容可以忽略 当我们完成了以下权限设置后,可能此时我们的后台或前台将会一些`未知数据格式`或`网络错误`等提示,此时我们希望给用户更好的提示,比如:`演示站暂未开放修改权限`。 首先我们修改 ~~~bash application/common/controller/Backend.php application/common/controller/Frontend.php ~~~ 在控制器中添加一个`error`方法,代码如下: ~~~php protected function error($msg = '', $url = null, $data = '', $wait = 3, array $header = []) { $msg = preg_match("/(error|denied)/i", $msg) ? "当前演示站无法进行修改和删除数据" : $msg; return parent::error($msg, $url, $data, $wait, $header); } ~~~ 然后我们在`application/common/library`目录下添加一个`ExceptionHandle.php`文件,代码内容为 ~~~php <?php namespace app\common\library; use Exception; use think\exception\Handle; class ExceptionHandle extends Handle { public function render(Exception $e) { // 在生产环境下返回code信息 if (!\think\Config::get('app_debug')){ $statuscode = $code = 500; $msg = 'An error occurred'; // 验证异常 if ($e instanceof \think\exception\ValidateException){ $code = 0; $statuscode = 200; $msg = $e->getError(); } //数据库异常 if ($e instanceof \think\exception\PDOException){ $code = 0; $statuscode = 200; $msg = "当前演示站无法进行修改和删除数据,请下载到本地安装体验"; } // Http异常 if ($e instanceof \think\exception\HttpException){ $statuscode = $code = $e->getStatusCode(); } $msg = "当前演示站无法进行修改和删除数据"; return json(['code' => $code, 'msg' => $msg, 'time' => time(), 'data' => null], $statuscode); } //其它此交由系统处理 return parent::render($e); } } ~~~ 然后我们修改`application/config.php`中的`exception_handle`值,修改为`\app\common\library\ExceptionHandle` 通过以上设定即可完成相关错误提示的优化。 ## Cookie权限配置 如果你的演示站上线后无法在iframe进行正常的登录,请参考文档:如何解决官方演示站iframe窗口内无法登录的问题? ## H5演示 当我们部署H5演示后,如果需要在PC端体验H5的演示站,需要进行以下操作 安装演示站优化插件,然后在插件配置中配置`H5预览站点列表`,然后通过类似`http://www.example.com/preview.html?site=站点标识`即可在PC端预览H5演示站 H5演示最终效果如图: ![](https://img.kancloud.cn/57/52/5752b0b20a97bd66090ea6190dcec829_2846x1932.png) ## 其它优化 > 目前已经可以通过安装演示站点优化插件来实现优化,无需修改任何框架文件,该章节内容可以忽略 建议你修改`application/config.php`中的`login_captcha`、`login_failure_retry`和`loginip_check`均设定为`false` 建议你在前台和后台登录页面添加演示账号提示,请修改 ~~~sql application/index/view/user/login.html application/admin/view/index/login.html ~~~ 添加上演示账号提示即可,示例代码如下: ~~~xml <div class="alert alert-warning-light"> 账号:admin 密码:123456 </div> ~~~ 效果如图: ![](https://img.kancloud.cn/9b/50/9b50808b5105450846f49c0fd4e2309e_874x621.png) ## 演示站优化插件 该插件仅限用于应用插件演示站优化使用,请勿应用于生产环境!!! 该插件功能包括:演示账号提示、报错提示优化、测试短信、测试邮件、H5在线预览、页面水印等功能。 请使用最新版的 FastAdmin 框架安装本插件。