近期在 CentOs 上搭建了一个 Discourse 论坛 期间遇到了很多问题 这里记录一下安装流程
邮箱配置
注意: 使用
QQ邮箱
必须用587
端口
一开始 我一直用的是
25
和465
这两个端口 结果无论如何都不成功后来我看到默认端口是 587 然后就用 nmap 和 telnet 检测了一下
Nmap的结果
1
2
3
4
5
6
7
8
9
10
11
12[root@sz discourse]# nmap smtp.exmail.qq.com -p 25,465,587
Starting Nmap 6.40 ( http://nmap.org ) at 2017-05-15 15:21 CST
Nmap scan report for smtp.exmail.qq.com (183.232.93.197)
Host is up (0.016s latency).
Other addresses for smtp.exmail.qq.com (not scanned): 183.232.125.184
PORT STATE SERVICE
25/tcp open smtp
465/tcp open smtps
587/tcp open submission
Nmap done: 1 IP address (1 host up) scanned in 0.19 secondsTelnet的结果
1
2
3
4
5
6
7[root@sz discourse]# telnet smtp.exmail.qq.com 587
Trying 183.232.125.184...
Connected to smtp.exmail.qq.com.
Escape character is '^]'.
220 smtp.qq.com Esmtp QQ Mail Server
quit
Connection closed by foreign host.可以看出 这个端口也是邮件发送用的 具体什么协议还不知道
打开
containers/app.yml
配置基本信息
1
2
3
4
5
6
7## TODO: The SMTP mail server used to validate new accounts and send notifications
DISCOURSE_SMTP_ADDRESS: smtp.exmail.qq.com
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: root@yumc.pw
DISCOURSE_SMTP_PASSWORD: **********
DISCOURSE_SMTP_ENABLE_START_TLS: true
DISCOURSE_SMTP_AUTHENTICATION: login修改最后的
run
删除带有notification_email
这一行开头的# 然后修改单引号内的邮箱为DISCOURSE_SMTP_USER_NAME
所填写的值1
2
3
4
5
6
7## Any custom commands to run after building
run:
- exec: echo "Beginning of custom commands"
## If you want to set the 'From' email address for your first registration, uncomment and change:
## After getting the first signup email, re-comment the line. It only needs to run once.
- exec: rails r "SiteSetting.notification_email='root@yumc.pw'"
- exec: echo "End of custom commands"
CentOs 不支持 Docker 的 d_type 的解决方案
- 从现有硬盘中分离一块区域(分区) 或者找一个新的硬盘
- 用 fdisk 分区 指定格式为 83
- 格式化为 xfs
mkfs.xfs -n ftype=1 /dev/sdxx
后面的/dev/sdxx
是你的分区名称 - 停止 Docker
service docker stop
- 直接挂载到 Docker 主目录
mount -t xfs /dev/sdxx /var/lib/docker
- 应该是这样的
/dev/sdxx on /var/lib/docker type xfs (rw,relatime,attr2,inode64,noquota)
- 应该是这样的
- 开启 Docker
service docker start
邮箱未配置的情况下 强制激活
- 进入
discourse_docker
的目录 - 执行
./launcher enter app
进入Docker
内部- 按照顺序 执行下列代码
1
2su postgres
psql - 进入数据库之后执行下列代码
1
2\c discourse
SELECT * FROM email_tokens; - 没问题的话 你会得到下列数据 找到你的邮箱对应的
token
1
2
3
4
5id | user_id | email | token | confirmed | expired | created_at | updated_at
----+---------+---------------+----------------------------------+-----------+---------+----------------------------+----------------------------
1 | -1 | no_email | 359a9a60b656f6f272fa7e6bba724cab | f | t | 2017-05-12 03:08:55.676102 | 2017-05-12 03:08:55.676102
2 | 1 | admin@yumc.pw | 33d1bd211e8df3easdas81e3963a21ae | t | f | 2017-05-12 05:36:44.113174 | 2017-05-12 05:36:44.113174
(2 rows)
- 按照顺序 执行下列代码
- 打开链接
http://你的论坛网址/users/activate-account/你的激活Token