基于ruby的jekyll博客搭建踩坑记录

一件事,只要是有价值的,花再长的时间去做也是值得的。

遇到问题

使用某些地区的网络就能访问,有些地区就不能。
挂梯子也访问不了了。(不知道是被墙了还是什么原因)

本地测试

1
2
3
4
5
6
7
8
ruby -v
sqlite3 --version
gem install rails
gem install jekyll

确保ruby环境已安装,数据库已安装。
bundle install
开始安装


好像不能用root权限执行,新建一个普通用户

1
2
3
4
useradd whale
passwd whale
visudo
添加whale到sudoer用户组

再次运行就没问题了。
bundle install
等待许久,安装依赖。

安装环境

1
2
3
4
先测试内网ip
bundle exec jekyll serve

bundle

没问题了,再运行在外网ip上。

在vps上运行

1
2
git clone https://github.com/Whale3070/Whale3070.github.io
bundle exec jekyll serve --host=外网ip

解决问题

  1. 更新

1.1 ruby更新
升级到ruby 2.6
在ruby 2.5.1运行会出现问题。jekyll不支持

解决办法:卸载老版本的ruby,然后重装新版本的。

1.2 gem更新
gem -v
3.0.3
gem update –system

1.3 bundler更新
bundle update –bundler

  1. bundle install报错

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
apt-get install ruby-dev
执行成功
gem install commonmarker -v '0.17.13' --source 'https://rubygems.org/'
执行失败
gem install commonmarker
执行失败,报错
ruby -v
执行成功
rvm
执行失败
curl -sSL https://rvm.io/mpapis.asc | sudo gpg --import -
curl -sSL https://rvm.io/pkuczynski.asc | sudo gpg --import -
curl -L https://get.rvm.io | bash -s stable
执行成功
rvm list
执行失败
cd /usr/local/rvm/bin;./rvm list known

1
./rvm install 2.7.0

1
2
3
4
5
6
7
8
9
./rvm list
./rvm 2.7.0 --default

gem install rails
rails --version
bundle install
bundle exec jekyll serve
执行成功
访问http://127.0.0.1:4000,没问题以后,再架设到外部ip

端口转发

ifconfig,发现vps只有两个内网ip,并且无法绑定到弹性ip上。

1
2
ps -ef | grep jekyll
bundle exec jekyll serve --host=172.31.10.237

图片挂了

发现raw.githubusercontent.com被墙了。
写一个脚本,将下列字符串做一个替换

1
2
3
4
5
6
7
8
raw.githubusercontent.com/Whale3070/Whale3070.github.io/master
替换为
18.166.144.145:4000

sed -i 's/https:\/\/raw.githubusercontent.com\/Whale3070\/Whale3070.github.io\/master/http:\/\/18.166.144.145:4000/g' 2020-05-13*

测试没问题,图片好了以后,进行全局替换
sed -i 's/https:\/\/raw.githubusercontent.com\/Whale3070\/Whale3070.github.io\/master/http:\/\/18.166.144.145:4000/g' _posts/*.md

确认没问题,在加-i参数
sed -i ‘s/raw.githubusercontent.com/Whale3070/Whale3070.github.io/master/18.166.144.145:4000/g’ 2020-05-13*

ruby报错

/usr/lib/ruby/vendor_ruby/rubygems/defaults/operating_system.rb:10: warning: constant Gem::ConfigMap is deprecated
https://github.com/rubygems/rubygems/issues/3068

参考资料

https://ruby-china.github.io/rails-guides/getting_started.html

https://www.jekyll.com.cn/docs/