Posted on 周二 17 八月 2021

人生苦短,用Python搭建专注于内容的静态博客


前言

安装与快速配置

创建项目添加内容

生成静态文件与启动服务


前言

开始有写博客的想法时,就在想要搭一个完全属于自己的博客。需求很简单,博客专注于内容,基本是图片和文字,量也不大,不需要后端数据库,纯静态网页就好。于是就想到用AWS的S3静态网页托管(主要是方便+省钱)。

前端的话没有经验,从零开始,了解到markdown语言很容易上手,半小时学会,不用写html这么麻烦。博客搭建工具的话一开始想到非常流行的WordPress,但还是希望用我喜欢的Python来构建,于是找到Pelican,一个静态网页生成器。OK,就它了!

安装与快速配置

详细的请研究Pelican官方文档: https://docs.getpelican.com/en/latest/index.html

安装pelican与markdown

python
python -m pip install "pelican[markdown]"


安装好后,新建项目文件夹,cd到文件夹内执行

python
pelican-quickstart


回答几个问题,一个网站就生成了;

这些问题就是一些配置项,可以直接忽略或者填n,后期可以改配置文件或者手动添加的;

快速配置

创建好后的目录结构(根据所选配置生成,不一定全有):

yourproject/
├── content
│   └── (pages)
├── output
├── tasks.py
├── Makefile
├── pelicanconf.py       # Main settings file
└── publishconf.py       # Settings to use when ready to publish


我的目录结构:

目录结构

创建项目添加内容

在content文件夹内添加网页内容。我新建hello_world.md文件,插入以下内容:

Title: Henry Yang的第一篇博客
Date: 2021-08-17 16:17:00
Category: 技术
Tags: Python
Slug: hello-world
Summary: Welcome to my blog, or maybe diary

这是我的第一篇博客


补充:要插入图片的话,我选择在content文件夹内新建"images"文件夹,在这个路径下放图片或者再新建文件夹放图片,content里的文件里用markdown语言写明图片路径就好,经过琢磨windows系统的话路径可以这么写(我的编辑器是VS Code):

![图片alt](/images/your_folder_if_exists/picture.jpg "图片title")


在配置文件pelicanconf.py中添加

STATIC_PATHS = ['images']


后来发现生成的网页打开后,图片显示不全,大点的图片右边都被砍掉了,应该是原图大小超出了页面大小,下载下来是正常的,经过搜索摸索出了解决方法,直接在url后面加上CSS样式,例如:

{:height="100%" width="100%"} 或 {:width="100%"}

结合起来就是:

![图片alt](/images/your_folder_if_exists/picture.jpg "图片title"){:height="100%" width="100%"}



生成静态文件与启动服务

把写的内容用Pelican处理生成html格式的文件

pelican content


执行完成后,output 目录下会多出一些文件,markdown文件最终也会转换成html文件放到该目录下,当然content下的原始文件依然存在。

启动服务: Pelican 内置了一个HTTP Server, 所以不需要Appache / Nginx / IIS 也可以将程序运行起来。

pelican --listen

默认端口是8000,本地访问:

http://127.0.0.1:8000/

http://localhost:8000/

效果:

效果