颜值超高的FireKylin博客系统

原文:https://www.fanhaobai.com/2016/12/firekylin.html

相信大多数人都使用着WordPress,但是又很难从WordPress上找到一款比较满意的主题,你是否想过更换其他优秀的开源博客系统呢?我就是这样的经历,但一直也没找到合适的机会,直到一次偶然Google到一篇 技术博客,打开时眼前一亮,简介大气的排版以及很好地支持移动设备特性深深地吸引了我,随即便开始了瞎鼓捣,于是就有了这篇文章。

FireKylin介绍

国外有一个类似的博客系统,名字叫 Greyshade,但是作者很长时间没有进行维护了。而国内同样优秀的 FireKylin 开源博客系统,是由奇虎360公司Web前端工程师组成的专业团队 75Team 进行开发和维护,所以选
FireKylin作为本站的博客系统就是很自然的事情了。

FireKylin是基于ThinkJS开发,所以本篇博客也默认你已安装好了NodeJS。【CentOS安装NodeJS点这里】

安装前准备

1)首先需要安装npm【npm使用说明见这里】

yum install –y npm

2)下载最新的安装包并解压

wget http://firekylin.org/release/firekylin_0.13.1.tar.gz
tar zxvf ./firekylin_0.13.1.tar.gz

安装FireKylin

1)安装对应依赖

cd ./firekylin
npm install                 #必须在解压缩目录内执行

发现是从国外https://registry.npmjs.org/upyun地址下载源,而下载速度较慢,故改用国内淘宝的镜像。

npm install --registry=https://registry.npm.taobao.org

2)访问并安装

npm start

通过配置Nginx服务器代理来访问http://127.0.0.1:8360,根据提示进行安装。

nginx配置如下:

server{
    root  path/to/www;    #指向firekylin目录下的www
    location / {
        proxy_http_version 1.1;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-NginX-Proxy true;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_pass http://127.0.0.1:8360$request_uri;
        proxy_redirect off;
    }
}

安装PM2

PM2是用来在服务器上管理 NodeJS服务的工具,安装较简单。

1)安装

npm install -g pm2 --registry=https://registry.npm.taobao.org

2)配置

mv ./pm2_default.json ./pm2.json

pm2.json文件中cwd配置值改为项目的当前路径。

3)启动

pm2 start pm2.json

4)配置Nginx

Nginx服务器的配置可以参考项目目录下的nginx_default.conf

几个问题

增加文章目录

FireKylin自动为文章生成的目录,总是感觉怪怪的,于是决定改源码,使之变成我想要的样子。

修改的文件路径为app/admin/controller/api/post.js

原代码:

markedContent = markedContent.replace(/<h(\d)[^<>]*>(.*?)<\/h\1>/g, function (a, b, c) {
      if (b == 2) {
        return '<h' + b + ' id="' + _this2.generateTocName(c) + '">' + c + '</h' + b + '>';
      }
      return '<h' + b + ' id="' + _this2.generateTocName(c) + '"><a class="anchor" href="#' + _this2.generateTocName(c) + '"></a>' + c + '</h' + b + '>';
    });
markedContent = markedContent.replace(/<h(\d)[^<>]*>([^<>]+)<\/h\1>/, function (a, b, c) {
      return a + '<div class="toc">' + tocContent + '</div>';
    });

修改为:

markedContent = markedContent.replace(/<h(\d)[^<>]*>(.*?)<\/h\d>/g, function (a, b, c) {
      return '<h' + b + ' id="' + _this2.generateTocName(c) + '">' + c +'</h' + b + '>';
    });
markedContent = (tocContent ? ('<div class="toc"><p><strong>文章目录</strong></p>' + tocContent + '</div>'): '') + markedContent

这样每次发表文章的时候会自动根据标题生成文章目录,当然还需要在theme/firekylin/layout.html中增加如下样式:

article .toc {
    border: 1px solid #e2e2e2;
    font-size: 14px;
    margin: 0 0 15px 20px;
    max-width: 260px;
    min-width: 120px;
    padding: 6px;
    float: right;
}

并在theme/firekylin/layout.html中的article blockquote{}增加一行display:-webkit-box;
的样式。

修改文章摘要

修改的文件路径为app/admin/controller/api/post.js

原代码:

data.summary = data.content.split('<!--more-->')[0].replace(/<[>]*>/g, '');

修改为:

data.summary = data.content.split('<!--more-->')[0].replace(/<[>]*>/g, '').replace(/<div\s*class="toc">([\s\S]+?)<\/div>/mg, '')  + '[...]';

文章摘要不需要文章目录,且增加字数省略符号[...]。

增加百度分享

由于本站全面启用了HTPPS,而百度分享还是使用了HTTP,当接入百度分享后会存在请求不到share.js文件的问题,详细的解决办法点 这里

** 大致需要两个步骤 **

1) 下载github上已经修改完成的 源码,解压并放置在站点服务器静态资源目录下:

unzip ./baiduShare-master.zip
cd ./baiduShare-master
mv ./static/* /data/html/www/static      #网站静态资源路径自行更改,第2步需要使用

2)复制百度分享的代码,并对其引用文件路径部分做如下修改:

原代码为:

.appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];

修改为:

.appendChild(createElement('script')).src='/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];

请确保上面的static静态资源文件目录是直接处于网站根目录下,然后复制修改后的代码插入到theme/firekylin/post.html<p>本文链接:<a href="{{site_url + http.url | safe}}">{{site_url + http.url | safe}}</a></p>后面即可。

多说头像不支持HTTPS

这里利用Nginx做一个反向代理,也就是通过本站服务器将HTTPS地址转发到对应的HTTP地址,原文见这里

** 需要的步骤 **

1) 配置Nginx作为反向代理服务器:

server {
    ... ...
    location ~ ^/proxy/(.*)$ {
        proxy_connect_timeout    10s;
        proxy_read_timeout       10s;
        proxy_pass             http://$1;
        proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        expires max;
    }
    ... ...
}

2) 下载多说的embed.js到本地,并作如下修改:

首先,替换embed.js文件中头像的路径。

return e.avatar_url||rt.data.default_avatar_url之前插入如下代码:

if (e.avatar_url) {
    e.avatar_url = (document.location.protocol == "https:") ? e.avatar_url.replace(/^http\:\/\//, "https://yoursite.com/proxy/") : e.avatar_url;
} else {
    rt.data.default_avatar_url = (document.location.protocol == "https:") ? rt.data.default_avatar_url.replace(/^http\:\/\//, "https://yoursite.com/proxy/") : rt.data.default_avatar_url;
}

然后,替换embed.js文件中表情的路径。

替换t+=s.message+'</p><div class="ds-comment-footer ds-comment-actions'中的s.message为如下代码:

((s.message.indexOf("src=\"http:\/\/") == -1) ? s.message : ((document.location.protocol == "https:") ?    
s.message.replace(/src=\"http\:\/\//, "src=\"https://yoursite.com/proxy/") : s.message))
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,598评论 18 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,464评论 25 707
  • 原文:https://www.fanhaobai.com/2017/03/install-hexo.html 前段...
    Howborn阅读 1,482评论 0 1
  • 今天下午躺在家里休息,和几个关注我的朋友聊了一会天。 其中有一个女孩子叫薇薇,她说自己正在香港机场候机,准备去印尼...
    王大纯阅读 3,059评论 15 55
  • 面试版 家庭教育非常重要,上海名牌学校面试家长还要看父母的体重过关不?原因是连自己的体重都管理不好的话其他就......
    Q同学会阅读 253评论 0 0