一、使用GitHub Pages创建个人博客页面
- 首先到GitHub进行账号注册:https://github.com/。
- 创建新仓库,不用新建readme.md,注意仓库名使用username.github.io的格式,这里username改成自己的用户名。
- 创建SSH密钥并上传到GitHub。
二、安装Python、Pelican、Markdown和make
-
安装Python。
-
安装Pelican。建议在虚拟环境virtualenv下使用。
-
安装virtualenv(可选)
pip install virtualenv
-
为了使用virtualenv更方便,可以借助 virtualenvwrapper(可选)
pip install virtualenvwrapper-win
配置虚拟环境目录,默认创建的虚拟环境位于C:\Users\username\下,可以通过环境变量
WORKON_HOME
来定制。通过计算机-->属性-->高级系统设置-->环境变量-->系统变量中新建“变量名”:
WORKON_HOME
,变量值:你自定义的路径
。 -
创建并激活虚拟环境(可选)
mkvirtualenv pelican
常用命令:
# 激活虚拟环境 workon {虚拟环境目录} # 停止虚拟环境 deactivate # 进入虚拟环境目录 cdvirtualenv # 列出所有虚拟环境 lsvirtualenv # 检查虚拟环境是否激活(其他方法也可) pip list
-
安装pelican
pip install pelican
-
-
安装markdown
pip install markdown
-
安装make并设置好环境变量下载地址
三、创建博客骨架
-
搭建博客目录(若使用虚拟环境必须在激活虚拟环境前提下执行下列命令,blog文件夹不需要在虚拟环境文件夹下):
mkdir blog cd blog pelican-quickstart
quickstart并非必须,如果想要使用非默认主题,可以下载对应主题的demo,解压至博客目录,然后按照下面的步骤修改相应的Makefile和pelicanconf.py即可,主题和插件下载建议使用
git clone
命令,方便以后更新。 2. 根据提示一步步输入相应的配置项,不知道如何设置的接受默认即可,后续可以通过编辑pelicanconf.py文件更改配置。完成后将会在根目录生成以下文件:. |-- content # 所有文章放于此目录 │ └── (pages) # 存放手工创建的静态页面 |-- develop_server.sh # 用于开启测试服务器 |-- Makefile # 方便管理博客的Makefile |-- output # 静态生成文件 |-- plugins # 插件(自己另外下载) |-- themes # 主题(自己另外下载) |-- pelicanconf.py # 配置文件 |-- publishconf.py # 配置文件
-
进入output文件夹,把自己刚刚建好的username.github.io版本库clone下来,注意使用SSH方式,这里以及后文中的username要替换成自己的GitHub用户名:
cd output git clone git@github.com:username/username.github.io.git
-
设置一键上传部署到GitHub。打开根目录下的Makefile文件,修改以下三个地方,设置完后,以后写完文章就可以通过在blog根目录下执行
make github
进行一键部署了。OUTPUTDIR=$(BASEDIR)/output/username.github.io publish: $(PELICAN) $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS) github: publish cd $(OUTPUTDIR); git add . ; git commit -am 'your comments'; git push
四、通过Markdown试写博文并上传GitHub发布
-
创建一个页面:这里以创建 About页面为例。在content目录创建pages子目录:
mkdir content/pages
然后创建About.md并填入下面内容(一定要有title):
title: About Me date: 2013-04-18 About me content
相关介绍请参见官方文档。
-
创建导航目录项:Menu Item设置。在你的博客中,可设置相应的菜单项,菜单项是通过pelicanconf.py设置的,具体如下所示:
MENUITEMS = (("ITEM1","http://github.com"), ("ITEM2",URL), ......)
-
在Makefile目录下执行以下命令,即可在本机http://127.0.0.1:8000看到效果。
make publish make serve
五、安装主题
主题下载好后,对应在在pelicanconf.py中添加主题选择条目,主题下载地址,这里我选用的是fresh主题。
THEME = '主题目录(相对或绝对路径)'
推荐主题:elegant,pelican-bootstrap3 ,fresh
六、添加第三方评论系统
由于Disqus需要翻墙,而国内又没有什么比较好的第三方评论系统,网上搜了一堆,最后决定用github issues来实现。本来想用gitment的,但是不知道哪里配置问题,无法初始化issue,然后用的是gitalk,界面也比gitment好看。
-
gitalk
直接到theme--tempaltes下,参考gitalk配置,新建gitalk.html,这里我稍微配置了个环境变量
GITALK_OWNER
。而且我的repo
没有选择博客文件所在仓库,而是另外建了一个仓库,注意createIssueManually
最好设置为true
,这样文章发表之后在评论处点击初始化就可以自动生成一个issue,当然每篇文章都要点一下。{% if GITALK_OWNER %} <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/gitalk@1/dist/gitalk.css"> <script src="https://cdn.jsdelivr.net/npm/gitalk@1/dist/gitalk.min.js"></script> <div id="gitalk-container"></div> <script> var gitalk_owner = '{{ GITALK_OWNER }}'; var gitalk = new Gitalk({ clientID: 'a61......', clientSecret: '38c......', repo: 'comments', owner: gitalk_owner, admin: [gitalk_owner], distractionFreeMode: false, // Facebook-like distraction free mode createIssueManually: true }) gitalk.render('gitalk-container') </script> {% endif %}
然后打开article.html,找到
{% if DISQUS_SITENAME %}
这行,从这之后开始修改:{% if COMMENT %} <div class="comments"> <h2>Comments</h2> {% include 'gitalk.html' %} </div> {% endif %}
第一行这里不用disqus,所以改成
{% if COMMENT %}
,主要就是加了这么一行{% include 'gitalk.html' %}
。记得在pelicanconf.py文件中要配置COMMENT = True
和GITALK_OWNER
。 -
disqus
这个配置相对简单。首先到disqus注册账号;create a new site,记住你填的
shortname
;然后选择新建的site,Installing Disqus,下一步下一步把代码复制出来;然后在theme--tempaltes下,新建disqus.html,把刚才代码粘贴进去去掉注释,增加头部{% if DISQUS_SITENAME %}
尾部{% endif %}
和DISQUS_SITENAME
变量,最后就变成这样:{% if DISQUS_SITENAME %} <div id="disqus_thread"></div> <script type="text/javascript"> var disqus_shortname = '{{ DISQUS_SITENAME }}'; (function() { // DON'T EDIT BELOW THIS LINE var d = document, s = d.createElement('script'); s.src = 'http://' + disqus_shortname + '.disqus.com/embed.js';; s.setAttribute('data-timestamp', +new Date()); (d.head || d.body).appendChild(s); })(); </script> <noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript> {% endif %}
然后修改article.html,同gitalk一样,在
<h2>Comments</h2>
后加上一行{% include 'disqus.html' %}
。最后只需在pelicanconf.py文件中配置DISQUS_SITENAME = 'shortname'
即可启用disqus。
七、添加Webmaster
为了让博客能在网上被搜索到,需要搜索引擎将网站收录,所以要添加Webmaster。这里我添加了Google和Bing收录,因为GitHub屏蔽了百度网站爬虫,所以除非你搭建在自己的服务器上,否则是没办法添加百度收录的。
下面以Bing收录为例,首先打开Bing网站管理员工具,用Microsoft账号登录,都是中文界面,按照说明添加网站并验证通过。
然后准备sitemap,到博客主目录下,执行:
git clone git://github.com/getpelican/pelican-plugins.git
在pelicanconf.py里配置如下:
PLUGIN_PATHS = ['pelican-plugins',]
PLUGINS = ["sitemap"]
SITEMAP = {
"format": "xml",
"priorities": {
"articles": 0.7,
"indexes": 0.5,
"pages": 0.3,
},
"changefreqs": {
"articles": "monthly",
"indexes": "daily",
"pages": "monthly",
}
}
然后make html
在output目录下可以看到已经生成了网站的sitemap;make github
后,提交网站sitemap地址到到Bing Webmaster:https://username.github.io/sitemap.xml
。
八、添加站内搜索
这一步必须建立在第七步前提下,否则是搜不到东西的。以添加Bing站内搜索为例:
- 打开Bing Custom Search,选择New Instance;
- 然后在Definition Editor下添加自己的网站,添加好后,可以在右侧尝试搜索一下(前提是第七步,不知道为什么我在Bing上已经能搜索到自己的网站了,然而站内搜索始终搜不到内容,换成Google就没有问题,但是Google要fq,流程上都差不多,所以这里以Bing为例);
- 第三步API EndPoint,Query为自定义API名称可以任意,Subscription Key可以选择申请一个免费的Issue free trial key,注意要申请Custom Search API,填完之后记得Call一下,看看返回值是否正确,有问题检查你的key;
- 第四步Hosted UI下选择搜索框的样式,填入第三步的key。保存之后将下面的代码复制出来,粘贴到任意你想添加搜索框的地方。因为fresh主题自带Google站内搜索,所以这里我取了个巧,直接套用Google的CSS。
添加Google站内搜索就更简单,到Google站内搜索网站上申请一个ID,调整好样式后将ID添加到pelicanconf.py即可:
GOOGLE_CUSTOM_SEARCH_SIDEBAR = "your ID"
九、添加分享按钮
fresh主题自带ShareThis分享功能,申请账号并将ShareThis Pub Key添加到pelicanconf.py中就可以使用,具体参考官方文档。添加第三方的跟添加其他插件类似。
SHARETHIS_PUB_KEY = 'your ShareThis Pub Key'
添加了分享按钮之后,网站加载速度变得很慢,所以最后我把这个功能关掉了,本来也用不上。对我来说,必要的功能有,其他越简单越好。
十、最重要的事
为了看起来完美,所以加了第十条。不过这确实也是最重要的,我觉得应该关心博客的内容而不是样式。
PS:更新补丁
-
【20190505】由于主题年久失修,已经跟不上Pelican的更新了,在执行构建时报错:
CRITICAL: TypeError: not all arguments converted during string formatting
,解决方法如下:从On fresh install: "simple" theme build error using publishconf.py跳转到Fall back to the old feed settings if using an older theme #2494,再跳转到Fall back to the old feed settings for older theme,修改pelican/writers.py解决问题。
Comments