destoon 介绍

destoon 是一个 b2b 网站管理系统,商用需要 购买授权。它提供了很多的增值服务,包括移动客户端和小程序,还可以提供一些产品技术服务。这套系统经过十年左右的产品迭代升级,功能已经趋于完整。目前版本为 v7,购买之后估计还会有一些代码升级包。

我这边只是测试 destoon 框架的一些特性,所以直接下载 官方版本 就好。要不是官网做了二次开发,修改了太多的东西,升级版本其实是最好的选择。

destoon 下载安装

下载地址:https://www.destoon.com/download/

因为下载本身需要登录,所以不能直接 wget 下载到服务器,需要先下载到本地,再上传到服务器。

完整安装包名:DESTOON_7.0_UTF8.zip

压缩包内存在文件夹,unzip DESTOON_7.0_UTF8.zip 解压到当前文件夹,会出现 destoon 文件夹和一个 Readme.html 的安装教程。

以下信息摘录自 Readme.html 安装教程:

安装说明
系统运行环境:可用的 httpd 服务器(如 Apache、Nginx、IIS 等) / PHP 4.3.0 及以上 / MySQL 4.0.0 及以上

第一步:上传本软件包内 destoon 目录下的所有文件及目录至您的服务器站点目录。

第二步:如果安装 DESTOON 的站点访问网址为 http://www.abc.com/,则访问 http://www.abc.com/install/ 进入程序安装向导。

第三步:根据安装向导提示设置必要的数据库连接参数以及必要的文件属性完成系统安装。

常见问题
1、500 internal server error,请删除根目录下.htaccess文件 或 对于 Liunx/Unix 服务器,如果不支持 0777 属性,可修改 config.inc.php 内 $CFG['file_mod'] = 0777; 为 $CFG['file_mod'] = 0755

2、license.txt 文件不存在或被修改,请 FTP 二进制上传 license.txt

里面包含了系统环境、安装步骤以及常见的问题解决。

做好域名解析和虚拟主机映射工作之后,访问 http://xxx/install(我解析的访问地址),按照安装步骤提示的完成填写相关数据库信息就好。

需要特别注意是一个文件权限设置的步骤。Linux 系统盛产各种因为访问权限而导致应用无法正常运行的问题。我作为一个老江湖也依然栽了个跟头。

在这个文件访问权限设置的步骤里,主要有以下文件需要设置读写权限:

aboutbaidunews.xmlconfig.inc.phpfile/*index.htmlsitemaps.xml

因为安装过程中需要写入数据库信息(config.inc.php),网站拓扑信息(baidunews.xmlsitemaps.xml),安装完成后还要删除入口指引文件(index.html),然后应用本身需要做默认的文件缓存(aboutfile)。

设置权限需要注意的是,默认的 web 访问 www 用户和用户组和直接的权限设置是有一定的区别的。要确保 www 用户具有 777 或者 755 的权限,然后设置文件所属者为 www,文件才能具有相关的权限。

我的是个人服务器,默认 www 用户具有 777 权限。

chown www:www about
chown www:www baidunews.xml
chown www:www config.inc.php
chown www:www file
chown www:www file/*
chown www:www index.html
chown www:www sitemaps.xml

修改后刷新显示成功,可以进入下一步。

我也是这么想的,但安装结束之后,访问网站首页,依然是入口引导页面。查看目录,install 文件夹也没有被删除。cat config.inc.php 查看数据库信息写入成功,admin.php 登录后台也是成功的。

直接访问 index.php 首页入口文件,显示一片空白,但请求返回 200。说明这种情况跟 .htaccess 无关。维护官网的经验告诉我,这是相关缓存文件没有生成。

在后台多次点击生成首页和更新缓存均无功而返。想着先测试一下 about 下的几个单页,如果这几个单页能够写入成功,那么其他缓存或许也可以使用相同的方法修改。

看了一下其中的 关于我们 页面,页面提示后台更新模板页面,后台模板内容为 关于我们,点击更新数据没有效果。

从命令行查看 about,文件夹本身权限 777 没有问题,进入文件夹内,四个单页文件用户组为 root,权限为 644,即其他用户和用户组只有读权限。

修改 about 下所有文件的权限:

cd about
chown www:www ./*

此时用户和用户组为 www,权限为 777。

[notice]注意:如果发现修改了用户和用户为 www 而权限没有相应的变化,说明当前系统下的 www 用户和用户组权限不够,直接用 chmod 777 xxx 来修改权限。[/notice]

此时后台更新数据,前端显示正常。这说明前端页面不显示或者说显示空白就是因为相关文件无写入权限。

根据经验,来到 destoon 缓存目录 file/cache 下,查看文件权限。虽然所有文件的用户和用户组都是 www,但权限并没有达到 777。

修改后,在后台更新缓存,生成首页,此时访问 xx/index.php 显示正常。

后续删除 index.htmlinstall 即可通过域名正常访问。

此时页面突然弹出已提示 xxx::bad request!,然后自动跳转到 官方文档中的解决方案

原因:file 目录无法写入,导致 file/script/config.js 没有正确写入网站配置信息。
解决方法:设置 file 目录写入权限,确保 file/script/config.js 文件可写,在网站后台点生成首页,系统会重新生成 config.js,然后检查 config.js 里的网址是否正确。如果网址正确,情况依旧,可以清除浏览器缓存再刷新测试。

file 和 script 文件夹权限都是 777,那就是 config.js 本身的权限文件了。一查看,果然缺少写入权限。

默认 config.js 文件内容:

var DTPath = "http://demo.destoon.com/v7.0/";var DTMob = "http://demo.destoon.com/v7.0/mobile/";var SKPath = "http://demo.destoon.com/v7.0/skin/default/";var MEPath = "http://demo.destoon.com/v7.0/member/";var DTEditor = "fckeditor";var CKDomain = "";var CKPath = "/";var CKPrex = "ck7_";

chmod 777 file/script/config.js 赋予权限之后,在后台点击更新缓存,然后清除一下浏览器缓存再刷新页面,问题解决。

那么万一之后再出现各种访问权限的问题怎么办,是有那种一劳永逸的方式:chmod -R 777 file/*。但不建议这样搞,因为可能会存在一些未知安全隐患。

至此,大功告成!

附:大型网站架构演化历程 - destoon