设为首页 收藏本站
查看: 795|回复: 0

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

[复制链接]

尚未签到

发表于 2018-1-15 14:14:21 | 显示全部楼层 |阅读模式
pelican
  Pelican Static Site Generator, Powered by Python:Pelican是python语言写的静态网站生成器。因为我一直打算用github pages做一个博客,现在已经学会用Hexo在github pages上做博客了。但是我一想:我一个pythoner,干嘛不用python写的静态网站生成器。我想应该是网上教程太少,那我今天就来搞一搞。顺便记录下来,整理出一个教程,希望一切顺利!

  最终效果:blog.xueweihan.com


开始
  1.首先用virtualenv创建一个env
  

mkdir blog  
cd blog
  
virtualenv env
  
source env/bin/activate  #激活环境
  

  2.使用pip安装pelican和markdown
  

pip install pelican  
pip install markdown
  

  3.创建pelican目录结构
  

pelican-quickstart  
# 根据提示进行设置
  

  
> Where do you want to create your new web site? [.]

  
> What will be the>  
> Who will be the author of this web site? xueweihan
  
> What will be the default language of this web site? [en] zh
  
> Do you want to specify a URL prefix? e.g., http://example.com   (Y/n)
  
> What is your URL prefix? (see above example; no trailing slash) blog.xueweihan.com
  
> Do you want to enable article pagination? (Y/n)
  
> How many articles per page do you want? [10]
  
> What is your time zone? [Europe/Paris] Asia/Shanghai
  
> Do you want to generate a Fabfile/Makefile to automate generation and publishing? (Y/n)
  
> Do you want an auto-reload & simpleHTTP script to assist with theme and site development? (Y/n)
  
> Do you want to upload your website using FTP? (y/N) n
  
> Do you want to upload your website using SSH? (y/N) n
  
> Do you want to upload your website using Dropbox? (y/N) n
  
> Do you want to upload your website using S3? (y/N) n
  
> Do you want to upload your website using Rackspace Cloud Files? (y/N) n
  
> Do you want to upload your website using GitHub Pages? (y/N)
  
Done. Your new project is available at /Users/xueweihan/Documents/blog
  

  文件结构如下:
  

blog/  
├── content              # 写的文章放这里
  
├── output               # 生成的输出文件(发布的内容)
  
├── develop_server.sh
  
├── Makefile             # 方便管理博客的Makefile
  
├── pelicanconf.py       # 主配置文件
  
└── publishconf.py
  

  我们下面只用到我解释的这几个目录和文件,大致有个印象即可
  4.编写文章测试下效果
  

Date: 2016-02-28  
Title: 测试
  
Tags: 测试
  
Slug: test
  

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

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

# 在blog目录下执行  
pelican content # 根据content中的内容,生成静态网站到output目下
  

  
# 在output目录下执行
  
python -m pelican.server
  

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

  输入:ctrl + c 停止服务
  5.上传到github pages 现在就差最后一步,上传到github pages上面。 一步步的来:
  首先在github上创建一个项目,Repository name填写:你的github用户名.github.io 如下图:

  然后在output目录依次输入:
  

git init  
git add .
  
git commit -m "pelican static blog test"
  
git remote add origin git@github.com:你的github用户名/你的github用户名.github.io.git
  
# 例如我的就是:git@github.com:521xueweihan/521xueweihan.github.io.git
  
git push -u origin master
  

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

简化发布流程
  还记得Makefile文件吗?我们通过修改这个文件,实现1条指令发布博客到github pages上。
  把blog目录下的Makefile文件中的内容替换成下面的内容(原Makefile文件的内容都不要)
PY?=python  
PELICAN?=pelican
  
PELICANOPTS=
  

  
BASEDIR=$(CURDIR)
  
INPUTDIR=$(BASEDIR)/content
  
OUTPUTDIR=$(BASEDIR)/output
  
CONFFILE=$(BASEDIR)/pelicanconf.py
  
PUBLISHCONF=$(BASEDIR)/publishconf.py
  

  
DEBUG ?= 0
  
ifeq ($(DEBUG), 1)
  PELICANOPTS += -D
  
endif
  

  
RELATIVE ?= 0
  
ifeq ($(RELATIVE), 1)
  PELICANOPTS += --relative-urls
  
endif
  

  
html:
  $(PELICAN) $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)
  

  
clean:
[ ! -d $(OUTPUTDIR) ] || rm -rf $(OUTPUTDIR)

  

  
regenerate:
  $(PELICAN) -r $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)
  

  
serve:
  
ifdef PORT
  cd $(OUTPUTDIR) && $(PY) -m pelican.server $(PORT)
  
else
  cd $(OUTPUTDIR) && $(PY) -m pelican.server
  
endif
  

  
publish:
  $(PELICAN) $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)
  

  
github: publish
  cd $(OUTPUTDIR) ; git add . ;  git commit -m '更新博客' ; git push origin master
  更新博客流程


  • 把写好的markdown格式的文章放到content中,然后在blog目录下
  • 本地查看效果的话:make html 然后make serve 最后访问:127.0.0.1:8000
  • 发布到github:make github 完成
定制属于自己的blog
  下面的内容算是高级篇了,需要把上面的步骤都完成。想要进一步完美自己的博客的小伙伴
  1.独立域名
  
首先要购买域名,我的实在阿里云上买的,买完之后就需要修改你的域名指向:访问blog.xueweihan.com域名,跳转到你的.github.io。根据你购买域名时候的提示,就可以设置完成了。之后在output目录下,创建CNAME文件。内容就是你购买的域名。因为github pages只允许CNAME中的域名映射。
  2.定制样式结构
  
一步步的来,首先要找到你喜欢的主题pelican主题,下载的时候我推荐Download ZIP会快很多。下载好你的主题,我们就需要在blog目录下,找到pelicanconf.py文件,它是在生成静态网站时候的配置文件,定制几乎所有的东西都需要通过这个。增添内容如下:
  

THEME = '你的主题所在目录'  
# 例如:THEME = '/Users/root/Documents/blog/tuxlite_tbs'
  

  

  
GITHUB_URL = 'https://github.com/你的github用户名'
  
# 效果是右上角有个fork me on Github,点击进入你的Github主页
  

  

  
DEFAULT_DATE_FORMAT = '%Y-%m-%d'
  
# 时间格式
  

  

  
SOCIAL = (('github', 'https://github.com/521xueweihan'),
  ('博客园', 'http://www.cnblogs.com/xueweihan/'))
  
# 几乎所有的博客主题都有一个地方展示你的社交账号,这些账号就写在这里,上面是我的
  

  

  
DISQUS_SITENAME = 'shortname'
  
# 评论功能,需要在Disqus上申请一个站点,替换shortname
  

  

  如果有python基础的,可以直接修改主题目录下的template中的模版。已达到你想要的目录结构和内容的呈现。
  3.简单的SEO
  
在output文件中创建rebots.txt,这个文件是一个协议文件,没有不会影响什么。但是有的话,有利于搜索引擎的收录。内容如下,允许所有爬虫,同时不允许爬取theme目录下的内容,和所有的图片。:
  

User-agent: *  
Disallow: /theme/
  
Disallow: /.gif$
  
Disallow: /.png$
  
Disallow: /.jpg$
  

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

GOOGLE_ANALYTICS = '跟踪ID'  

  而百度的分析就需要手动的在主题目录下的template目录下的base.html中增添百度的分析代码。
  4.sitemap是对于爬虫友好的一个文件,它告诉爬虫,网站的更新频率和优先级等。详情
  增添插件:
  

git clone git://github.com/getpelican/pelican-plugins.git  

  修改pelicanconf.py文件:
  

PLUGIN_PATH = u"pelican-plugins"  
PLUGINS = ["sitemap"]
  
SITEMAP = {
  "format": "xml",
  "priorities": {
  "articles": 0.7,
  "indexes": 0.5,
  "pages": 0.3,
  },
  "changefreqs": {
  "articles": "monthly",
  "indexes": "daily",
  "pages": "monthly",
  }
  
}
  

  5.favicon.ico
  
放在output的根目录下。
  6.订阅
  
因为pelican的库包含了feedgenerator。feedgenerator是用来生成Atom feeds(是包含你博客数据的xml的文件)用于订阅。所以你只需要在pelicanconf.py加入:
  

FEED_ALL_RSS =  'feeds/all.rss.xml'  

  博客就会自动生成订阅功能了。
  7.关于我
  
这个就像相当于一个自我介绍的页面,所以就需要在content目录下创建一个pages目录,然后把你要展示的内容放到pages目录下就可以了。

最终效果
  我的博客:blog.xueweihan.com

问题


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

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

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

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

参考


  • lizherui的博客
  • pelican官方文档
  • pelican中文文档(不全)
  • Pelican搭建静态博客

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-435343-1-1.html 上篇帖子: git 使用积累 下篇帖子: git初体验(七)多账户的使用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表