天天看点

[git]用pelican搞一个自己的blog(已完成)

pelican

Pelican Static Site Generator, Powered by Python:Pelican是python语言写的静态网站生成器。因为我一直打算用github pages做一个博客,现在已经学会用Hexo在github pages上做博客了。但是我一想:我一个pythoner,干嘛不用python写的静态网站生成器。我想应该是网上教程太少,那我今天就来搞一搞。顺便记录下来,整理出一个教程,希望一切顺利!

最终效果:blog.xueweihan.com

1.首先用virtualenv创建一个env

2.使用pip安装pelican和markdown

3.创建pelican目录结构

文件结构如下:

我们下面只用到我解释的这几个目录和文件,大致有个印象即可

4.编写文章测试下效果

在content目录下创建一个名为:test.md的markdown文件,把上面的那些内容放进去,用来测试效果。

5.本地查看效果

以上两个命令执行完,没有报错的话就用浏览器打开:127.0.0.1:8000,效果如下:

输入:<code>ctrl + c</code> 停止服务

5.上传到github pages 现在就差最后一步,上传到github pages上面。 一步步的来:

首先在github上创建一个项目,<code>Repository name</code>填写:你的github用户名.github.io 如下图:

然后在<code>output</code>目录依次输入:

最后访问:http://你的github用户名.github.io/ 例如我的就是:http://521xueweihan.github.io/

页面如下图:

还记得Makefile文件吗?我们通过修改这个文件,实现1条指令发布博客到github pages上。

把<code>blog</code>目录下的Makefile文件中的内容替换成下面的内容(原Makefile文件的内容都不要)

更新博客流程

把写好的markdown格式的文章放到content中,然后在<code>blog</code>目录下

本地查看效果的话:<code>make html</code> 然后<code>make serve</code> 最后访问:127.0.0.1:8000

发布到github:<code>make github</code> 完成

下面的内容算是高级篇了,需要把上面的步骤都完成。想要进一步完美自己的博客的小伙伴

1.独立域名

首先要购买域名,我的实在阿里云上买的,买完之后就需要修改你的域名指向:访问blog.xueweihan.com域名,跳转到你的.github.io。根据你购买域名时候的提示,就可以设置完成了。之后在output目录下,创建CNAME文件。内容就是你购买的域名。因为github pages只允许CNAME中的域名映射。

2.定制样式结构

一步步的来,首先要找到你喜欢的主题pelican主题,下载的时候我推荐<code>Download ZIP</code>会快很多。下载好你的主题,我们就需要在blog目录下,找到<code>pelicanconf.py</code>文件,它是在生成静态网站时候的配置文件,定制几乎所有的东西都需要通过这个。增添内容如下:

如果有python基础的,可以直接修改主题目录下的<code>template</code>中的模版。已达到你想要的目录结构和内容的呈现。

3.简单的SEO

在output文件中创建rebots.txt,这个文件是一个协议文件,没有不会影响什么。但是有的话,有利于搜索引擎的收录。内容如下,允许所有爬虫,同时不允许爬取theme目录下的内容,和所有的图片。:

大多数主题多是外国人写的,所以他们都支持‘谷歌分析’

而百度的分析就需要手动的在主题目录下的template目录下的base.html中增添百度的分析代码。

4.sitemap是对于爬虫友好的一个文件,它告诉爬虫,网站的更新频率和优先级等。详情

增添插件:

修改pelicanconf.py文件:

5.favicon.ico

放在output的根目录下。

6.订阅

因为pelican的库包含了feedgenerator。feedgenerator是用来生成Atom feeds(是包含你博客数据的xml的文件)用于订阅。所以你只需要在<code>pelicanconf.py</code>加入:

博客就会自动生成订阅功能了。

7.关于我

这个就像相当于一个自我介绍的页面,所以就需要在<code>content</code>目录下创建一个<code>pages</code>目录,然后把你要展示的内容放到<code>pages</code>目录下就可以了。

我的博客:blog.xueweihan.com

当删除了一篇博文,但是以我上面所说的方式发布的话。那片文章其实还是存在于github pages上的。只不过没有在模版中生成链接罢了。这种类似的情况会导致:换主题css丢失等问题。当然如果你清空<code>output</code>目录,然后重新生成网站的话,就没问题。但是清空的话,会导致一切不因该被删的文件也都被删除了,例如:.git和CNAME等文件。所以我就写了一个<code>del.sh</code>,用于删除pelican生成的文件,其他哪些通用文件都不删除。这样暂时可以解决问题。

本来想要在两台电脑上都可以发布文章,修改完makefile我发现不是刚性需求,同时实现效果不好。最后的解决方案是,把文章写在另外的一个github的项目中,分布式编辑这个项目。最后写文章之前,<code>git pull</code>获取最新的文章,这样就可以同步最新的内容进行修改发布了。

我遇到的另外一个问题,就是pelican-theme上面大多都是国外的主题,有的主题中的jquery.js是用的google的cdn。在国内访问的时候会造成找不到jquery.js对体验和响应时间造成很大的影响。所以,部署完站点后,最好打开浏览器的开发者模式,查看一下各个文件的请求耗时。如果有我上述情况,那么你可以尝试把那个请求耗时过长的静态文件,下载好,放到该主题目录下<code>static</code>中对应的目录内。

这个其实不是问题,算是一个建议。文章的格式中,加入<code>Slug: test</code>。这个字段的是:用于文章生成url的。不添加这个字段话,默认是拼音的url。但是有时侯拼音是错误的,而且对于搜索引擎很不友好。

lizherui的博客

pelican官方文档

pelican中文文档(不全)

Pelican搭建静态博客

作者:削微寒

本作品采用署名-非商业性使用-禁止演绎 4.0 国际 进行许可。