今天突然心血来潮搞上了Jekyll,好吧,就是吃饱了撑的,只是花了一个多小时而已……使我异常惊奇的是,我这一搜啊,全都是怎么在GitHub Pages上玩Jekyll的,也没有找到在VPS上玩Jekyll的啊。真是哦!好吧,那咱就参考官方的文档,自己研究嘛!
不过先解释下吧,为啥咱要在VPS上玩Jekyll啊?Pages不也很好吗?
写博客和写代码是两种完全不同的创作,写代码往往需要耗费更多的精力与脑筋,而博客则不会这样…
重中之重是,自定义域名的情况下GitHub Pages不支持HTTPS(感谢评论区horo的指正),Flexible SSL无异于掩耳盗铃。对于我来说,HTTPS是必须要有的,无论机密信息是否存在,我必须要对我的访客负责。而且我家这破网经常给我Reset!擦你丫的GFW啊。??
其实我在《为什么我要写独立域名的博客》中已经解释了大部分原因。这里也不多说啦。
首先咱得先把Nginx啊,vhost啥的啊,都搞好,这个我就不说了,包管理器安装就可以,编译安装也可以,当然,我的小地方是支持HTTPS的,所以还需要配置SSL证书啊什么的。文末我会附上相关博文的。
假定读者已经配置好了Nginx,那咱就开始玩玩《化身博士》吧!以Ubuntu 16.04为例,使用Jekyll 3.X
解决依赖问题
Jekyll需要这些环境:
Ruby(including development headers, Jekyll 2 需要 v1.9.3 及以上版本,Jekyll 3 需要 v2 及以上版本)
RubyGems
Linux, Unix, or Mac OS X
NodeJS, 或其他 JavaScript 运行环境(Jekyll 2 或更早版本需要 CoffeeScript 支持)。
Python 2.7(Jekyll 2 或更早版本)
咱就挨个击破咯!
sudo apt update sudo apt install ruby-full curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash - sudo apt install nodejs gem install jekyll bundle
好吧,这么简单的几步,Jekyll就好了。
创建Jekyll博客
之后咱们需要创建一个目录,用来存放Jekyll博客的目录,之后我们会让Jekyll build静态文件到webroot
简单起见,我们假设Jekyll博客存放在/root/myblog
,webroot在/home/wwwroot/example.com
cd /root jekyll new myblog
这样jekyll就会为你创建一个名为myblog的目录,这个目录里就有那些常规该有的_site
啊,_posts
啊等目录和文件了。怎么修改配置、增加插件、更换主题不在本文的讨论范围之内。
当然啦,咱也可以到GitHub上搜索一个用Pages的倒霉家伙,直接clone过来。
创建成功了之后,我们先build下试试,build是让jekyll根据设置生成静态的html等文件。
build到webroot
cd myblog jekyll build
通常来说这一步会顺利通过的,假如出现了报错,八成是少了这那的依赖,gem install
吧。
但是咱得把_site
中的内容弄到webroot啊。来个cp或者mv?不是不行,就是太low
jekyll build --source /root/myblog --destination /home/wwwroot/example.com --incremental
参数incremental
表示增量生成,这样万一哪一天有了百八篇,incremental会很省时间的。
然后大家就把写好的文章上传到_posts,来这么一句就行。
但是有没有一种感觉,还是太繁琐啊?不如试试下面这一句吧!
jekyll build --source /root/myblog --destination /home/wwwroot/example.com --incremental --watch&
这样就把Jekyll丢后台并监视_posts的变化了,如果_posts
中的内容改变,Jekyll就会自动build啦。甚至可以把这行加到rc.local
中,这样重启也不怕了。
还等什么,按照
年-月-日-标题.MARKUP
比如说,
2011-02-01-new-years-eve-is-awesome.md
的形式上传文章到_posts
里即可。
当然,Jekyll也有很多自动化部署方式,除了上传文件这种,还有Git post-update
钩子,rsync
啥的,这里就不说了。
当然啦,假如你要是想把某人的Pages克隆下来搞个马甲站(这样是非常不地道的行为,有节操的话还请把robots.txt设置成disallow: /
),咱可以写个极其简单的脚本这么玩
再当然了,你能相信GitHub的服务吗?当然不能,万一哪天运维喝多了删库了遇上GitLab那样的事,波及到自己,就悲剧啦。备份不做,十恶不赦!
#!/bin/bash GIT_DIR=/root/myblog/.git git pull origin master jekyll build --source /root/myblog --destination /home/wwwroot/example.com --incremental
然后加入crontab即可。
附:《Let's Encrypt + Nginx/Apache 配置指南》
--本评论由Telegram Bot回复~❤️