前言

搭建自己的个人博客网站,这是多少程序员儿时的梦想。(此处的儿时指的是刚开始接触编程的时候)

为此,折腾了不少。尝遍各种第三方博客网站(博客园、CSDN、掘金、知乎),还是决定使用 Jekyll + Github 搭建自己的独立博客网站。

Github 可以帮助我们构建 Jekyll 博客,只需要新建一个仓库就可以。优点是免费,缺点是百度检索困难。不过这一点影响也不大,可以另外使用 Gitee(国内版的 Github)。

我个人是使用独立的服务器自行搭建的 Jekyll 环境,趁着服务器还有不少时间,摆着不用也是浪费~(哪怕后续服务器没了,照样可以用Github)

文章使用的 Github 进行管理,因为用 Github 写文章太爽了,跟写代码似的,也不易丢失。

技术方案就是服务器启动 Jekyll Server,另加 crontab 定时任务,拉取最新的 Github 上的文章。实现自动化更新博客网站,这种方式用着挺省心的!

话不多说,下面分享我的教程。

进入正文

1、首先购买一台Centos系统的服务器

推荐使用腾讯云,网速快,性能稳定,客服处理问题及时,现在点这条链接就可以享受2折优惠:https://curl.qcloud.com/zjig4QkV

2、安装Git

对 Git 的版本没啥要求,能 pull 就行。

yum -y install git

3、必须保证Ruby2.7版本以上,笔者安装的低版本遭了不少麻烦

两个方法安装高版本Ruby:

(1)升级yum

# 升级yum:
Centos 5.X:
    rpm -Uvh http://mirror.webtatic.com/yum/el5/latest.rpm
CentOs 6.x:
    rpm -Uvh http://mirror.webtatic.com/yum/el6/latest.rpm
CentOs 7.X:
    rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm
    rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
    
    
# 安装Ruby
yum -y install ruby

(2)手动下载ruby最新版,本地安装

# 下载编译
./configure
make
sudo make install

安装完之后修改gem的源为国内,不然很慢

gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/

4、安装Jekyll

顺带指定下版本。

gem install jekyll -v 4.1.1

5、新建博客

jekyll new myblog
cd myblog

6、启动博客

jekyll server

7、克隆已有博客

如果不想自己再搭建一套博客,推荐克隆别人做好的博客,修改使用。

比如我比较喜欢的简洁风

git clone https://github.com/yous/whiteglass.git

8、安装依赖

clone 到本地后需要安装gem依赖,进入Gemfile文件所在目录,Gemfile文件列好了所需要的gem依赖,你需要的就是执行它。但是有些Gemfile内规定了Jekyll的版本号,如果你本地安装了其它版本的Jekyll,可能会产生冲突。解决方法一是卸载Jekyll,二是注释掉Gemfile文件内安装Jekyll的那一行代码。

# 运行Gemfile
bundle install

# Gemfile文件一般包含如下依赖
gem install jekyll-paginate -v 1.1
gem install jekyll-sitemap -v 1.0
gem install jekyll-archives -v 2.1
grm install jekyll-feed -v 0.12

9、服务器后台启动

本地启动不需要这么多参数

# 本地启动
jekyll server

# 服务器后台运行
jekyll server --host 0.0.0.0  --port 80 --detach

10、crontab定时任务

分享下我的Linux定时任务咋写的:

# 十分钟拉取一次
*/10 * * * * ~/blog/flush.sh  >> ~/blog/temp.log

flush.sh 更新脚本:

#!/bin/bash
cd ~/blog
echo "===GIT==="
git pull 
echo "===JEKYLL==="
/usr/local/bin/jekyll build
echo "===TIME==="
time=$(date "+%Y-%m-%d %H:%M:%S")
echo "${time} ok"
echo " "

FAQ

如果你克隆的项目下有 Gemfile.lock 文件记得删除,这个文件类似于版本号。