登录
  • 人们都希望被别人需要 却往往事与愿违
  • Nothing will ever compare. ❤Benny

Jekyll + Nginx 配置指南

不知所云 Benny小土豆 3818次浏览 2273字 4个评论
文章目录[显示]
这篇文章在 2017年07月11日16:49:39 更新了哦~

今天突然心血来潮搞上了Jekyll,好吧,就是吃饱了撑的,只是花了一个多小时而已……使我异常惊奇的是,我这一搜啊,全都是怎么在GitHub Pages上玩Jekyll的,也没有找到在VPS上玩Jekyll的啊。真是哦!好吧,那咱就参考官方的文档,自己研究嘛!

不过先解释下吧,为啥咱要在VPS上玩Jekyll啊?Pages不也很好吗?
写博客和写代码是两种完全不同的创作,写代码往往需要耗费更多的精力与脑筋,而博客则不会这样…
重中之重是,自定义域名的情况下GitHub Pages不支持HTTPS(感谢评论区horo的指正,Flexible SSL无异于掩耳盗铃。对于我来说,HTTPS是必须要有的,无论机密信息是否存在,我必须要对我的访客负责。而且我家这破网经常给我Reset!擦你丫的GFW啊。??
其实我在《为什么我要写独立域名的博客》中已经解释了大部分原因。这里也不多说啦。

关于“全站HTTPS”,我认为这是势在必行的,《为 HTTPS 打一场人民战争》

首先咱得先把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

Jekyll + Nginx 配置指南

通常来说这一步会顺利通过的,假如出现了报错,八成是少了这那的依赖,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 配置指南》


文章版权归原作者所有丨本站默认采用CC-BY-NC-SA 4.0协议进行授权|
转载必须包含本声明,并以超链接形式注明原作者和本文原始地址:
https://www.bennythink.com/jekyll-nginx.html
喜欢 (0)
分享:-)
Benny小土豆
关于作者:
If you have any further questions, feel free to contact me in English or Chinese.
发表我的评论(代码和日志请使用Pastebin或Gist)
取消评论

                     

去你妹的实名制!

  • 昵称 (必填)
  • 邮箱 (必填,不要邮件提醒可以随便写)
  • 网址 (选填)
(4)个小伙伴在吐槽
  1. https://github.com/blog/2186-https-for-github-pages Github:喵喵喵? ?
    ホロ2017-02-21 22:50 回复
    • Benny小土豆
      完了,黑错被打脸了。官博说16年6月起强制启用,这是嘛情况?
      Benny小土豆2017-02-21 22:55 回复
      • 原来一直有只是不支持自定义域名+不强制启用?
        ホロ2017-02-21 22:58 回复
        • Benny小土豆
          我懂了?悲剧的自定义域名
          Benny小土豆2017-02-21 23:00