Goblog 是基于beego框架开发的博客系统。主张简约、简单、轻量。数据存储mongodb,cdn推荐七牛,多功能后台,可docker部署。
bee :1.4.1
beego :1.6.1
Go :go version go1.6.2 darwin/amd64
go get -u github.com/deepzz0/goblog
######安装mongodb数据库
brew install mongodb
若没有brew
,可自行百度谷歌,安装。
mongodb默认读取环境变量MGO
,追加export MGO="127.0.0.1"
到~/.bash_profile
末尾。如果没有该文件可手动创建。
echo 'export MGO="127.0.0.1"' >> .bash_profile
所有配置文件均在项目目录下的conf
下。
app.conf
,这里是beego框架的配置文件,采用ini配置方式,如果你了解过beego,应该能看懂。beego框架地址:http://beego.me . runmode选择你要运行的模式,对应下面的dev、prod、test。线上模式一般为prod,因为该模式不会输出beego的调试log。enablehttps开启https,依次是https监听端口,https相关证书(证书位置替换为自己的),http的监听端口(当然你也可以关掉http,enablehttp=false)。mydomain是生成feed需要的域名地址
appname = goblog
runmode = dev
[dev]
httpport = 8080
# 用于生成feed
mydomain = 127.0.0.1:8080
[prod]
enablehttp = true
httpport = 80
enablehttps = false
httpsport = 443
httpscertfile = /certs/fullchain.pem
httpskeyfile = /certs/privkey.pem
# 用于生成feed等其它需要用到域名的地方
mydomain = deepzz.com
[test]
httpport = 8888
17monipdb.dat
,该文件是后台解析ip地址的数据库,你可以查看www.ipip.netqiniu.conf
,该文件存放了有关qiniu相关参数,如果没有请创建,暂时没有用到。backleft
,该文件是后台相关菜单项,你可以进行删减,并实现对应的功能。backup
,该文件夹存放的是账号相关,前台菜单项等相关配置。UserName是后台登陆用户名,PassWord登陆密码(这里填明文),数据库存储是加密过的,可以在后台进行修改。Salt这是加密的随机盐,由于是手动注册,请随便填写。HeadIcon头像图片,这个地址填图片链接地址.
{
"UserName": "deepzz",
"PassWord": "deepzz",
"Email": "[email protected]",
"Salt": "__(f",
"Sex": "男",
"PNumber": 15100000000,
"Address": "山西胡同",
"Education": "本科",
"RealName": "陈",
"CreateTime": "2016-01-31T17:38:40.431+08:00",
"LoginTime": "2016-01-31T17:38:40.431+08:00",
"LoginIp": "127.0.0.1",
"LogoutTime": "2016-01-31T17:38:40.431+08:00",
"BlogName": "Deepzz",
"Introduce": "程序路上一直坚持的小小码农。",
"HeadIcon": "https://o7msui8ho.qnssl.com/img/headpic/headpic.jpg",
"Tags": {},)"
}
models/model.go
修改默认用户,将deepzz替换成你的用户名。
UMgr.loadUsers()
Blogger = UMgr.Get("deepzz")
<!-- 多说评论框 start -->
<div class="ds-thread" data-order="desc" data-limit="20" data-form-position="top" data-thread-key="{{.ID}}" data-title="{{.Title}}" data-url="{{$.Domain}}/{{.URL}}"></div>
<!-- 多说评论框 end -->
<!-- 多说公共JS代码 start (一个网页只需插入一次) -->
<script type="text/javascript">
var duoshuoQuery = {short_name:"deepzz"};
(function() {
var ds = document.createElement('script');
ds.type = 'text/javascript';ds.async = true;
ds.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') + '//static.duoshuo.com/embed.js';
ds.charset = 'UTF-8';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ds);
})();
</script>
<!-- 多说公共JS代码 end -->
博客集成多说评论框架,你需要到多说官网获取的你网站的shot_name,将上面的deepzz替换掉。该代码段嵌到多个页面,你需要一一替换。由于多说多渠道登陆头像是基于http协议。固如果博客部署为https,将自动进行头像代理为https,实现全站https。
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-77251712-1', 'auto');
ga('send', 'pageview');
</script>
这里博主用了Google的数据统计,你可以将上面的代码替换成百度的统计代码等其它统计方式。在views/homelayout.html
暂时做了一个小工具,以后其它工具都会写高该目录下controllers/plugin
。
- UserAgent Parser,基于GO的用户代理解析器。可以到
domain:port/plugin/useragent.html
访问。
关于持久化,现阶段有sitemap.xml和feed.xml需要持久化,我把它们存放于/data/goblog
目录下,自我测试时可能会报错,你可以随意指定该路径models/model.go
中。
FeedFile = "/data/goblog/feed.xml"
SiteFile = "/data/goblog/sitemap.xml"
static
目录下:
feedTemplate.xml
是生成feed.xml的模版,你可以通过访问domain:port/feed
查看,每小时自动更新。robots.txt
,网络爬虫排除协议。sitemap.xml
,网站地图,用于搜索引擎快速收录,现只能通过后台手动配置,你也可以通过自己的方式处理。访问两种方式domain:port/sitemap
和domain:port/sitemap.xml
。- 邮件报错,
models/model
下init
的log.SetEmail(Blogger.Email)
,如果不开启请注释掉。
所有都配置完成,在根目录下运行bee run
可以到我的博客http://blog.deepzz.com查看,https访问https://blog.deepzz.com,国外服务器网速稍慢。
前端页面
后台登陆
首页统计
博文修改