Discourse是Stackoverflow的联合创始人Jeff Atwood推出的在线论坛工具,跟传统的论坛相比,更具有Web2.0的味道。Discourse的口号是“Civilized Disscussion”,也就是“文明地讨论”的意思。最近Discourse越来越火,成为许多人搭建论坛的首选方案。本文介绍了如何在主机平台Vultr上搭建Discourse论坛的过程和遇到的问题。
首先为啥要选Vultr作为主机平台呢?因为Vultr提供的5美元套餐(单核CPU、1G内存)是Discourse推荐的最低配置。另一家很火的主机平台是Digital Ocean(DO),他们的5美元套餐少了一半内存(只有512MB),而且存储也要略少(20G SSD对比Vultr的25G SSD)。
小广告插入:
- 想注册Vultr的朋友可以帮我点下推荐链接http://www.vultr.com/?ref=7163419
- 想注册Digital Ocean的也可以帮我点下推荐链接https://m.do.co/c/a479d75a5648
这两家推荐奖励的差别是,DO会给新注册者10美元奖励,Vultr不会。
一些准备工作
第一个问题是域名,如果没有域名的话需要申请一个。因为我搭建Discourse只是为了试验,没有打算在国内备案,所以域名是在Aamazon AWS上买的。AWS的域名服务叫Route53,一个.com域名12美元一年,还带隐私保护功能,别人dig你的域名的时候看不到所有人的信息。这个价格不能算全网最低,但还是比较低了,跟把域名和隐私功能分来来卖的Godaddy比起来简直就是良心商家。
第二个问题是SMTP邮件服务。Discourse的管理员账号是通过SMTP发送注册确认邮件的,没有SMTP,Discourse就没办法用。Discourse的文档推荐了几家云邮件服务提供商,我选的是Mailgun。到Mailgun注册一个账户,把之前注册的域名添加到Mailgun账户,然后根据提示到AWS Route53上配置一下DNS信息,就可以了。
AWS Route53和Mailgun都是英文的文档居多,所以对英文不好的朋友,说声抱歉咯。
安装Discourse
注册完Vultr,用信用卡或者Paypal往里面充钱,完了就可以开始安装工作了。
这里又一个坑,Vultr有2.5美元的主机,你充完值之后想购买的话,会告诉你已经卖完了,坑爹!不过我们不会用2.5美元主机,这里只是告诉大家这个坑爹的地方。
Vultr提供了安装Discourse的英文教程。英文不好的同学可以参考这个中文的版本(是在DO上搭建,不过大同小异)
简要的步骤总结如下:
- 创建一个64位的Ubuntu 16.04LTS操作系统的虚拟机,创建完了之后会给个IP地址,假设是123.456.7.8。(为了在国内访问快一点,可以选日本或者新加坡的主机)
- 进入https://my.vultr.com可以看到创建好的虚拟机实例,点进去后会看到有Password一栏,这就是登录密码。
ssh root@123.456.7.8
,然后输入上一步中的密码来登陆到主机。- 无脑依次输入下面一系列命令:
# 创建交换分区(怕1G内存不够用)
sudo install -o root -g root -m 0600 /dev/null /swapfile
swapfile: dd if=/dev/zero of=/swapfile bs=1k count=1024k
mkswap /swapfile
swapon /swapfile
echo "/swapfile swap swap auto 0 0" | sudo tee -a /etc/fstab
sudo sysctl -w vm.swappiness=10
# 获取 docker
wget -qO- https://get.docker.io/ | sh
# 把discourse安装在/var下面
mkdir /var/discourse
git clone https://github.com/discourse/discourse_docker.git /var/discourse
cd /var/discourse
cp samples/standalone.yml containers/app.yml
以上Discourse就安装好了,接下来是配置过程。
配置Discourse
用nano编辑器打开配置文件:
cd /var/discourse
nano containers/app.yml
有些配置项是被其前面的
#
号注释掉的了,把#
去掉就行了。
必选配置项
DISCOURSE_DEVELOPER_EMAILS
,设为你的邮件地址DISCOURSE_HOSTNAME
,设为你为discourse配置的访问地址,例如,discourse.example.comDISCOURSE_SMTP_ADDRESS
,因为我用的是mailgun的邮件服务,所以设为它的SMTP服务器地址smtp.mailgun.orgDISCOURSE_SMTP_USERNAME
,我的mailgun SMTP用户名DISCOURSE_SMTP_PASSWORD
,我的mailgun SMTP密码
备选配置项(为降低内存消耗)
UNICORN_WORKERS
,从3改到2db_shared_buffers
,从256MB改成128MB
备选配置项(https访问)
Let’s Encrypt提供免费的SSL服务,如果想让你的网站以https方式运行,可以按照这个帖子的说明做配置,下面会介绍。
确保templates看起来像这样:
templates:
- "templates/web.template.yml"
- "templates/web.ssl.template.yml"
- "templates/web.letsencrypt.ssl.template.yml"
在env下面,添加一栏Let’s Encrypt用的邮件地址(可以填成与DISCOURSE_DEVELOPER_EMAILS
一样):
env:
LETSENCRYPT_ACCOUNT_EMAIL: 'you@example.com'
保存配置并运行实例
在Nano编辑器里面敲打 CTRL-X
然后选Y
来保存配置。
使用./launcher bootstrap app
来执行docker的构建工作,这一步需要等一段时间。最后使用./launcher start app
来启动Discourse。
如果一切顺利,你现在可以通过DISCOURSE_HOSTNAME
所配置的网址来在浏览器里面访问Discourse了。
一个关于Vultr的坑
Vultr默认把SMTP使用的端口25给封了,解决的办法是到https://my.vultr.com/support/页面Open一个Ticket,Ticket范文如下:
标题:Please deblock port 25 for my instance
内容: I’ve set up a discourse on my VPS. It requires SMTP to make it fully functional. As I can check on the page https://www.vultr.com/docs/what-ports-are-blocked, SMTP port (25) has been blocked by default. That’s why I raise this ticket to ask for opening of port 25.
开启ubuntu的自动安全更新
强烈建议大家开启Ubuntu的自动安全更新
dpkg-reconfigure -plow unattended-upgrades
祝大家一切顺利,结尾小广告:
- 想注册Vultr的朋友可以帮我点下推荐链接http://www.vultr.com/?ref=7163419
- 想注册Digital Ocean的也可以帮我点下推荐链接https://m.do.co/c/a479d75a5648
这两家推荐奖励的差别是,DO会给新注册者10美元奖励,Vultr不会。