centos7安装jekyll

rvm安装jekyll安装

githubpages 运行的jekyll响应太慢,于是决定放到主机上,并实现提交到github的文件,主机自动拉取,jekyll自动渲染。

利用 docker-compose 快速安装 nginx,提供https支持,申请证书可以参考这篇,免费证书,自动续签。

流程图

<img src="https://raw.githubusercontent.com/jw-star/myFigurebed/master/img/20200319184023.svg?sanitize=true" width="400px">

jekyll

ruby环境

gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
 curl -sSL https://get.rvm.io | bash -s stable
source /etc/profile.d/rvm.sh

安装 ruby 2.4.2

rvm install 2.4.2

jekyll环境

yum install ruby-full build-essential zlib1g-dev

以下命令会将环境变量添加到〜/ .bashrc文件中,以配置gem安装路径

echo '# Install Ruby Gems to ~/gems' >> ~/.bashrc
echo 'export GEM_HOME="$HOME/gems"' >> ~/.bashrc
echo 'export PATH="$HOME/gems/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

jekyll安装

gem install jekyll bundler

可能遇到 RubyGems 版本太低,按提示升级,重新安装 jekyll
漫长等待。。。jekyll安装好了就


在这里插入图片描述

也可能提示 rubygem版本低,升级就可以了

gem install rubygems-update
update_rubygems
gem update --system


自动拉取相关

原理就是 push 到 github 仓库后,github回调一个地址,本地用node.js接收回调,执行脚本,拉取仓库并让jekyll重新渲染,也可以设置增量渲染

centos7.7安装node

rpm -ivh https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm
yum install -y nodejs

安装 github-webhook-handler ,主要靠它webhook

npm install -g github-webhook-handler     #安装 github-webhook-handler

进入目录,脚本再这里,可以直接引入到js文件中,

cd  /usr/lib/node_modules/github-webhook-handler

js文件,需要修改的文件已经注释
参考图片设置 webhook


webhook 设置
var http = require('http')
var createHandler = require('github-webhook-handler')
var handler = createHandler({ path: '/deploy', secret: 'password' }) //监听请求路径,和Github 配置的密码
 
function run_cmd(cmd, args, callback) {
  var spawn = require('child_process').spawn;
  var child = spawn(cmd, args);
  var resp = "";
 
  child.stdout.on('data', function(buffer) { resp += buffer.toString(); });
  child.stdout.on('end', function() { callback (resp) });
}
 
http.createServer(function (req, res) {
  handler(req, res, function (err) {
    res.statusCode = 404
    res.end('no such location')
  })
}).listen(3006)//监听的端口
 
handler.on('error', function (err) {
  console.error('Error:', err.message)
})
 
handler.on('push', function (event) {
  console.log('Received a push event for %s to %s',
    event.payload.repository.name,
    event.payload.ref);
  run_cmd('sh', ['/usr/local/depoly.sh'], function(text){ console.log(text) });//成功后,执行的脚本。
})

shell脚本 deploy.sh

#!/bin/bash
gitname=jw-star #修改为你的仓库
cd /blog/${gitname}.github.io
echo start pull from github 
git pull http://github.com/${gitname}/${gitname}.github.io.git
echo start build..
jekyll build --destination=/blog/site #设置渲染到哪个目录

为了让 deploy.js 持续运行 ,安装 forever 守护进程,

npm install forever -g   #安装

常见参数
-a, –append: 合并日志
-l LOGFILE: 输出日志到LOGFILE
forever list : 查看日志位置,可以根据日志判断脚本执行情况

启动脚本

forever start -a -l  forever.log   deploy.js

成功的话在 site 目录下会有渲染好的文件

Nginx相关

docker 安装参考 这篇
docker-compose 参考 https://docs.docker.com/compose/install/
先贴一下整体目录结构

tree -L 2 /blog/          #- L 2子目录显示到两层
image

docker-compose.yml

version: '3'
services:
    nginx:
      container_name: nginx
# build:
#   context: .
#   dockerfile:  ./nginx/Dockerfile
      image: "nginx:latest"
      restart: always #出现错误自动重启
      volumes:
        - ./site:/usr/share/nginx/html #站点目录映射到容器的目录
        - ./nginx/conf.d/:/etc/nginx/conf.d #映射配置文件到容器目录
      ports:
        - 443:443

default.conf

server {
    listen 443 ssl;
    server_name  localhost;
    ssl on; #强制https,这是趋势

    ssl_certificate /etc/nginx/conf.d/fullchain.cer;
    ssl_certificate_key /etc/nginx/conf.d/gojw.xyz.key;

    ssl_session_cache    shared:SSL:1m;
    ssl_session_timeout  5m;

     # 指定密码为openssl支持的格式
     ssl_protocols  SSLv2 SSLv3 TLSv1.2;

     ssl_ciphers  HIGH:!aNULL:!MD5;  # 密码加密方式
     ssl_prefer_server_ciphers  on;   # 依赖SSLv3和TLSv1协议的服务器密码将优先于客户端密码
     location / {
        root  /usr/share/nginx/html;
        index  index.html index.htm;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

}

启动服务

docker-compose up -d         #-d 后台启动
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,470评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,393评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,577评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,176评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,189评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,155评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,041评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,903评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,319评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,539评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,703评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,417评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,013评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,664评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,818评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,711评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,601评论 2 353

推荐阅读更多精彩内容