如何在 github搭建博客 上写博客

& Jekyll在github上构建免费的Web应用
Jekyll在github上构建免费的Web应用
,将介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发。Nodejs框架是基于V8的引擎,是目前速度最快的Javascript引擎。chrome浏览器就基于V8,同时打开20-30个网页都很流畅。Nodejs标准的web开发框架Express,可以帮助我们迅速建立web站点,比起PHP的开发效率更高,而且学习曲线更低。非常适合小型网站,个性化网站,我们自己的Geek网站!!
张丹(Conan), 程序员Java,R,PHP,Javascript
weibo:@Conan_Z
转载请注明出处:
程序员会写程序是基本技能,程序员会写文档是更高的能力。用简单的图形表达架构,用流畅语言描述业务,用专业的文笔写成报告,看似简单的要求,但对于普通的程序员来说都是一种挑战。
有时候我们纠结的不是怎么组织文字,而是怎么排版,用哪种字体,居中还是靠右放置?如何能保持多人撰写文档的统一风格?
Jekyll可以帮助我们标准化文档结构,文档样式,文档过程。剩下就是提升自己的知识基础了。
Jekyll介绍
安装Jekyll
用Jekyll构建基于bootstrap模板
发布到Github
1. Jekyll介绍
Jekyll是一个静态站点生成器,它会根据网页源码生成静态文件。它提供了模板、变量、插件等功能,可以用来生成整个网站。
Jekyll生成的站点,可以直接发布到github上面,这样我们就有了一个免费的,无限流量的,有人维护的属于我们的自己的web网站。Jekyll是基于Ruby的程序,可以通过gem来下载安装。
Jekyll官方文档:
2. 安装Ruby
我的系统环境
win7 64bit
下载Ruby 2.0.0-p247 (x64):
安装Ruby,再安装RubyGems
~ D:\workspace\ruby>ruby --version
ruby 2.0.0p247 () [x64-mingw32]
~ D:\workspace\ruby>gem update --system
Updating rubygems-update
Fetching: rubygems-update-2.1.10.gem (100%)
Successfully installed rubygems-update-2.1.10
Parsing documentation for rubygems-update-2.1.10
Installing ri documentation for rubygems-update-2.1.10
Installing darkfish documentation for rubygems-update-2.1.10
Installing RubyGems 2.1.10
RubyGems 2.1.10 installed
Parsing documentation for rubygems-2.1.10
Installing ri documentation for rubygems-2.1.10
3. 安装Jekyll
~ D:\workspace\ruby>gem install jekyll
Could not find a valid gem 'jekyll' (>= 0), here is why:
Unable to download data from https://rubygems.org/ - SSL_connect returned=1 errno=0 state=SSLv3 read server ce
rtificate B: certificate verify failed (https://rubygems.global.ssl.fastly.net/quick/Marshal.4.8/jekyll-1.3.0.gemspec.rz
Possible alternatives: jekyll
问题1:下载认证文件
~ D:\workspace\ruby>curl http://curl.haxx.se/ca/cacert.pem -o cacert.pem
% Received % Xferd
Average Speed
0:00:02 --:--:-- 94724
# 移动到Ruby安装目录
~ D:\workspace\ruby>mv cacert.pem D:\toolkit\Ruby200\bin
设置环境变量
新打开一个命令行,再安装jekll
~ D:\workspace\ruby>gem install jekyll
Error installing jekyll:
The 'fast-stemmer' native gem requires installed build tools.
Please update your PATH to include build tools or download the DevKit
from 'http://rubyinstaller.org/downloads' and follow the instructions
at '/oneclick/rubyinstaller/wiki/Development-Kit'
问题2:安装Devkit,下载DevKit-mingw64-64-4.7.2-2-sfx.exe:
解压到目录:D:\toolkit\devkit
运行msys.bat,打开ruby命令行,再安装jekll
Administrator@PC ~
$ gem install jekyll
Building native extensions.
This could take a while...
Successfully installed fast-stemmer-1.0.2
Fetching: classifier-1.3.3.gem (100%)
Successfully installed classifier-1.3.3
Fetching: rb-fsevent-0.9.3.gem (100%)
Successfully installed rb-fsevent-0.9.3
Fetching: ffi-1.9.3-x64-mingw32.gem (100%)
Successfully installed ffi-1.9.3-x64-mingw32
Fetching: rb-inotify-0.9.2.gem (100%)
Successfully installed rb-inotify-0.9.2
Fetching: rb-kqueue-0.2.0.gem (100%)
Successfully installed rb-kqueue-0.2.0
Fetching: listen-1.3.1.gem (100%)
Successfully installed listen-1.3.1
Fetching: syntax-1.0.0.gem (100%)
Successfully installed syntax-1.0.0
Fetching: maruku-0.6.1.gem (100%)
Successfully installed maruku-0.6.1
Fetching: yajl-ruby-1.1.0.gem (100%)
Building native extensions.
This could take a while...
Successfully installed yajl-ruby-1.1.0
Fetching: posix-spawn-0.3.6.gem (100%)
Building native extensions.
This could take a while...
Successfully installed posix-spawn-0.3.6
Fetching: pygments.rb-0.5.4.gem (100%)
Successfully installed pygments.rb-0.5.4
Fetching: highline-1.6.20.gem (100%)
Successfully installed highline-1.6.20
Fetching: commander-4.1.5.gem (100%)
Successfully installed commander-4.1.5
Fetching: safe_yaml-0.9.7.gem (100%)
Successfully installed safe_yaml-0.9.7
Fetching: colorator-0.1.gem (100%)
Successfully installed colorator-0.1
Fetching: redcarpet-2.3.0.gem (100%)
Building native extensions.
This could take a while...
Successfully installed redcarpet-2.3.0
Fetching: jekyll-1.3.0.gem (100%)
Successfully installed jekyll-1.3.0
Parsing documentation for classifier-1.3.3
Installing ri documentation for classifier-1.3.3
Parsing documentation for colorator-0.1
Installing ri documentation for colorator-0.1
Parsing documentation for commander-4.1.5
Installing ri documentation for commander-4.1.5
Parsing documentation for fast-stemmer-1.0.2
unable to convert "\x90" from ASCII-8BIT to UTF-8 for lib/stemmer.so, skipping
Installing ri documentation for fast-stemmer-1.0.2
Parsing documentation for ffi-1.9.3-x64-mingw32
Installing ri documentation for ffi-1.9.3-x64-mingw32
Parsing documentation for highline-1.6.20
Installing ri documentation for highline-1.6.20
Parsing documentation for jekyll-1.3.0
Installing ri documentation for jekyll-1.3.0
Parsing documentation for listen-1.3.1
Installing ri documentation for listen-1.3.1
Parsing documentation for maruku-0.6.1
Couldn't find file to include 'MaRuKu.txt' from lib/maruku.rb
Installing ri documentation for maruku-0.6.1
Parsing documentation for posix-spawn-0.3.6
Installing ri documentation for posix-spawn-0.3.6
Parsing documentation for pygments.rb-0.5.4
Installing ri documentation for pygments.rb-0.5.4
Parsing documentation for rb-fsevent-0.9.3
Installing ri documentation for rb-fsevent-0.9.3
Parsing documentation for rb-inotify-0.9.2
Installing ri documentation for rb-inotify-0.9.2
Parsing documentation for rb-kqueue-0.2.0
Installing ri documentation for rb-kqueue-0.2.0
Parsing documentation for redcarpet-2.3.0
unable to convert "\x90" from ASCII-8BIT to UTF-8 for lib/redcarpet.so, skipping
Installing ri documentation for redcarpet-2.3.0
Parsing documentation for safe_yaml-0.9.7
Installing ri documentation for safe_yaml-0.9.7
Parsing documentation for syntax-1.0.0
Installing ri documentation for syntax-1.0.0
Parsing documentation for yajl-ruby-1.1.0
unable to convert "\x90" from ASCII-8BIT to UTF-8 for lib/yajl/yajl.so, skipping
Installing ri documentation for yajl-ruby-1.1.0
18 gems installed
这样就安装好了jekyll。
查看jekyll命令行帮助
DESCRIPTION:
Jekyll is a blog-aware, static site generator in Ruby
Build your site
Launch local server with docs for Jekyll v1.3.0
Search site and print specific deprecation warnings
Display global or [command] help documentation.
Import your old blog to Jekyll
Creates a new Jekyll site scaffold in PATH
Serve your site locally
GLOBAL OPTIONS:
-s, --source [DIR]
Source directory (defaults to ./)
-d, --destination [DIR]
Destination directory (defaults to ./_site)
Safe mode (defaults to false)
-p, --plugins PLUGINS_DIR1[,PLUGINS_DIR2[,...]]
Plugins directory (defaults to ./_plugins)
--layouts DIR
Layouts directory (defaults to ./_layouts)
-h, --help
Display help documentation
-v, --version
Display version information
-t, --trace
Display backtrace when an error occurs
4. 用Jekyll构建基于bootstrap模板
下载jekyll-bootstrap的模板项目
#从github下载模板
Administrator@PC /d/workspace/ruby
$ git clone /plusjade/jekyll-bootstrap.git jekyll
Cloning into 'jekyll'...
remote: Counting objects: 1898, done.
remote: Compressing objects: 100% (), done.
remote: Total 1898 (delta 850), reused 1729 (delta 723)
Receiving objects: 100% (), 575.45 KiB | 184 KiB/s, done.
Resolving deltas: 100% (850/850), done.
#进入项目目录
Administrator@PC /d/workspace/ruby
$ cd jekyll/
#查看目录模板
Administrator@PC /d/workspace/ruby/jekyll
_config.yml
pages.html
History.markdown
categories.html
archive.html
changelog.md
sitemap.txt
Administrator@PC /d/workspace/ruby/jekyll
$ jekyll serve
Configuration file: d:/workspace/ruby/jekyll/_config.yml
Source: d:/workspace/ruby/jekyll
Destination: d:/workspace/ruby/jekyll/_site
Generating... done.
Server address: http://0.0.0.0:4000
Server running... press ctrl-c to stop.
打开浏览器,http://localhost:4000/
通过几条命令,基于bootstrap风格的模板就构建好了。
4. Jekyll的基本使用
编写新文章(Post)
编写新页面(Page)
1). 编写新文章(Create a Post)
通过命令生成文章
~ D:\workspace\ruby\jekyll>rake post title="Hello World"
Creating new post: ./_posts/-hello-world.md
查看文件:-hello-world.md
编辑文件:-hello-world.md
~ vi ./_posts/-hello-world.md
layout: post
title: "Hello World"
description: ""
category: ""
{% include JB/setup %}
## 第一页,jekyll的开始
Jekyll is a parsing engine bundled as a ruby gem used to build static websites from
dynamic components such as templates, partials, liquid code, markdown, etc. Jekyll is known as "a simple, blog aware, static site generator".
### 博客文章:[用Jekyll构建基于bootstrap系统](http://blog.fens.me/jekyll-bootstarp-doc/)
程序员会写程序是基本技能,程序员会写文档是更高的能力。用简单的图形表达架构,用流畅语言描述业务,用专业的文笔写成报告,看似简单的要求,但对于普通的程序员来说都是一种挑战。
有时候我们纠结的不是怎么组织文字,而是怎么排版,用哪种字体,居中还是靠右放置?如何能保持多人撰写文档的统一风格?
Jekyll可以帮助我们标准化文档结构,文档样式,文档过程。剩下就是提升自己的知识基础了。
保存后,启动服务器。
Administrator@PC /d/workspace/ruby/jekyll
$ jekyll serve
Configuration file: d:/workspace/ruby/jekyll/_config.yml
Source: d:/workspace/ruby/jekyll
Destination: d:/workspace/ruby/jekyll/_site
Generating... Error reading file d:/workspace/ruby/jekyll/_posts/
6-hello-world.md: invalid byte sequence in GBK
error: invalid byte sequence in GBK. Use --trace to view backtrace
发现中文的GBK编码报错。
找到jekyll安装目录,修改convertible.rb文件,第38行
~ vi D:\toolkit\Ruby200\lib\ruby\gems\2.0.0\gems\jekyll-1.3.0\lib\jekyll\convertible.rb
#第38行,替换为下面内容
self.content = File.read_with_options(File.join(base, name), :encoding => "utf-8")
重启服务器
Administrator@PC /d/workspace/ruby/jekyll
$ jekyll serve
Configuration file: d:/workspace/ruby/jekyll/_config.yml
Source: d:/workspace/ruby/jekyll
Destination: d:/workspace/ruby/jekyll/_site
Generating...
___________________________________________________________________________
| Maruku tells you:
+---------------------------------------------------------------------------
| Could not find ref_id = "httpblogfensmejekyllbootstarpdoc" for md_link(["http:
//blog.fens.me/jekyll-bootstarp-doc/"],"httpblogfensmejekyllbootstarpdoc")
| Available refs are []
+---------------------------------------------------------------------------
!d:/toolkit/Ruby200/lib/ruby/gems/2.0.0/gems/maruku-0.6.1/lib/maruku/errors_mana
gement.rb:49:in `maruku_error'
!d:/toolkit/Ruby200/lib/ruby/gems/2.0.0/gems/maruku-0.6.1/lib/maruku/output/to_h
tml.rb:715:in `to_html_link'
!d:/toolkit/Ruby200/lib/ruby/gems/2.0.0/gems/maruku-0.6.1/lib/maruku/output/to_h
tml.rb:970:in `block in array_to_html'
!d:/toolkit/Ruby200/lib/ruby/gems/2.0.0/gems/maruku-0.6.1/lib/maruku/output/to_h
tml.rb:961:in `each'
!d:/toolkit/Ruby200/lib/ruby/gems/2.0.0/gems/maruku-0.6.1/lib/maruku/output/to_h
tml.rb:961:in `array_to_html'
\___________________________________________________________________________
Not creating a link for ref_id = "httpblogfensmejekyllbootstarpdoc".done.
Server address: http://0.0.0.0:4000
Server running... press ctrl-c to stop.
错误解决!
打开浏览器:http://localhost:/06/hello-world/
2). 编写新页面(Create a Page)
通过命令生成页面
~ D:\workspace\ruby\jekyll>rake page name="about.md"
mkdir -p .
Creating new page: ./about.md
~ D:\workspace\ruby\jekyll>rake page name="pages/about"
mkdir -p ./pages/about
Creating new page: ./pages/about/index.html
同样,我们编辑文件,重启jekyii服务就行了。
5. 发布到Github
在github网站,我们创建一个新的库,jekyll-demo
把jekll项目,添加到jekyll-demo
~ D:\workspace\ruby\jekyll>git remote set-url origin :bsspirit/jekyll-demo.git
~ D:\workspace\ruby\jekyll>git add .
~ D:\workspace\ruby\jekyll>git commit -m 'new_post'
[master 1fc298e] 'new_post'
4 files changed, 36 insertions(+)
create mode 100644 _posts/-hello-world.md
create mode 100644 about.md
create mode 100644 pages/about/index.html
~ D:\workspace\ruby\jekyll>git push origin master
Counting objects: 916, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (431/431), done.
Writing objects: 100% (916/916), 297.68 KiB, done.
Total 916 (delta 437), reused 879 (delta 422)
To :bsspirit/jekyll-demo.git
* [new branch]
master -> master
新建一个gh-pages分支,用于发布项目
~ git branch gh-pages
~ git checkout gh-pages
修改文件:_config.yml,设置base_path
~ vi _config.yml
production_url : http://bsspirit.github.io
BASE_PATH : /jekyll-demo
~ git add .
~ git commit -m 'deploy'
~ git push origin gh-pages
发布需要10分钟,10分钟后,在github上面浏览项目,
项目地址的格式为:
http://[username].github.io/[projectname]/
这样我们就可以通过github构建免费的web应用了。
转载请注明出处:
This entry was posted in ,
Pingback: ()
Designed by教你如何用Jekyll 搭建全静态博客
喜欢写Blog的人,会经历三个阶段。
第一阶段,刚接触Blog,觉得很新鲜,试着选择一个免费空间来写。
第二阶段,发现免费空间限制太多,就自己购买域名和空间,搭建独立博客。
第三阶段,觉得独立博客的管理太麻烦,最好在保留控制权的前提下,让别人来管,自己只负责写文章。
大多数Blog作者,都停留在第一和第二阶段,因为第三阶段不太容易到达:你很难找到俯首听命、愿意为你管理服务器的人。
但是两年前,情况出现变化,一些程序员开始在Github网站上搭建blog。他们既拥有绝对管理权,又享受github带来的便利----不管何时何地,只要向主机提交commit,就能发布新文章。更妙的是,这一切还是免费的,github提供无限流量,世界各地都有理想的访问速度。
今天,我就来示范如何在github上搭建Blog,你可以从中掌握github的Pages功能,以及Jekyll软件的基本用法。更重要的是,你会体会到一种建立网站的全新思路。
一、Github Pages 是什么?
如果你对编程有所了解,就一定听说过github。它号称程序员的Facebook,有着极高的人气,许多重要的项目都托管在上面。
简单说,它是一个具有版本管理功能的代码仓库,每个项目都有一个主页,列出项目的源文件。
但是对于一个新手来说,看到一大堆源码,只会让人头晕脑涨,不知何处入手。他希望看到的是,一个简明易懂的网页,说明每一步应该怎么做。因此,github就设计了Pages功能,允许用户自定义项目首页,用来替代默认的源码列表。所以,github Pages可以被认为是用户编写的、托管在github上的静态网页。
github提供模板,允许站内生成网页,但也允许用户自己编写网页,然后上传。有意思的是,这种上传并不是单纯的上传,而是会经过Jekyll程序的再处理。
二、Jekyll是什么?
Jekyll(发音/'d?i:k ?l/,"杰克尔")是一个静态站点生成器,它会根据网页源码生成静态文件。它提供了模板、变量、插件等功能,所以实际上可以用来编写整个网站。
整个思路到这里就很明显了。你先在本地编写符合Jekyll规范的网站源码,然后上传到github,由github生成并托管整个网站。
这种做法的好处是:
* 免费,无限流量。
* 享受git的版本管理功能,不用担心文章遗失。
* 你只要用自己喜欢的编辑器写文章就可以了,其他事情一概不用操心,都由github处理。
它的缺点是:
* 有一定技术门槛,你必须要懂一点git和网页开发。
* 它生成的是静态网页,添加动态功能必须使用外部服务,比如评论功能就只能用disqus。
* 它不适合大型网站,因为没有用到数据库,每运行一次都必须遍历全部的文本文件,网站越大,生成时间越长。
但是,综合来看,它不失为搭建中小型Blog或项目主页的最佳选项之一。
三、一个实例
下面,我举一个实例,演示如何在github上搭建blog,你可以跟着一步步做。为了便于理解,这个blog只有最基本的功能。
在搭建之前,你必须已经安装了,并且有账户。
第一步,创建项目。
在你的电脑上,建立一个目录,作为项目的主目录。我们假定,它的名称为jekyll_demo。
$ mkdir jekyll_demo
对该目录进行git初始化。
$ cd jekyll_demo
$ git init
然后,创建一个没有父节点的分支gh-pages。因为github规定,只有该分支中的页面,才会生成网页文件。
$ git checkout --orphan gh-pages
以下所有动作,都在该分支下完成。
注:相关网站建设技巧阅读请移步到频道。
最新图文推荐
最新专栏文章
大家感兴趣的内容
网友热评的文章
seajs.config({
base: "/resource/passapi/scripts/"
seajs.use('seajs/seajs-css');
seajs.use(['artdialog/src/dialog-plus'], function (dialog) {
$('#favorite').on('click', function(){
$.getJSON('/passapi.php?op=userstatus&callback=?', function(data){
if (data.status == 1) {
var _this = $('#favorite').find('span');
$.getJSON('/?app=favorite&controller=favorite&action=add&jsoncallback=?&contentid='+contentid, function(json){
if(json.state){
_this.html('用Github page写博客 - 推酷
用Github page写博客
最近博客的确写的又少了很多, 也发生了很多事情, 生活的变化也挺大的, 一直忙的不可开交. 最近这段时间可能能逐渐的稍微舒缓一些, 趁这个机会也学习一下自己一直想学习的东西, 做一些自己一直想做的事情吧. 首先要做的, 是恢复博客的更新, 作为起点, 废除了原来架设于Linode上的Wordpress博客, 改为用Github page来写博客, 据说每个开始用Github page写博客的人都会写篇博客纪念, 我也不免俗吧, 也写一篇博客记录一下.
为什么要用Github Page
最重要的原因应该说是觉得每年花一千多租个Linode的服务器就为写博客有些浪费了, 虽然说也可以顺面用SSH做梯子, 但是还是浪费.
同时, 我建在Linode上的博客服务用的是Wordpress, 而Wordpress是用PHP写的, 我对PHP挺没有好感的, 所以一直没有怎么学习, 所以自己想改起来也挺不顺手的, 基于这个原因, 虽然我已经给Wordpress改了一个我自己觉得还可以的模版, 但是还是挺不爽的.
另外, Wordpress的博客速度真的挺慢的, 尽管我已经用了Linode这种相对来说比较昂贵的服务器了, 但是还是挺慢, 用了静态Cache也还是, 可能原来那个Wordpress的模版本身就是个慢东西.
综上所述, 换个博客其实挺有必要的, 同时又正好有Github page这个好东西, 我又早就换了Vimpress + Markdown写博客了, 又没有什么障碍, 为什么不用这种免费, 速度快, 操作又方便的服务呢?
静态网站生成的选择
要用Github page没有什么障碍了, Github page目前用的是
(Jekyll是用ruby写的, 这个就更加应该要用了~~)生成静态网页, 在一开始, 查找了一些资料以后, 我原以为Octpress会方便一些, 所以先试用了一段时间的Octpress, 但是因为Octpress比较长时间没有更新了, 用的还是非常老版本的
及其他依赖库, 感觉很不爽, 同时要改模版的时候, 为了找到对应的include文件需要找好几层, 这个也觉得有些繁琐, 虽然Octpress整体设计的我觉得还是OK的, 但是最后我还是放弃了. 所以决定直接用Jekyll, 并且准备自己从头写Jekyll的模版, 在为Jekyll加入Bootstrap的时候发现了Jekyll Bootstrap这个项目, 于是也试用了一下, 因为和Octpress类似的原因, 也放弃了.
经过一番折腾以后, 感觉用任何第三方的东西都是挺浪费时间的, 再也没找过其他的程序了, 坚定的直接用Jekyll了.
重头写一个博客对我这种对网页开发不熟悉的人来说实在太费劲, 还是找找模版来的快, 在
上看了一遍所有的模版, 包括Octpress的模版, 我感觉符合我审美的有下面这些:
其中我最喜欢的是whitespace和lanyon这两个模版, 在正犹豫不觉用哪个模版的时候, 阴差阳错的走进了
, 瞬间被其博客的文艺气息所吸引, 然后就决定改成用他博客的模版了, 但是他博客的模版其实并没有公布出来, 走运的是通过github找到了他本人的帐号, 并且他的博客也正好使用Github page制作的, 所以就给我扒回来了. 当然也没法直接用, 最终的改动挺多, 但是整体的风格还是Aigars Dzerviniks的博客.
模版的改动
增加了搜索功能
&form action=&/search& method=&get&&
&fieldset role=&search&&
&input type=&hidden& name=&q& value=&site:& /&
&input class=&search& type=&text& name=&q& results=&0& placeholder=&搜索本站&/&
&/fieldset&
要实现博客中的效果, 还需要在css中去掉默认的边框. 设置border为0:
#social form fieldset {
border: 0;
增加了代码的高亮显示
_config.yml 设置为:
highlighter: pygments
pygments: true
markdown_ext:
通过利用Foundation的响应功能合适的实现高亮代码的正确显示, 有兴趣的读者可以在iPad, iPhone, Android看看我的博客, 我自己感觉效果还不错.
首页改为部分输出
的如下功能实现:
{{ post.excerpt }}
然后用配置实现原来用的多的more标志来确定部分输出的位置:
_config.xml:
excerpt_separator: &&!-- more --&&
增加了feed
增加了首页的翻页
文章的结尾列出了标签和分类
增加了sitemap.xml
修改了博客的title style为直接用title做url.
修改完博客的风格后, 自己感觉还是比较满意的, 原来用markdown写的文章稍微改改就能用了, 但是原来还有很多老的文章, 最开始其实是在
上写的, 并且导入了原来的wordpress博客了, 这里通过Jekyll官方提供的
原来的博客就接入了
, 并且同步了老的评论, 但是因为新的博客所有的地址都变了, 而友言以文章地址为唯一的标识, 所以评论虽然都还在, 但是实际一个都匹配不上了, 感觉丢了2400多条评论也挺可惜的, 所以特别写了个ruby程序导入了原来的评论, 这个明天单开一篇文章来说明.
分类:&随笔
标签:&Github page Jekyll Octpress Wordpress
已发表评论数()
&&登&&&陆&&
已收藏到推刊!
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见

我要回帖

更多关于 github搭建个人博客 的文章

 

随机推荐