DotNetNuke, DNN技术及应用

DotNetNuke 多站点系统如何帮你省钱

December 22nd, 2008

多站点系统是DotNetNuke其中一个很强的功能, 我在这里会介绍下DNN多站点系统是如何工作的,看过这篇文章你将会了解它是如何帮我们节省租用主机的费用以及DNN主站点和子站点的区别。

摘要:

  • 普通的主机租用方式
  • DotNetNuke 多站点系统
  • DNN 的多站点系统是如何工作的呢?
  • DotNetNuke 站点(portal)类型, 主站点和子站点
  • 主站点, 子站点都是平等的
  • 站点编号 (portal number) 和网站资源
  • 多站点管理
  • 主机管理员资源控制

普通的主机租用方式

普通的虚拟主机租用方式通常是, 你买一个域名然后买一个虚拟主机服务套餐,如果你想再买另外一个域名,你可能有两个选择

  1. 在同一个帐号里再开通一个新的网站
  2. 买一个新的虚拟主机服务套餐

这些都需要你再掏腰包,在IIS里创建一个新的网站,和买一个新的虚拟主机显然都不是免费的,那么为多个域名购买主机网站空间就变成了你生意一个很大的开销。


DotNetNuke 多站点系统

DotNetNuke 可以用一个主机服务帐号(1个IIS网站)来管理运行多个域名。 在主机中你只需要安装一个DotNetNuke网站然后在 DNN 系统中为每个域名创建一个站点(portal)。 如此简单,你再不需要为你的这些网站付多份主机服务费了。 每个域名下站点的内容看起来都是独立的,互不影响。

DNN 的多站点系统是如何工作的呢?

  1. 把所有域名指向虚拟主机
    购买域名从一个或多个域名服务商,在域名服务商提供的DNS设置里把所有域名指向虚拟主机的ip, 如果不知道怎么做可以看看 四招教你快速学会怎样设置域名解析
  2. 在虚拟主机中把所有的域名指向 DotNetNuke 网站系统
    在虚拟主机的IIS控制面板设置中把所有域名指向DotNetNuke网站的IP地址
    如果有IIS的控制权直接在DotNetNuke网站Host Header设置里加入这些域名,端口号为80
  3. 在DotNetNuke系统中建立网站(portal)
    在DotNetNuke系统中为每个域名建立一个站点,当有请求进入,网站别名设置(portal alias settings)会把请求的域名转向正确的站点(portal)

DotNetNuke 多站点系统示意图

图1 – DotNetNuke 多站点系统示意图

DotNetNuke 站点(portal)类型, 主站点和子站点

在 DotNetNuke 社区经常会有人搞不清楚主站点(parent )和子站点的区别。 其实他们唯一不同的只有URL

  • 主站点 (parent portal)主站点是拥有独立域名的站点, 例如:
    www.dnnmix.com
    www.cnblogs.com

    http://skins.dnnmix.com

    http://group.cnblogs.com

    * 请注意这里包含子域名

  • 子站点(child portal) – 子站点就是URL是在独立URL之下的网站, 例如
    www.dnnmix.com/dnn5
    www.cnblogs.com/dnnmix

    http://modules.dnnmix.com/blog

    * 请注意子域名同样可以拥有子站点
    * 如果在域名后使用 “/” 例如 www.dnnmix.com/ 这将是一个子站点

主站点, 子站点都是平等的

所有的站点(portal), 不论是子站点还是主站点都是平等的, 他们在功能和管理上没有任何的不同。 当你创建一个站点,DotNetNuke会给你一个默认的站点编号 (portal number) 站点编号是从零开始的。 在这里站点 100 和站点 0 是没有任何优先区别的。

不同的是?

主站点和子站点唯一不同的是, 建立子站点的时候会在 DNN 网站主目录生成一个同名的目录,例如建立子站点www.dnnmix.com/blog 网站主目录下会生成blog文件夹, 里面有一个default.aspx, 这个文件会转向请求到主目录。因此可以看到主站点因为没有转向所以会有一点点性能上的优势。

当首次访问子站点,你会发现URL是以下形式

  • 输入 www.dnnmix.com/blog
  • URL会变成 www.dnnmix.com/default.aspx?alias=blog

当你再点击网站内的其他连接URL将会是正常的, 只有在第一次读取子网站时URL才会重写出现?alias=blog, 如果你想要去掉它可以看看John Mitchell在他blog中的方法 。

站点编号 (portal number) 和网站资源

当创建站点的时候 DotNetNuke 会分配一个站点编号给这个站点, 同时会在/portals 目录下生成一个以编号命名的文件夹,例如创建子站点www.dnnmix.com/blog 站点编号是3,你会发现/portals/3 这个目录已经生成了。 这个目录里包含的是和这个站点相关的一切资源,例如日后上传站点专用皮肤会直接传到/portals/3这个文件夹,文件管理器里上传的文件也会传到这个文件夹… 这样确保了各个站点间的资源独立。

当你在添加新站点的时候可以用定制功能重新命名/portals/3这个文件夹,但是在建立完站点的时候就不能修改了

多站点管理

只有主机管理员(host account)才拥有管理所有的主站点和子站点的权限。
如果一个用户在其中一个站点注册并获得了站点管理员权限, 那么这个用户只能编辑管理他所在的站点。
另外主站点和子站点的管理是完全一样的。

主机管理员资源控制:模块, 皮肤, 硬盘空间

  • 主机管理员可以分配给不同的站点指定的模块和皮肤
  • 主机管理员帐号是唯一拥有上传模块(module)权限的账号
  • 主机管理员可以设置是否允许站点管理员上传皮肤到自己的站点
  • 另外的一些控制还包括
    • 分配硬盘空间给各个站点
    • 设置是否允许网站使用网站记录 – 网站访问记录

现在我想你已经了解了 DotNetNuke 多站点系统的基本工作原理, 接下来有时间我会介绍下如何设置和管理多站点系统。

10 个评论 - " DotNetNuke 多站点系统如何帮你省钱 "

  1. xiong March 25th, 2009 at 7:39 pm 1

    请教,如果有多个 portal绑定到不同的域名,那它们之间的数据传输是否会受到影响呢?
    举例:我有一个 host 绑定域名 http://www.a.com,
    还有 http://www.b.com, http://www.c.com, http://www.d.com 分别绑定到 portal2, portal3, portal4。 现在我想让 protal2,portal3 的网站主站共享用户数据,同时还希望 http://www.d.com 保持自己独立的用户数据系统,可以实现以及如何实现呢?

    再次感谢。

  2. John March 31st, 2009 at 1:45 am 2

    传输会不会受影响主要含看web服务器资源和数据库资源是不是充裕。DNN中每一个主站点站点和子站点的用户数据都是独立的所以没法共享除非订制模块,但是如果你安装2个独立的DNN系统 这两个系统的登陆是可以通过设置AspNetSqlMembershipProvider来共享的,但是用户档案并不同步,也需要订制

  3. apl330 April 30th, 2009 at 3:11 pm 3

    如何将第一个别名删除

  4. John April 30th, 2009 at 3:51 pm 4

    @apl330
    用其它的别名访问网站, 再用管理员帐号登陆就可以删除了

  5. apl330 May 4th, 2009 at 1:21 pm 5

    感谢John

  6. John May 7th, 2009 at 5:38 pm 6

    不客气~

  7. apl330 May 17th, 2009 at 3:03 pm 7

    有一个问题,在DNN网站中建立了一个子网站,它的别名是:www.####.com/english 假如主站的域名是www.####.com/ 我试过,结果无法找到该页面。出现这样的结果,因为我缺少哪个知识点呢?

  8. John May 17th, 2009 at 4:13 pm 8

    你可以试试:
    1. 看看主站点www.####.com可不可以访问
    2. 在“主机管理->主机设置”里清除缓存,重启网站,再试试看子站点可不可以访问
    3. 到/portals/目录下看看新建的子站点有没有生成新的文件夹。

  9. 罗锣 September 1st, 2009 at 11:40 pm 9

    John,创建多站点,是否必须至少有一个是主站点呢?
    我创建了2个子站点之后,把之前的主站点删除了,结果打开页面的时候报错:

    发生重要错误
    未将对象引用设置到对象的实例。

    是不是跟这个有关呢?

    怎么解决?

  10. John September 2nd, 2009 at 11:41 pm 10

    @罗锣
    至少要有一个主站点, 不能删除主站点如果只有一个, 如果已经访问不了网站你只能hack数据库了, 把子站点改成主站点, 你可以看看[portals]表


发表评论

footer 1

Copyright © DnnMix : DotNetNuke, DNN技术及应用