首页 > 技术文章 > ubuntu安装discourse论坛----结合在apache服务上建立虚拟主机

sinsenliu 2018-07-23 10:33 原文

指导操作:https://github.com/discourse/discourse/blob/master/docs/INSTALL-cloud.md 

 

一、先安装 Docker / Git:

wget -qO- https://get.docker.com/ | sh

 

二、安装discourse
创建一个/var/discourse文件夹,克隆官话码头形象投入其中:

sudo -s
mkdir /var/discourse
git clone https://github.com/discourse/discourse_docker.git /var/discourse
cd /var/discourse


三、启动安装discourse工具

./discourse-setup

然后会提示让你回答以下问题:

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]:

 

 

这里公司是注册了一个新的腾讯企业邮箱,此过程从略,

我填一个模板:

Hostname : eosteam.org
Email : noreply@eosteam.org
SMTP address : smtp.exmail.qq.com
SMTP port : 25
SMTP username : noreply@eosteam.org
SMTP password : Dxzb123

 

这将生成一个 app.yml 代表您的配置文件,然后启动引导程序。引导2-8分钟来建立你的discourse。

如果需要在引导后更改这些设置,则可以运行./discourse-setup再次(它将从文件中读取旧值)或编辑/containers/app.yml带着nano然后./launcher rebuild app,否则更改将不会生效。

注:除非主机名的DNS记录解析为您的服务器,否则不应尝试启用“让我们加密”。你可以跑./discourse-setup稍后再做任何更改。

 

起始语篇
一旦引导完成,您的演讲应该可以通过域名在web浏览器中访问。discourse.example.com如果您配置了DNS,您就可以在前面输入。如果没有,您可以直接访问服务器IP。http://192.168.1.1.

 

注意:最好用谷歌浏览器,其他浏览器会出现403错误。

fab6c2288b4311e898cd525400149a89

 

注册新帐户并成为行政机构

使用引导前输入的电子邮件地址注册一个新的管理帐户。

1055c20a8b4411e8a00a525400130772

 

 

1f608b5e8b4411e8a8a8525400130772

 

(如果您无法注册您的管理帐户,请在/var/discourse/shared/standalone/log/rails/production.log看看我们的电子邮件故障排除清单.)

注册您的管理帐户后,安装向导将启动并引导您完成您的会话的基本配置。(注意/var/discourse/shared/standalone这个目录,我第一次随便打了个邮箱,后面有个报错一直显示发送端的邮件是之前设置的那个,重新配置discourse都不行,就可以把standalone删除或者改名,就ok了。)

946b90068b4411e8bbe95254004fae61

 

之后按照公司需要的信息配置。

 

 

 

Post-Install Maintenance

  • We strongly suggest you turn on automatic security updates for your OS. In Ubuntu use the dpkg-reconfigure -plow unattended-upgrades command.
  • If you are using a password and not a SSH key, be sure to enforce a strong root password. In Ubuntu use the apt-get install libpam-cracklib package. We also recommend apt-get install fail2ban which will default block any IP addresses for 10 minutes that attempt more than 3 password retries.
  • If you need or want a default firewall, turn on ufw.

 安装后的维护
我们强烈建议你打开自动安全更新操作系统。在Ubuntu使用dpkg-reconfigure犁unattended-upgrades命令。
如果您正在使用一个密码,而不是一个SSH密钥,确保实施强有力的根密码。在Ubuntu中使用apt-get安装libpam-cracklib包。我们还建议apt-get安装fail2ban将默认阻止任何IP地址10分钟尝试超过3密码重试。
如果你需要或者想要一个默认的防火墙,打开地头。

 

You will get email reminders as new versions of Discourse are released. Please stay current to get the latest features and security fixes. To upgrade Discourse to the latest version, visit /admin/upgrade in your browser and click the Upgrade button.

The launcher command in the /var/discourse folder can be used for various kinds of maintenance:

你会得到邮件提醒服务,新版本的话语被释放。请保持当前的最新功能和安全补丁。话语升级到最新版本,请访问/ admin /升级您的浏览器,然后点击升级按钮。

发射器命令在/var/discourse文件夹中可以用于各种各样的维护:

Usage: launcher COMMAND CONFIG [--skip-prereqs] [--docker-args STRING]
Commands:
    start:      Start/initialize a container
    stop:       Stop a running container
    restart:    Restart a container
    destroy:    Stop and remove a container
    enter:      Use nsenter to get a shell into a container
    logs:       View the Docker logs for a container
    bootstrap:  Bootstrap a container for the config based on a template
    rebuild:    Rebuild a container (destroy old, bootstrap, start new)
    cleanup:    Remove all containers that have stopped for > 24 hours

Options:
    --skip-prereqs             Don't check launcher prerequisites
    --docker-args              Extra arguments to pass when running docker

 

 

Add More Discourse Features

Do you want...

Help us improve this guide! Feel free to ask about it on meta.discourse.org, or even better, submit a pull request.

添加更多的话语功能
你想要…
用户登录只能通过你的网站的注册系统?单点登录配置。
用户登录通过Google、Twitter、GitHub,或Facebook吗?
用户通过电子邮件发布回复?配置通过电子邮件回复。
每天自动备份?配置备份。
免费的HTTPS / SSL支持吗?配置加密。支付HTTPS / SSL支持吗?配置SSL。
使用一个插件从话语还是第三方?配置插件
多个话语站点在同一台服务器上吗?配置多点。
人当事件发生在话语?配置人。
内容交付网络加速全球访问吗?配置一个CDN。我们建议急剧。
进口旧内容链入页面,PHPbb,香草,Drupal,BBPress,等等?看到我们的开源进口商。
用户友好的脱机页面时重建还是升级?
嵌入的话语在你的WordPress安装,或在你的静态HTML网站吗?
帮助我们改进本指南!请提出来在meta.discourse.org上,或者更好的是,提交一个请求。

 

 

 

*****经验(路过的坑):

1 先是显示邮件地址和证书不匹配:

报错:Sent mail to yuanyou.li@mcgventure.cn (1815.4ms) Job exception: hostname "smtp.mcgventure.cn" does not match the server certificate

发现是端口问题:25是非加密的 465是要加密的 这里没有配置好。(解决方法:填入上面步骤三内容:SMTP port : 25 )

配置文件里描述的端口问题:DISCOURSE_SMTP_ENABLE_START_TLS: false # (optional, default true)


2 之前乱设置的me@example.com一直做为邮件的发送端,找不到配置文件,重新安装discourse都没用。
看到这个是日志显示的启动文件,删除/var/discourse/shared/standalone 这个文件,后面就没这个报错了。
报错:Account:yuanyou.li@mcgventure.cn|Mail Account:noreply@szftest.example.com这个就是我之前乱写的。)

 

3 再就是重新申请了一个企业邮箱new@eosteam.org,却报错字符编码什么的: 
报错:INSERT INTO "email_logs" ("to_address", "email_type", "user_id", "created_at", "updated_at", "skipped", "skipped_reason") VALUES ('new@eosteam.org', 'signup', 1, '2018-07-18 12:59:39.328297', '2018-07-18 12:59:39.328297', TRUE, '[Sender] 501 ?exmail.qq.com
其实是因为刚申请的邮箱,需要先登入一遍,就好了。

 

4 中间还要注意配置服务器上的邮件设置:

set from=noreply@eosteam.org smtp=smtp.exmail.qq.com
set smtp-auth-user=noreply@eosteam.org smtp-auth-password="Dxzb123" smtp-auth=login

 

5 本地hosts配置ip+作为管理员而注册的邮箱-->为了强行指向注册好的论坛。

 

6、在discourse上注册账号,注册的邮箱收不到邮件。

     查看服务器邮箱配置,没问题;再用服务器邮箱发邮件,可以。

     后面在网上查到discourse自己的配置文件里有一个发送邮箱的设置,最后一行,把这个改成你discourse的注册邮箱就好了。

- exec: rails r "SiteSetting.notification_email='xxx@qq.com'"

 

 

 7、注册的邮箱可以收到邮箱后,点击论坛发过来的连接,却403错误,从报错语句里看到访问指向的是primecoin.org,而不是我们论坛地址:bbs.primecoin.org。

      所以在discourse配置文件中把HOSTNAME改成bbs.primecoin.org就好了。

 

 

 

 

 

 

 

 *******结合在apache服务上建立一个虚拟主机:

一、目的描述:

Apache是80端口,作为web服务端,discourse论坛就设为81端口,在apache上建立一个虚拟主机,

这样就能把外部访问论坛的请求,通过apache80端口转到81端口,外部就自然能访问到论坛啦!

 

二、具体操作注意这几个地方(看黑板啦哈):

1、在你apache安装目录下,编辑虚拟主机的配置文件:/opt/apache2/conf/extra 里的 httpd-vhosts.conf 文件。(注意、/opt是我的安装目录)

插一句:一定要备份重要的文件!!!!!

运维没有rm,请mv /tmp!!!!!血泪教训!!!

i、这是我们discourse的配置模板:

<VirtualHost *:80>
ServerAdmin noreply@primecoin.org
ServerName bbs.primecoin.org
ServerAlias primecoin.org
DirectoryIndex index.html index.php
# DocumentRoot "/var/discourse"
ErrorLog "logs/bbs.primecoin.org.log"
CustomLog "logs/bbs.primecoin.org.log" common
SetEnv force-proxy-request-1.0 1
SetEnv proxy-nokeepalive 1


ProxyPass / http://127.0.0.1:81/                        。。。。。。这一句网上模板没有的,它就是指定让外部访问通过Apache80转到论坛81的端口。!!!
ProxyPassReverse / http://127.0.0.1:81/           。。。。。。这一句网上模板没有的,它就是指定让外部访问通过Apache80转到论坛81的端口。!!!
</VirtualHost>

 

 

 

ii、有的模板会这样写:

在httpd-vhosts.conf文件里添加如下代码

<VirtualHost *:80>

    #网站根目录

    DocumentRoot "F:/test" 

    #域名

    ServerName www.test.com

    #这里配置欢迎首页面

    DirectoryIndex index.html index.htm index.php


 

    <Directory />                                              这一段: <Directory />  有的不会写在httpd-vhosts.conf虚拟主机配置文件中,而是apache的配置文件:/opt/apache2/conf/httpd.conf 里。

           Options FollowSymLinks 

           #不允许别人修改我们的页面

           AllowOverride None 

           #设置访问权限

           order allow,deny   -------------------->>  如果访问出现(浏览器状态码为403),就是因为权限不足引起的,可以把这里改成:Require all granted

           Allow from all

    </Directory>   

</VirtualHost>


 

 2、discourse论坛的配置文件也要改:

/var/discourse/containers/app.yml   (还好没和apache装在一起。。。)

原本是:  “80:80”   #http  ------>改成: “81:80”   #http

 

 

 

 

 2、要编辑apache的配置文件

/opt/apache2/conf 里的 httpd.conf 文件:

 

i、把注释掉的虚拟主机配置模块启用(就是把#去掉):

# Virtual hosts
Include conf/extra/httpd-vhosts.conf     这一句

ii、再把apache代理模块开启:

LoadModule access_compat_module modules/mod_access_compat.so #基于主机的组授权(名称或IP地址) httpd 2.x兼容的模块,
LoadModule proxy_module modules/mod_proxy.so #apache的代理模块
LoadModule proxy_http_module modules/mod_proxy_http.so #代理http和https请求
LoadModule vhost_alias_module modules/mod_vhost_alias.so #虚拟主机动态配置
LoadModule authz_host_module modules/mod_authz_host.so #基于主机的组授权
Include conf/extra/httpd-vhosts.conf#启用虚拟主机配置
以上模块前面的#去除

 

 

 iii、重启apache和discourse:

root@szftest:/opt/apache2/bin# ./apachectl restart

 root@szftest:/var/discourse# ./launcher rebuild app    这个要rebuild。

 

ps:

1、这个过程是因为自己误删了服务器的apache,以为是测试服务器,但其实已经在支持公司的discourse的测试论坛了,误删文件对运维是致命错误,下次一定要备份,不要轻易直接删除。

2、访问服务器IP和论坛地址bbs.primecoin.org结果都出现的是论坛界面,因为apach自己是作为缺省的主机,所以还是跳到论坛了。之前我以为apache故障就想重装,结果没备份误删了。

3、discourse论坛restart没用,最后要rebuild一下,但是界面的一些设置会被还原。

 

 

 

 

 

 

 

 

 

 

 

 

 

下面是过程中网上找的其他教程:

Discourse安装使用-简洁强大Ruby on Rails免费开源论坛Discuz!替代品

免费建站   2014年06月26日 17:33  
评论»  
 
 
 

Discourse安装使用-简洁强大Ruby on Rails免费开源论坛Discuz!替代品

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

Discourse简化了传统论坛的分类,取而代之是热贴,这点有点像问答,它可以避免用户进入传统论坛后找不到方向的迷茫;Discourse的帖子是气泡形式展现,全部Ajax加载,有电脑和移动版,论坛采用了瀑布流的设计,自动加载下一页,无需手动翻页。总体感觉就是Discourse不再花哨。

Discourse相对于Discuz!可能的优势在于:简洁,用户能找到中心和自己感兴趣的话题;论坛论坛用户基础亦小亦大,如果用Discuz!搭建几十个人的讨论平台显然不适合;专业性强,Discourse更适合讨论共同的话题,它不再是像Discuz!以用户为纽带而聚集,而是以话题为关系聚集。

目前Discourse被大规模地使用还有困难,一它不是PHP开发的程序,所以PHP主机空间等都是不能安装的,二是Discourse基于Ruby ,不少人可能会选择更熟悉的PHP论坛程序。Discourse开始于2013年,但是现在已经聚集不少的开发者,程序也在不断地完善当中,从目前来看它确实能够弥补Discuz!传统论坛的不足。

本篇文章就来介绍一下Discourse的安装与使用。更多的有关于免费建站的文章请看:

Discourse安装使用-简洁强大Ruby on Rails免费开源论坛Discuz!替代品

一、Discourse安装过程

1、Discourse官网:

  • 1、官方网站:https://www.discourse.org/
  • 2、Github项目:https://github.com/discourse/discourse

2、Discourse推荐的服务器配置是:双核CPU及以上,最少1GB内存(包括swap),推荐是2Gb内存,64 bit Linux兼容Docker。

3、如果你的服务器没有1GB的内存,可以手动创建1GB的Swap,执行以下代码:


sudo install -o root -g root -m 0600 /dev/null /swapfile
dd if=/dev/zero of=/swapfile bs=1k count=1024k
dd if=/dev/zero of=/swapfile bs=1k count=2048k
mkswap /swapfile
swapon /swapfile
echo "/swapfile       swap    swap    auto      0       0" | sudo tee -a /etc/fstab
sudo sysctl -w vm.swappiness=10
echo vm.swappiness = 10 | sudo tee -a /etc/sysctl.conf

Discourse创建Swap

4、以下代码是创建2GB的Swap。


sudo install -o root -g root -m 0600 /dev/null /swapfile
dd if=/dev/zero of=/swapfile bs=1k count=2048k
mkswap /swapfile
swapon /swapfile
echo "/swapfile       swap    swap    auto      0       0" | sudo tee -a /etc/fstab
sudo sysctl -w vm.swappiness=10
echo vm.swappiness = 10 | sudo tee -a /etc/sysctl.conf

5、本篇文章操作平台是Host Virtual的Ubuntu 14.04 (64位) VPS主机,执行以下命令安装git和Docker:


apt-get install git
wget -qO- https://get.docker.io/ | sh

Discourse安装Docker

6、开始安装Discourse,执行以下命令:


mkdir /var/docker
git clone https://github.com/discourse/discourse_docker.git /var/docker
cd /var/docker
cp samples/standalone.yml containers/app.yml

Discourse开始安装

7、编辑Discourse。执行:nano containers/app.yml。

Discourse编辑配置文件

8、需要改动的是:UNICORN_WORKERS(如果是1Gb内存就是2,2GB内存以上就是3-4)DISCOURSE_DEVELOPER_EMAILS管理员邮箱、DISCOURSE_HOSTNAME 绑定的域名、DISCOURSE_SMTP_ADDRESS是邮局服务器、DISCOURSE_SMTP_PORT, DISCOURSE_SMTP_USER_NAME, DISCOURSE_SMTP_PASSWORD则是SMTP的端口、账号和密码。

9、修改后,按Ctrl+O 然后按 Enter保存,按Ctrl+X 退出编辑.

9、这里需要特别注意一下:SMTP邮箱服务特别重要,如果你的服务器是在国外则有可能无法使用国内的腾讯企业邮箱新浪企业邮箱等来发信了,建议使用国外的如Gmail、Mandrill 、Mailgun、Mailjet等,申请使用教程:免费超大量邮件发送服务Amazon SES和Mailgun提供SMTP和API支持

10、保存配置后,就是执行Bootstrap,命令:./launcher bootstrap app

Discourse执行Bootstrap

11、在Bootstrap过程中,可能会提示生成S-S-H Key。整个过程大概需要花费10分钟左右。

Discourse生成Key

12、完成后,执行启动:./launcher start app

Discourse启动应用

二、Discourse设置方法

1、到你的域名DNS管理处修改DNS,将域名解析到你的Discourse服务器上。打开已经安装好的Discourse,如下图:

Discourse打开网站

2、点击注册,使用你刚刚在配置中填写你的管理员邮箱账号来注册,这样你的账号就会自动变成管理员。

Discourse注册管理员账号

3、提交注册,Discourse会发一封激活邮件。如果收不到激活邮件,请检查你的Discourse配置文件中的SMTP邮局设置是不是有错误。

Discourse邮件激活

4、登录到Discourse,进入管理员页面是在URL后面加上/admin,先在基本设置中将语言设置为中文。

Discourse设置为中文

5、这是Discourse后台管理面板,“设置”是对Discourse全方位设置,其它的还有内容、用户、群组、日志等。(点击放大)

Discourse管理面板界面

6、这是控制用户注册设置,可对用户账号格式、密码、是否开放注册等进行设置,另外在这里可以开放第三方账号登录权限。(点击放大)

Discourse控制用户注册

7、使用Https来访问Discourse。这点可以直接在Discourse后台设置,前提是已经有了SSL证书,当然免费的SSL证书也是可以的,参考:StartSSL免费SSL证书成功申请-HTTPS让访问网站更安全

Discourse使用Https访问

三、Discourse管理操作

1、在Discourse的“内容”中主要是调整一些通知模板和固定页面,例如服务条款、欢迎邮件等等。

Discourse内容设置

2、用户就是管理Discourse中的用户了,可以对用户进行删除、禁止登入、禁止讨论等操作。

Discourse用户管理

3、在“电子邮件”中则可以看到SMTP信息和已经发送的邮件。

Discourse查看SMTP发邮件

4、“备份”中可以手动备份Discourse站点,备份文件可以直接下载。

Discourse备份网站

5、另外Discourse还可以开启自动备份。

Discourse开启自动备份

四、Discourse使用方法

1、Discourse界面如下,导航栏右上角是相应的操作链接,下方是“最新 ”、“主题”、“收藏”、“热门”等,最中间就是帖子列表了,整个Discourse就是一个页面,下拉后会Ajax自动加载。(点击放大)

Discourse网站页面

2、查看帖子时,下方会有收藏、分享、点赞、编辑、配置等等。

Discourse查看帖子

3、在帖子下方可以回复,也可以邀请好友共同关注此话题,如果是自己的主题还可以设置在别人谈论此主题时自己收到@通知。

Discourse回复话题

4、如果是管理员或者版主,则可以在右边点击对主题进行删除、编辑、关闭等操作。

Discourse管理帖子

5、发表或者回复帖子编辑器也非常地简洁,可以使用 Markdown 或 BBCode 来格式化内容。拖拽或粘贴一幅图片到这儿即可将它上传。(点击放大)

Discourse发布新的主题

6、Discourse可以自己新的创建分类。

Discourse新建分类

7、分类可以单独设置相应的权限。

Discourse设置权限

8、对于一些有时效性的分类,可以设置好时间,定时关闭讨论。

Discourse关闭讨论

9、更多的Discourse体验可进入Discourse中文社区:https://www.discn.org/

五、Discourse安装使用小结

1、Discourse安装过程并不复杂,但是由于Discourse的目标是做“next-gen open source Discourse forum”,所以一些旧版本的服务器在安装过程中会出现各种异常问题,另外Discourse不支持IE9以下的浏览器访问。

2、Discourse有新版本时可以直接在线升级,方法是进入到Discourse域名/admin/docker/按照页面提示升级即可,另外在/var/docker中有不少的launcher命令,包括:start(启动)、stop(停止)、restart(重启)、destroy(删除)、bootstra(重新生成)、logs(日志)、rebuild(重建)。命令格式是:./launcher start app。

Discourse自动升级

文章出自:免费资源部落 https://www.freehao123.com/ 版权所有。本站文章除注明出处外,皆为作者原创文章,可自由引用,但请注明来源。

 

 

 

 

 

 

 

 

 

 

docker搭建discourse论坛全攻略一

discourse简介

Discourse是 Stack Overflow 的联合创始人 Jeff Atwood 推出的一个新的开源论坛项目,其目的是为了改变十年未变的论坛软件。它摒弃了传统论坛的话题讨论形式、拥有自学习系统、全Web应用同时适用于桌面和移动终端。

吐槽一下

吐槽一下百度这家上市公司,国内互联网三巨头之一。不好好做产品,捞钱无底线无节操。你看搜出来的都是些什么鬼,你要是没有vpn上谷歌,自己耐心不好的话,很可能就死在搭建环境的路上。以前说刚公司刚起步,需要赚钱活下去,现在百度还缺钱养团队么,搞什么外卖,团购,不好好做搜索,全把心思用在捞钱上,世界上最没有节操的科技公司,还能找出第二个来么,掌握着中国互联网入口,却干着没有底线的事情,想想就来气。学技术的朋友,第一件事学会怎么FQ。

写这几篇文章给没有找到梯子的朋友,希望大家能绕过一些坑,不要死在半路上。

搭建环境:

  • 阿里云ecs服务器1核2G
  • ubuntu 16.04
  • centos 7.2

官方文档是ubuntu系统下的安装教程,自带的脚本也是针对ubuntu环境,在没有本教程之前,想要顺利一点的话就装个ubuntu的系统。

ubuntu 16.04环境下搭建

discourse官方文档地址:官方文档 
1. 安装docker和git

    wget -qO- https://get.docker.com/ | sh
  • 1

这个脚本会安装docker和git,centos下不适用,会提示你不支持此脚本,后面讲centos怎么装。 
2. 安装discourse 
创建/var/discourse目录,你可以自定义任意位置创建目录,但是如果想要顺利先跑起来,就按照这个路径创建。默认root权限。

mkdir /var/discourse
git clone https://github.com/discourse/discourse_docker.git /var/discourse
cd /var/discourse
  • 1
  • 2
  • 3

上面三条命令做了三件事,创建目录,下载discourse镜像,进入discourse目录。 
3. 自动安装脚本 
执行discourse目录下的discourse-setup脚本,会要求输入主机邮件服务器等参数,跟后面讲的手动创建配置文件效果一样。脚本会用samples/standalone.yml模板在containers目录下生产一个app.yml,参数就是输入的值。

./discourse-setup
  • 1

要求输入几个参数:

Hostname for your Discourse?
Email address for admin account(s)?
SMTP server address?
SMTP port?
SMTP user name?
SMTP password?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

如上,主机域名,管理员邮箱账号,SMTP服务器地址,SMTP端口,SMTP邮箱和密码。后面主要讲SMTP设置,这个估计是最大的坑,能坑死99%的同学。 
这几个设置好了之后就可以了,后面还有的直接按enter忽略,然后去泡一杯咖啡,坐等安装完毕。 
4. 经过漫长的安装之后,最后会提示你安装完成。好了,你可以在浏览器打你的ip或者域名进行访问了,如无意外,你可以看到一个邮件验证页面,输入你设置的管理员邮箱,设置用户名和登录密码,如果再无意外,你应该是收不到验证邮件的。哈哈哈~~~

 

 

 

 

 

 

docker搭建discourse论坛全攻略二

上一篇讲了ubuntu16下搭建discourse论坛的主要步骤,本篇主要讲讲邮件配置这个大天坑。先讲QQ邮箱配置。

QQ邮箱SMTP配置

配置阿里docker镜像加速

如果不配置加速器的话,会连不上docker的仓库。

  1. 申请一个阿里账号
  2. 控制台访问阿里镜像服务 
    https://cr.console.aliyun.com/#/accelerator
  3. 查看自己的专属加速器地址,然后编辑/etc/docker/daemon.json来使用阿里加速器。
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["your-accelerator-address.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

然后就可以飞起来了。

配置discourse邮件服务器

discourse必须要配置SMTP邮件才可以使用,这个设计比较变态,如果你调不通这个邮件,你的账号没法验证,就没法进论坛。 
1. 打开/var/discourse/containers目录下app.yml文件,如果没有,就复制一个

cd /var/discourse
cp samples/standalone.yml containers/app.yml
vim containers/app.yml
  • 1
  • 2
  • 3

如果按照上一篇的操作步骤,此时应该存在一个app.ym。 
2. 修改配置

DISCOURSE_HOSTNAME: xxx.com
DISCOURSE_DEVELOPER_EMAILS:  xxx@163.com
DISCOURSE_SMTP_ADDRESS: smtp.qq.com
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME:  your-qq@qq.com
DISCOURSE_SMTP_PASSWORD: "pwd"
DISCOURSE_SMTP_ENABLE_START_TLS: true
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

主要讲一下这个配置,有两个坑。

  • QQ邮箱的smtp密码不是你的登录密码,而是授权码,什么是授权码,百度一下QQ邮箱授权码。
  • 端口只有587有效,465无效。

最关键的坑还不是这个,这两个配置好之后,你可以在登录页面发验证邮件了,如果你查看discourse的日志,发现不会报错,但是你收不到邮件~~~

查看discourse服务器日志

cat /var/discourse/shared/standalone/log/rails/production.log
  • 1

配置都对,不会报错,但是你收不到邮件。

方式一:编辑发件邮箱

找到之前配置文件,修改配置 
1. 打开app.yml

vim containers/app.yml
  • 1

这个就是配置文件 
2. 定位文件底部,打开注释

- exec: rails r "SiteSetting.notification_email='xxx@qq.com'"
  • 1

这个就是发件邮箱,如果不打开注释,网站内部的发件箱还是默认的,发不出邮件,也不会报错。 
3. 重新build一下

./launcher rebuild app
  • 1

再去登录一下试试,应该就ok了。

方式二:进网站修改

还有一个方法,用官方的工具launcher创建管理员账号。

  • 进入容器
cd /var/discourse
./launcher enter app
  • 1
  • 2
  • 创建管理员账号,按要求输入管理员邮箱和登录密码
rake admin:create
  • 1
  • 登录网站,用刚才创建的账号直接登录。
  • 在settings页面设置notification email为发件邮箱,就是之前配置文件里面写的那个邮箱。
  • 在邮件测试页面发一封测试邮件,应该测试成功了。

推荐阅读