discourse 基于ember.js+rails项目的安装部署
最近公司在讨论做一个ERP运维问答的论坛系统,看了很多开源系统,觉得discourse功能比较完善,灵活、可配置性非常好,部署方便,瀑布流的主题布局模式也很符合未来论坛的趋势,于是在 ucloud 上租用了云主机,成功安装了discourse 的论坛系统,期间遇到一些小困难,在版主和很多热心朋友的的指点下都克服了,这里表示特别感谢!借中文论坛也把安装过程,整理给各位想使用discourse的朋友做些参考
Ucloud 云主机 discourse 安装部署过程记录
1. 环境介绍
云主机的选择了ucloud 没什么理由,算是国内比较领先的厂商之一吧,技术支持还行,晚上安装时碰到问题也有值班工程师解答;
新版本的docker的安装要求操作系统必须是64位的,我用的ubuntu14.04 64位操作系统。
安装云主机碰到的一个问题是安装完ubuntu系统后外网防火墙80端口的绑定,要使用外网IP打开主机的网站,需要绑定外网IP地址,绑定时开始没有绑定外网防火墙80端口,造成浏览器输入外网IP地址,是无法打开的。
2. 安装docker
网上有不少安装docker的教程和文章,大多都是几年前的文章,作者写的都很认真,不过已经完全不适用了,自己也走了弯路所以建议安装docker 按照安装手册里面的官方文档。ubuntu的不同版本(12.04/14.04/15.10)略有区别,手册里也说的比较清晰,针对14.04版本,没遇到什么问题,需要命令权限的命令前加sudo
过程如下:
现在是
2016年2月份
,如果您看到这篇文章在1年以后,注意不要被我误导了,看看最新官方文档比较好。
(1)首先检查linux内核版本,ubuntu14.04 内核版本,内核版本要求3.10
以上;
$ sudo uname -r
(2) 安装ca证书;为什么安装ca?
$ apt-get update
$ sudo apt-get install apt-transport-https ca-certificates
(3)追加新的Key;注意是apt-key
不是apt-get
$ sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
(3)添加deb包安装源;
使用管理员权限打开(没有的话新创建这个文件)/etc/apt/sources.list.d/docker.list
,添加下面内容到文件里;不同的ubuntu版本添加源有所不同,注意参照官方文档;
deb https://apt.dockerproject.org/repo ubuntu-trusty main
添加完安装源,保存文档,注意具有管理员权限才能保存;
(4)更新deb安装包索引文件,删除已经有的旧的docker(如果有),验证安装文件信息正确与否;
$ apt-get update
$ apt-get purge lxc-docker
$ apt-cache policy docker-engine
(5)安装镜像扩展文件;
$ apt-get update
$ sudo apt-get install linux-image-extra-$(uname -r)
(6)安装apparmor
Linux系统安全应用程序 参考:Apparmor
$ sudo apt-get install apparmor
(7)可以安装docker
了!
$ sudo apt-get update
$ sudo apt-get install docker-engine
(8)确认安装成功?
$ sudo service docker start
$ sudo docker run hello-world
3. 安装discourse
安装完docker你会觉得安装discourse是很简单的参安装文档只需要几个步骤:
mkdir /var/discourse
git clone https://github.com/discourse/discourse_docker.git /var/discourse
cd /var/discourse
cp samples/standalone.yml containers/app.yml
说明:
*首先是创建一个目录/var/discourse
;
*克隆discourse镜像到刚创建的目录;
*进入目录/var/discourse
;
*复制配置文件到当前目录下的containers/
4. app.yml
的配置
说到重点了,安装discourse过程中,比较容易出错的就是配置文件内容的修改;这里把
要修改的部分分别说明一下(你会用到的命令操作 nano app.yml;ctrl+x 超级啰嗦哈):
templates:
- "templates/postgres.template.yml"
- "templates/redis.template.yml"
- "templates/sshd.template.yml"
- "templates/web.template.yml"
- "templates/web.china.template.yml"
配置文件的这个部分,需要添加- "templates/web.china.template.yml"
;否则在./launcher bootstrap app
初始化时会报错RuntimeError: ...
,原因得问GWF。
## on initial signup example'user1@example.com,user2@example.com'
DISCOURSE_DEVELOPER_EMAILS: 'henry@outlook.com'
这里是开发者邮箱的设置,用于接收discoures论坛的官方邮件,只针对开发运营这个论坛的开发者。
## TODO: The domain name this Discourse instance will respond to
DISCOURSE_HOSTNAME: 'weifuwu.ren'
域名设置没设么可说的,没有的话,用绑定的外网IP地址访问discourse也可以,购买了域名可以按照指南到域名管理界面,进行设置;
DISCOURSE_SMTP_ADDRESS:smtp.mxchina.com
DISCOURSE_SMTP_PORT:25
DISCOURSE_SMTP_USER_NAME: info@weifuwu.ren
DISCOURSE_SMTP_PASSWORD: xxxxxxx
DISCOURSE_SMTP_ENABLE_START_TLS: true
DISCOURSE_SMTP_AUTHENTICATION: login
DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none
重点是在邮箱设置,我申请的阿里云邮箱
DISCOURSE_SMTP_PASSWORD: xxxxxxx
设置的就是邮箱密码;DISCOURSE_SMTP_PORT:
端口设置25,DISCOURSE_SMTP_ADDRESS:
Host是smtp.mxchina.com
,DISCOURSE_SMTP_USER_NAME: 这里的设置最最重要的,这个邮箱又叫notification email 被用于发送所有重要系统邮件的邮箱地址。指定的域名必须正确设置 SPF、DKIM 和反向 PTR 记录以发送邮件。一般和域名绑定在一起,比如info@weifuwu.com 或者 admin@weifuwu.com 都行,这样收到邮件的发帖人或回复人感觉比较正式,使用这个邮箱也是最频繁的。关于SPF、DKIM设置有篇文章可参考
如果您使用的阿里云的企业邮箱,域名解析后可以不用设置 SPF、DKIM 了已经设置好了,注意阿里云这里设置DISCOURSE_SMTP_ADDRESS:smtp.mxhichina.com
5. 初始化
修改完app.yml配置文件,按照安装文档就可以进行初始化了,(耐心等待一段时间,我的云主机大概5分钟吧):
./launcher bootstrap app
启动discourse服务,就OK了!
./launcher start app
如果再次修改了配置文件也可以用:
./launcher rebuild app
试过了,这两个命令不会删除数据,放心用就行;docker的数据和容器是分离的,这是docker的优点吧。
现在应该可以登陆网站了,使用设置的域名或外网Ip地址;如果发现没有收到管理员激活邮件,也可以手动建立一个管理员账户:
./launcher enter app
rake admin:create
exit
按照提示输入邮箱和密码,exit退出容器。
最后特别提示下:管理员邮箱,也就是用rake admin:create 创建的邮箱一般用于设置论坛;DISCOURSE_SMTP_USER_NAME 邮箱用于论坛接收、发送信息给(创建主题、发帖、回复等等)使用者;DISCOURSE_DEVELOPER_EMAILS开发者邮箱用于论坛给开发运营论坛的人的官方邮件;三个邮箱作用不同,可以设置三个不同邮箱,也可以相同,开始时我真被搅的一头雾水,后来得到learnce.com 陈总指点才明白,这里再次感谢了!
以上是整个安装过程,已经成功安装。记录的时候也许会有用词不准确或者没考虑到的地方还请各位指正,再次感谢版主和热心朋友!
discourse 基于ember.js+rails项目的安装部署的更多相关文章
- NideShop项目的安装部署教程
本文档为微信小程序商城NideShop项目的安装部署教程,欢迎star NideShop商城api服务:https://github.com/tumobi/nideshop NideShop微信小程序 ...
- 基于node.js的压缩合并安装
1.构建工具(grunt,gulp) 下载地址:http://gruntjs.cn/http://gruntjs.com/ (1)安装nodejs(http://www.nodejs.org/) 验证 ...
- 如何搭建一个基于nuxt.js的项目
介绍 nuxt.js(中文官方文档)是vue.js的一个通用型应用框架,有了之前搭建vue项目的过程之后,搭建一个nuxt项目就会十分简单. 搭建步骤 1.打开命令提示符,进入到相关文件夹下: 2.使 ...
- 浅谈Excel开发:八 Excel 项目的安装部署
前面几篇文章讲解了Excel开发的几个比较主要的也是比较重要的方面,比如菜单系统,Excel对象模型,自定义函数,RTD函数,异步自定义函数,用户自定义任务面板等,在实际开发中我们还会遇到各种“千奇百 ...
- 【Vue】基于nodejs的vue项目打包编译部署
一·项目编译 1·进入项目目录下的终端执行命令 npm run build 正常情况如下图,如遇到错误不会编译成功,且编译后的html文件不能正常渲染. 2·编译完成后进入项目下的dist目录运行生成 ...
- 基于Maven的SpringBoot项目实现热部署的两种方式
转载:http://blog.csdn.net/tengxing007/article/details/72675168 前言 JRebel是JavaEE中比较流行的热部署插件,可快速实现热部署,节省 ...
- 基于【 Docker】一 || ElK安装部署使用教程
一.ELK介绍 1.ELK组成 ELK由Elasticsearch.Logstash和Kibana三部分组件组成: Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发 ...
- 新建一个基于vue.js+Mint UI的项目
上篇文章里面讲到如何新建一个基于vue,js的项目(详细文章请戳用Vue创建一个新的项目). 该项目如果需要组件等都需要自己去写,今天就学习一下如何新建一个基于vue.js+Mint UI的项目,直接 ...
- Angular.js vs Ember.js
Angular.js 拥抱 HTML/CSS Misko Hevery(Angular.js的开发者之一)回答了这一问题,他的主要观点如下: 在HTML中加入太多逻辑不是好做法.Angular.js只 ...
随机推荐
- English Training Material - 05
Could I leave a message? Language Checklist Telephoning (1) Introducing yourself Good morning, Arist ...
- UISegmentedControl的使用
#import "SegmentedControlTestViewController.h" @implementation SegmentedControlTestViewCon ...
- 【原】iOSCoreAnimation动画系列教程(一):CABasicAnimation【包会】
本文的最新版本已经发布在简书[编程小翁]上,强烈建议到上查看简书,[点击这里跳转]. 在iOS中,图形可分为以下几个层次: 越上层,封装程度越高,动画实现越简洁越简单,但是自由度越低:反之亦然.本文着 ...
- 【原】UIView实现点击着重效果的解决方案
我们知道,在IOS中UIButton UIControl都有一个默认的选中效果,即点中后会图标会变暗,移开后又恢复正常.如何让UIView UIImageView等这些普通的view也实现同样的效果呢 ...
- Validation of viewstate MAC failed. 解决方法
前段时间公司为了减轻服务器压力,对网页做了集群,分布在多台服务器,通过DNS轮回解析到各台服务器,结果页面只要打开停留到DNS解析到下一个地址,就会出现出下错误信息. Validation of vi ...
- Gleeo Time Tracker简明使用教程
转载一篇很不错的文章,这款软件还是非常实用的 1 简介 Gleeo Time Tracker是安卓平台下一款相当酷的项目时间记录和管理的软件.说他酷,是因为界面纯黑.而除了这点酷之外,功能也很简单实用 ...
- 深入理解java虚拟机(5)---字节码执行引擎
字节码是什么东西? 以下是百度的解释: 字节码(Byte-code)是一种包含执行程序.由一序列 op 代码/数据对组成的二进制文件.字节码是一种中间码,它比机器码更抽象. 它经常被看作是包含一个执行 ...
- H5文件操作API
引言 在之前我们操作本地文件都是使用flash.silverlight或者第三方的activeX插件等技术,由于使用了这些技术后就很难进行跨平台.或者跨浏览器.跨设备等情况下实现统一的表现,从另外一个 ...
- !!!jQuery中事件绑定 推荐使用.delegate()或者live()
jQuery中的.bind()..live()和.delegate()之间区别分析 参考:http://www.jb51.net/article/27309.htm DOM树 首先,可视化一个HM ...
- Cocos2d-x解析XML文件,解决中文乱码
身处大天朝,必须学会的一项技能就是解决中文显示问题.这个字符问题还搞了我一天,以下是个人解决乱码问题的实践结果,希望可以给其他人一些帮助 读取xml文件代码: CCDictionary* messag ...