boonex dolphin安装心得

来源:互联网 发布:新三板越川网络872316 编辑:程序博客网 时间:2024/06/04 21:12

由于项目需要,最近开始研究一款国外的社区软件,澳大利亚boonex公司的dolphin社区套件。尽管国内已经有很多不错的开源社区软件如discuz等,但dolphin提供了近40中模块插件来扩展社区功能,还基于该平台开放了应用扩展市场,可以像app store一样开发插件售卖,另一方面顺应了移动互联网的趋势,配合web版程序发布了ios/android平台的移动应用端,可以很快搭建全平台的社区环境,非常适合项目需要。

说完了优势再说说缺点,不知道是不是使用的免费版的原因,在安装配置过程中非常纠结:

  1. 该套件虽然是php写得,但是跨平台性很差,很多配置和外部工具在源码中写死使用linux平台工具,如在安装过程中居然直接调用“popen("whereis php)”,在windows平台上直接导致无法安装,只能新装了一台linux服务器来配置应用。
  2. 域名配置几乎让人疯掉,不爽的地方多的吐血:
    • 在不直接修改源码的情况下除了在安装过程中指定了域名配置以外就没有地方能够二次配置域名了,写好的域名会直接写死在inc文件中,后台控制台也无法修改
    • 配置的域名只能使用80默认端口,因为在安装脚本中会写死80端口的url调用,如果需要更改端口那会很麻烦,详见下文。
    • 由于域名会写死在inc文件中,因此生成的html页面中所有页面跳转、js、css地址均采用绝对地址,形如http://domain.con:port/js/xx.js,这样就无法采用反向代理来做端口映射
    • 源码中还莫名其妙的增加了一个端口判断,如果发布端口不是80,则会自动跳转到请求域名的根链接,光是查这个问题就花了两天!!!
配置环境:

  1. 公司有固定的公网ip,采用路由器接入,公司内网架设在路由器之下
  2. 所有到固定ip的请求根据端口号分发到各服务器上,已经有nginx代理接管80端口请求做代理分发
因此如果需要在内网服务器上配置dolphin应用,而且需要外网能够访问,一般可行的办法有:

  1. linux服务器apache启用80端口,绑定内网ip及对应的virtualhost,然后域名绑定到公网ip,请求80默认端口,然后由nginx用linux内网ip方式转发到linux服务器上。此方法最简单。但是由于上述第3点域名配置缺陷,所有的链接资源全部是绝对地址,会造成内网ip与域名不对应,无法转发。因此这个办法无效
  2. linux服务器apache启用非80端口,在路由器上直接做端口映射将请求转发到linux服务器上去,绕过nginx代理。但由于上述第2点域名配置缺陷,所以无法在安装阶段就采用非80端口发布,否则安装阶段就会出错。
就这样折腾了两天,重启了n次apache,最终才找到一个很蛋痛的方法来发布应用:

  1. 还是采用非80端口发布结合路由器映射的方法
  2. 初始配置apache,新建一个80端口的virtualhost指向该应用目录
  3. 访问改virtualhost进行安装,安装可以顺利进行
  4. 安装完后修改apache配置,增加非80端口监听(如8001端口),将virtualhost的指向转到8001端口
  5. 修改源码,注释掉非80端口即跳转的判断
  6. 修改生成的inc文件,修改域名配置,指向8001端口
  7. 重启apache,在路由器上增加8001端口映射,指向linux服务器,这样就可以采用domain:8001的方式提供公网访问了
本来还想采用nginx进行端口隐藏(直接请求域名不指定端口访问应用),但由于链接全是8001端口的绝对地址,所以除了应用首页以外点击其他任何链接都会直接访问8001端口的链接,因此nginx代理基本失效。

从来没见过如此蛋痛纠结的应用配置,老外真能折腾人啊,还是说需要收费所以故意搞成这样....