layout: post
title: “ 第一篇文章 -jekyll 的配置 ”
date: 2021-04-04 20:47:14 +0800
categories: envs
tags: [jekyll, envs, ruby, web, blog]
记录心得:
第一次应用 jekyll 搭建博客,记录下之间的过程。
- 为什么应用 jekyll
- 怎么的搭建过程
- 怎么保护和更新
- 遇到的问题
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¶m=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. 遇到的问题
- 图片还不晓得怎么治理比拟好
- 文章的分类
暂且先上线,后续再管