Pages

Tuesday, 27 May 2014

Discourse-一个基于Ruby on Rails和PostgreSQL的论坛程序


A platform for community discussion. Free, open, simple.
Discourse is the 100% open source discussion platform built for the next decade of the Internet. It works as:

    a mailing list
    a discussion forum
    a long-form chat room

To learn more about the philosophy and goals of the project, visit discourse.org

Development
  1. If you're brand new to Ruby and Rails, please see Discourse as Your First Rails App or our Discourse Vagrant Developer Guide, which includes a development environment in a virtual machine.
  2. If you're familiar with how Rails works and are comfortable setting up your own environment, use our Discourse Advanced Developer Guide.
Before you get started, ensure you have the following minimum versions: Ruby 1.9.3+, PostgreSQL 9.1+, Redis 2.6+. If you're having trouble, please see our TROUBLESHOOTING GUIDE first!

Setting up a Discourse Forum

If you want to set up a Discourse forum for production use, see our Discourse Install Guide.
If you're looking for business class hosting, see discourse.org/buy.

Requirements

Discourse is built for the next 10 years of the Internet, so our requirements are high:
Browsers Tablets Smartphones
Safari 5.1+ iPad 2+ iOS 6+
Google Chrome 23+ Android 4.1+ Android 4.1+
Internet Explorer 10+ Windows 8 Windows Phone 8
Firefox 16+

Internet Explorer 9.0 is technically supported, but it is our absolute minimum spec browser and may not be fully functional.

Built With

  • Ruby on Rails — Our back end API is a Rails app. It responds to requests RESTfully in JSON.
  • Ember.js — Our front end is an Ember.js app that communicates with the Rails API.
  • PostgreSQL — Our main data store is in Postgres.
  • Redis — We use Redis as a cache and for transient data.
Plus lots of Ruby Gems, a complete list of which is at /master/Gemfile.

from  https://github.com/discourse/discourse
--------------------------------------------------------
论坛系统Discourse

Discourse是基于 Ruby on Rails 和 Ember.js 开发的开源论坛系统,由Stack Overflow 的联合创始人 Jeff Atwood所创立,摒弃了传统论坛的话题讨论形式、取而代之是类似问答的热贴,帖子以气泡形式展现,全部Ajax加载,采用了瀑布流的设计,自动加载下一页,无需手动翻页。拥有自学习系统、 Web应用同时适用于桌面和移动终端。数据库支持使用 PostgreSQL 和 Redis。多语言支持(包括中文)。

Discourse相对于Discuz!优势在于:简洁,用户能找到中心和自己感兴趣的话题;论坛论坛用户数可大可小;专业性强,Discourse更适合讨论共同的话题,以话题为关系聚集。

在线演示:http://try.discourse.org/

[repo owner=”discourse” name=”discourse”]
----------------------------------------------------------------

Discourse 轻论坛的详细介绍

Discourse 是 Stack Overflow 的联合创始人 Jeff Atwood 推出的一个新的开源论坛项目,其目的是为了改变十年未变的论坛软件。

Discourse 摒弃了传统论坛的话题讨论形式,它拥有自学习系统、全Web应用同时适用于桌面和移动终端

Discourse 基于 Ruby on Rails 和 Ember.js 开发,数据库使用 PostgreSQL 和 Redis

Discourse 论坛的界面,官方的示例 Demo,先有一个直观的感受,如下图:

Discourse 是一个免费、开源的轻论坛,一个全新的论坛模式,具备传统论坛的话题讨论,又有了流行的问答风格,独有的会员关系网络和话题关联机制,让用户的交流和快速高效的寻找问题答案,优秀的用户体验获得了众多站长的青睐。

 

Discourse 官网http://www.discoursecn.org

Discourse 中文网http://www.discoursecn.org

Discourse 源码https://github.com/discourse/discourse (开源、免费,官方收费是服务器和维护费)


Discourse 是否收费?

官方收费价格:https://www.discourse.org/pricing

收费是官方提供 Discourse 托管服务,也提供安装服务的费用,例如:帮你采购服务器、带宽、运维、售后等服务成本。

Discourse 是 100% 免费且开放源代码的软件,无论何时,开源代码托管在 github,你完全可以下载源码,自己安装。

您也可以在 30 分钟内在云服务器中自己安装 Discourse,本文下面就介绍图文安装教程。

 

Discourse 特性

不支持 IE9 以下的版本。

不同于旧的页面式展示,全部基于滚动式的刷新,只要不停地往下刷,无须寻找下一页了。

当您的帖子收到了新的回复,或是有人@您了,你都将收到通知。

界面基于js,后端使用ruby rails开发,所以无须开发app,能够良好的支持各类终端。

 

Discourse 是 JavaScript 应用运行于浏览器中,使用了 Ember.js JavaScript 框架。

服务器端的 Discourse 是用 Ruby on Rails 和 Postgres 数据库,以及 Redis 服务器端缓存。

您可以自行用 Docker 容器在任何有 1GB 内存的虚拟化云服务(Digital Ocean、Amazon EC2、rackspace、azure)中部署 Discourse。

Discourse  采用的 GNU 通用公共许可协议(GPL),第 2 版

更多的中英文介绍,请见:Discourse 是什么 , github

 

Discourse 优势

Discourse 是全新打造的,力图打造一个现代的、可持续的并且完全开放源代码的互联网讨论平台。

它的设计必须符合现代,不仅是从技术角度,还是从社会学的角度上。

1、我们是文明人

我们的信任系统为社群建立了一个免疫系统,用于防范骚扰、捣乱的人以及广告发布者 —— 并且热心地社群成员能帮助一起管理他们自己的社群。

我们设计了简单和易用的标记系统,就像是在每条街的角落放上了垃圾桶。积极地行为可以通过赞和徽章来鼓励。

我们友善地并不断地用适时出现的提醒来教育用户文明讨论的通用法则。

2、坚决地开放源代码

Discourse 只有一个版本 —— 最棒的版本(github),没有什么秘密特殊的需要付费才能使用的高级特性,即 100% 开源,100% 免费

绝大多数社群所需的特性都包含在 Discourse 中,即时可用;不需要一大堆复杂的插件才能打造完美体验。

并且因为 Discourse 是 100% 开放源代码,所以无论何时它不仅属于我们而且属于您。这应该就是社群如何运行的方式。

3、简洁、现代、有趣

讨论不应该是困难的,让人疑惑的或是难以进行。参与在线讨论应该是体验良好的,而不像如今的论坛和邮件列表一般。

它应该让人有意愿参与其中,与其他人同样对这些事情感到兴奋的人一起讨论。

 

Discourse 设计初衷

Discourse 是由Stack Overflow 的联合创始人 Jeff Atwood推出的免费开源论坛项目,基于Ruby on Rails 和 Ember.js 开发,数据库使用 PostgreSQL 和 Redis。这是一个与传统的Discuz!、PHPBB等具有非常大区别的论坛形式,创始人甚至想要让Discourse改变十年未变的互联网论坛模样。

Discourse 简化了传统论坛的分类,取而代之是热贴,这点有点像问答,它可以避免用户进入传统论坛后找不到方向的迷茫

Discourse的帖子是气泡形式展现,全部Ajax加载,有电脑和移动版,论坛采用了瀑布流的设计,自动加载下一页,无需手动翻页。

总体,感觉就是Discourse不再花哨。

Discourse 相对于Discuz!可能的优势(优点):

1、简洁,用户能找到中心和自己感兴趣的话题;

2、论坛论坛用户基础亦小亦大,如果用Discuz!搭建几十个人的讨论平台显然不适合;

3、专业性强,Discourse更适合讨论共同的话题,它不再是像Discuz!以用户为纽带而聚集,而是以话题为关系聚集。

目前,Discourse被大规模地使用还有困难(缺点):

1、Discourse 不是PHP开发的程序,所以PHP主机空间等都是不能安装的,

2、Discourse 基于Ruby ,不少人可能会选择更熟悉的PHP论坛程序。

3、Discourse开始于2013年,但是现在已经聚集不少的开发者,程序也在不断地完善当中,从目前来看它确实能够弥补Discuz!传统论坛的不足。

 

 

Discourse 优化改进

Discourse 提供了一键设置CDN,CSS、JS、图片等静态文件都可以使用CDN来加速,对于国外的空间架设Discourse而使用国内的七牛CDN加速的效果是非常好的。Discourse有导入和导出备份,网站搬家的话就可以用导入与导出了。

Discourse作为一个论坛,有时为了安全可以为Discourse设置Https连接,添加SSL证书,保证用户的隐私。

而Discourse作为一个论坛,也支持使用Google等第三方账号登录。

更多请参见:Discourse用CDN加速,搬家,换域名,SSL加密,插件和第三方账号登录设置

 

 

Discourse 搭建论坛的应用案例

1、Discourse 官方论坛示例

https://try.discourse.org

 

2、Atom China 论坛

https://atom-china.org

 

3、MXNet / Gluon 论坛

https://discuss.gluon.ai

 

其它好看的网站论坛

1. SegmentFault:https://segmentfault.com

2、InfoQ: https://www.infoq.cn

3、Ruby 中国社区:https://ruby-china.org/topics 

4、TesterHome:https://testerhome.com/topics

5、小米论坛:http://www.miui.com/forum.php (米柚)

6、CSDN 论坛:https://bbs.csdn.net (不好看,老破旧)

7、华为云论坛:https://bbs.huaweicloud.com/forum/ (其也有博客回答,做得都不错)

8、阿里云博客:https://yq.aliyun.com/zt/articles-477008 (也有回答,无论坛)

9、腾讯云论坛:http://bbs.qcloud.com/forum.php (自家的Discuz,2018年后不再更新)

10、OSChina 回答:https://www.oschina.net/question

讨论:

论坛搭建工具 Discourse 的使用体验如何?有哪些优势和不足? (知乎) 

from http://web.archive.org/web/20230615190228/https://blog.mimvp.com/article/38144.html

------------------------ 

Discourse 轻论坛的图文搭建教程

Discourse 是 Stack Overflow 的联合创始人 Jeff Atwood 推出的一个新的开源论坛项目,其目的是为了改变十年未变的论坛软件。

Discourse 摒弃了传统论坛的话题讨论形式,它拥有自学习系统、全Web应用同时适用于桌面和移动终端

Discourse 基于 Ruby on Rails 和 Ember.js 开发,数据库使用 PostgreSQL 和 Redis

Discourse 论坛的界面,官方的示例 Demo,先有一个直观的感受,如下图:

Discourse 是一个免费、开源的轻论坛,一个全新的论坛模式,具备传统论坛的话题讨论,又有了流行的问答风格,独有的会员关系网络和话题关联机制,让用户的交流和快速高效的寻找问题答案,优秀的用户体验获得了众多站长的青睐。 

Discourse 源码https://github.com/discourse/discourse (开源、免费)


Discourse 是由 Stack Overflow 创始人之一的 Jeff Atwood 主导的开源论坛项目,使用时能感受到和 Stack Overflow 的关联性,比如为鼓励有效的技术讨论、控制人身攻击等做了很多努力,页面的布局方式也有相似之处。Discourse 提供了非常丰富的配置方式,也支持插件扩展,是值得学习的论坛类开源项目。

本文主要介绍通过 Docker 镜像的方式在公有云环境中部署 Discourse 环境,公有云选为阿里云,操作系统为 Ubuntu 16.04。

 

1. 准备工作,配置服务器 

1.1 阿里云环境准备

Discourse 官方文档中推荐的最低配置是 1 核 2G,这里就选用了最低配:ecs.n4.small

对于没有很高访问量的站点,这个配置也足够用了。

服务器购买完成后,记得要更新一下系统,最新的系统修复了不少 bug:

1
2
sudo apt update
sudo apt upgrade -y

 

1.2 邮箱配置

Discourse 比较依赖邮箱系统,需要根据邮箱来进行注册和消息通知,所以一定要有一个可用的邮件服务系统

Discourse 推荐使用第三方的邮件系统,其实自己搭建也是完全可行的,但邮件系统搭建也要花费一定的精力,而且也有一定的难度

本文使用的邮箱系统是 ElastishMail,具体的注册方式就不详细描述了。

 

1.3 注册域名

使用 IP 访问当然也是没有问题的,不过总归是不方便,建议还是为接下来要搭建的 Discourse 站点注册一个域名

阿里云收购了万网,所以域名注册在阿里云的网站内就可以搞定了。

 

2. 基础安装,配置 Discourse

Discourse 本身是挺复杂的,看安装过程的耗时和输出信息就知道了。

幸运的是,Discourse 提供了自动化安装的脚本,较低了部署的难度。

Discourse 依赖的软件并不多,主要是 git(用来拉取 Discourse 的代码)、docker(因为要使用 Docker 部署) 和 ruby(原因是 Discourse 是用 ruby 编写的)以及 ruby 的包管理工具 gem。

安装 git

1
2
# install git
$ sudo apt install git

 

安装 docker

1
2
# install docker
$ sudo wget -qO- https://get.docker.com/ | sh

 

配置 docker 使用国内的镜像

1
2
3
4
5
6
7
# Configure docker to use Chinese mirrors
$ sudo vim /etc/docker/daemon.json
{
  "registry-mirrors": ["https://registry.docker-cn.com",
                       "http://hub.c.163.com"]
}
$ sudo systemctl restart docker.service

 

安装 discourse

1
2
3
4
5
6
# install discourse
$ sudo -s
$ mkdir /var/discourse
$ git clone https://github.com/discourse/discourse_docker.git /var/discourse
$ cd /var/discourse
$ ./discourse-setup

 

运行 discourse-setup 脚本后,会提示输入一些安装信息,以此输入之前注册的域名和邮箱信息,即可。

1
2
3
4
5
6
7
Hostname for your Discourse? [discourse.example.com]:
Email address for admin account(s)? [me@example.com,you@example.com]:
SMTP server address? [smtp.example.com]:
SMTP port? [587]:
SMTP user name? [user@example.com]:
SMTP password? [pa$$word]:
Let's Encrypt account email? (ENTER to skip) [me@example.com]:

 

配置完成后,需要进行很久的编译,稍安勿燥,半小时之内都是正常的。

等待脚本 discourse-setup 脚本执行结束,就可以访问刚刚配置好的 discourse 网站了!

Disourse 欢迎界面

PS:Discourse 在国内云环境中部署,因为众所周知的原因,软件包的下载可能会遇到问题,本文所参考的一篇资料中谈到了gem 的连接问题,不过在写作本文的过程中并没有遇到该问题,如果遇到网络原因造成的安装失败,大家就需要各现神通了。

 

3. 进阶配置

3.1 设置自动备份

为了网站的信息安全,当然要对数据定期进行备份,配置备份的界面如下:

上图中,配置的是每天备份一次,保留最近的七个备份。

但这依然有问题,原因是备份文件是存储在 docker 内部的,万一 docker 崩溃了,备份文件也一样拿不回来

更为保险的方式是将备份文件再上传到第三方的存储系统中,discourse 也支持这样的配置,但因为 discourse 的作者生活在美帝,用的都是 S3、Dropbox、Box 和 Google Drive,我等国内“大局域网”只有看着流口水的份,所以完全不可用。

目前,解决方式是 crontab 启动定时任务,然后用 python 上传备份文件到内部的 Ceph 集群里,因为没有通用性,就先不把这种方式的详细步骤放上来了,如果有需要的话,我可以考虑把上传到 OSS 公有云的方法补充上。

另外自己写 Discourse 的插件也是可行的,只是我对 Ruby 完全不了解,所以没有采用这种方式。

 

3.2 设置 https

对于 HTTPS 的支持,discourse 也提供了自动化脚本,只需修改配置文件,并重新编译即可。

修改配置文件:需要在 /var/discourse/containers/app.yml 的 templates 段中增加一个行:

1
2
3
4
5
6
$ cat /var/discourse/containers/app.yml
...
templates:
...
  - "templates/web.letsencrypt.ssl.template.yml"
...

 

然后执行以下命令:

$ /var/discourse/launcher rebuild app

脚本运行结束后即完成了 https 的配置,但这个执行时间依旧不短,大概在十到二十分钟。

 

4. 参考资料

Discourse cloud installation guide

Discourse automatic backups

Stuck for a step for long time during installation

Discourse plugins

Discourse plugins page on github

How to install a plugin

Setting up Let's Encrypt

Discourse优化改进

Discourse 提供了一键设置CDN,CSS、JS、图片等静态文件都可以使用CDN来加速,对于国外的空间架设Discourse而使用国内的七牛CDN加速的效果是非常好的。Discourse有导入和导出备份,网站搬家的话就可以用导入与导出了。

Discourse作为一个论坛,有时为了安全可以为Discourse设置Https连接,添加SSL证书,保证用户的隐私。

而Discourse作为一个论坛,也支持使用Google等第三方账号登录。 

Discourse 搭建论坛的应用案例

1、Discourse 官方论坛示例

https://try.discourse.org

 

2、Atom China 论坛

https://atom-china.org

 

3、MXNet / Gluon 论坛

https://discuss.gluon.ai

 Discourse搭建 (CSDN) 

from http://web.archive.org/web/20240717033542/https://blog.mimvp.com/article/38101.html