乐趣区

关于jekyll:第一篇文章jekyll的配置


layout: post
title: “ 第一篇文章 -jekyll 的配置 ”
date: 2021-04-04 20:47:14 +0800
categories: envs

tags: [jekyll, envs, ruby, web, blog]

记录心得:

第一次应用 jekyll 搭建博客,记录下之间的过程。

  1. 为什么应用 jekyll
  2. 怎么的搭建过程
  3. 怎么保护和更新
  4. 遇到的问题

1. 为什么应用 jekyll

之前应用过hexo,具体的地址是在实验室的主页上:xialab

长处是:

  • 容易更改主题
  • 中文反对
  • 应用 nodejs,容易部署。

毛病是:

  • 须要本人生成页面,只能把动态页面推送到 github 仓库,而 src 源码文件须要额定备份

因为这个毛病,我抉择了 jekyll

然而 jekyll 毛病也很显著,就是 ruby 这个环境真的很麻烦,目前也没怎么用过,冀望只是初期配置麻烦一点吧。

2. 搭建过程

我在云服务器和本地 PC 设立了两个仓库

  • 云服务器在腾讯云,CentOS
  • 本地 PC 是 Windows,基于 WSL 搭建环境

2.1 CentOS 搭建

通过 yum 装置 ruby (此条不行),因为版本比拟老,是 2.0 版本,jekyll 须要 2.4

sudo yum install ruby

遂通过源码装置

wget https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.1.tar.gz
tar -zxvf ruby-2.7.1.tar.gz
cd ruby-2.7.1
mkdir -p /usr/local/ruby
./configure --prefix=/usr/local/ruby
make && make install

批改 profile,增加到全局变量

nano /etc/profile

将如下内容增加到开端

export PATH="/usr/local/ruby/bin:$PATH"

而后按 Ctrl+X 保留,而后激活

source /etc/profile

2.1.1 装置及配置 jekyll

应用 gem 间接装置即可

gem install jekyll

而后查看一下版本,这里我是 3.7

jekyll -v

生成页面文件(如果是新建博客站点的话)

jekyll new myblog

2.1.2 批改_config.yml

目前我的配置文件如下,当前还须要批改

# 站点文件门路
#source: .
#destination: ./_site
encoding: utf-8

# 指标网站门路设置
permalink: :year/:month/:title.html
markdown: Kramdown

# 时区
timezone: Asia/Shanghai

# 设置导航目录
nav:
- name: Home
  link: /
- name: About
  link: /about.html

2.1.3 批改 Gemfile

这个文件,次要是管着 jekyll 的构建环境

我参照谷歌来的教程,间接应用了如下内容

source 'https://mirrors.cloud.tencent.com/rubygems/'
require 'json'
require 'open-uri'
versions = JSON.parse(open('https://pages.github.com/versions.json').read)
gem 'github-pages', versions['github-pages'] 

这里的 source 应用的是腾讯云的源,因为官网源太慢了。此外,还有一个淘宝源,不过如同曾经死了,连不上。

应用 bundle 能够间接装置 Gemfile 要求的环境

bundle install

这样,就和 github 的构建环境统一了。

2.1.4 运行

间接通过 bundle 运行

bundle exec jekyll serve

默认是 http://127.0.0.1:4000

2.2 Windows 搭建

不要应用 windows 下的 exe 文件来装置,比方rubyinstall,总是因为msys2,呈现一堆问题,我放弃了,而后间接应用的 WSL 下的 Ubuntu 18 搭建实现。

首先更新一下 apt

sudo apt update

而后装置ruby-dev,这个外面就蕴含了gem,我的源外面是 ruby2.5,也够用了。

sudo apt install ruby-dev

而后装置 bundle 和 jekyll

gem install jekyll
gem install bundle

而后通过 bundle 运行即可(为什么要 bundle,当成 python 中的 conda 治理就行了)

bundle exec jekyll serve

3. 怎么保护和更新

我这里采纳的是 github + webhook 的办法

通过在本地批改,而后上传到 github,而后 github 触发 webhook,主动同步到腾讯云的主机上。

3.1 构建 webhook

webhook 是什么,能够自行谷歌。

因为云主机是应用的宝塔面板,所以比拟不便,在面板软件核心装置 webhook 管理器即可

参考的是宝塔论坛

在运行脚本内增加如下内容:

#!/bin/bash
echo ""
#输入以后工夫
date --date='0 days ago' "+%Y-%m-%d %H:%M:%S"
echo "Start"
#判断宝塔 WebHook 参数是否存在
if [! -n "$1"];
then 
    echo "param 参数谬误"
    echo "End"
    exit
fi

#git 我的项目门路
gitPath="/www/wwwroot/$1"
#git 网址
gitHttp="git@github:com/$1.git"

echo "Web 站点门路:$gitPath"

#判断我的项目门路是否存在
if [-d "$gitPath"]; then
    echo "目录存在"
    cd $gitPath
    #判断是否存在 git 目录
    if [! -d ".git"]; then
        echo "在该目录下克隆 git"
        git clone $gitHttp gittemp
        mv gittemp/.git .
        rm -rf gittemp
    fi
        #拉取最新的我的项目文件
    git reset --hard origin/main
    git pull
    #设置目录权限
    chown -R www:www $gitPath
    source /etc/profile
    bundle exec jekyll build
    echo "End"
    exit
else
    echo "该我的项目门路不存在"
    echo "End"
    exit
fi

须要留神的坑:肯定要留神缩进,shell 语言对缩进比拟严,而后就是判断语句中的 [] 这个括号,其中的内容和括号之间要有空格,不然不会进行判断。

而后会生成如下的 url:

http://[ipaddress]:[port]/hook?access_key=DzsH8SQdasdQTBOllSy3477asdasQwJN8XP9VWIt2kajsdkj&param=xxx.github.io
  • ipaddress: ip 地址
  • port:端口
  • access_key:生成的接入码
  • param:设定的参数,倡议间接设置为你的 github page 的网址

而后来到 Github 的我的项目页面,顺次 ’Setting‘>’Webhooks‘>’Add webhook
将 url 填入,而后在选项“Which events would you like to trigger this webhook?”中抉择“Just the push event.
那么当前当 push 到 github 时,就能主动在本人的服务器刷新网站内容了。

4. 遇到的问题

  • 图片还不晓得怎么治理比拟好
  • 文章的分类

暂且先上线,后续再管

退出移动版