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.gztar -zxvf ruby-2.7.1.tar.gzcd ruby-2.7.1mkdir -p /usr/local/ruby./configure --prefix=/usr/local/rubymake && 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: ./_siteencoding: utf-8# 指标网站门路设置permalink: :year/:month/:title.htmlmarkdown: 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 jekyllgem install bundle

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

bundle exec jekyll serve

3. 怎么保护和更新

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

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

3.1 构建webhook

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

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

参考的是宝塔论坛

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

#!/bin/bashecho ""#输入以后工夫date --date='0 days ago' "+%Y-%m-%d %H:%M:%S"echo "Start"#判断宝塔WebHook参数是否存在if [ ! -n "$1" ];then     echo "param参数谬误"    echo "End"    exitfi#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"    exitelse    echo "该我的项目门路不存在"    echo "End"    exitfi

须要留神的坑: 肯定要留神缩进,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. 遇到的问题

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

暂且先上线,后续再管