GitBook搭建踩坑记录
周末啥都不想干,于是小心翼翼地做了下计划。很无奈的是似乎博客的性质不是笔记,要是用来记录一些很琐碎的东西感觉水文章的嫌疑比较重,出于这个想法我决定整个Gitbook类的文档,作为笔记和踩坑记录。
在这之前我看别人有用Hexo或者VuePress这种静态页的发布方式,他们的用户不用GitBook的原因大都是什么多文件build缓慢(最大诟病),且Gitbook团队是往商用发展,其核心组件Cli很久已经没有维护过了。但是其实很多人都没搞明白,我觉得要是写博客或者技术文档,博客最好的就是Wordpress,文档最好的就是Wiki和Gitbook。当然这么说的意思是作为文本加图片的输出方式我觉得最核心的是写作而非工具,对于工具而言最好的就是最简单最无脑的。而往往博客玩的厉害的人大都是前端出身,他们在乎响应速度,在乎页面交互。但是对于后端程序员的博客和文档页面来看,大都很邋遢,但是并不影响内容的稳定输出
不废话了,按照我的思路来吧。
安装GitBook
一开始我注册了Gitbook绑定了Github,但是郁闷的是Gitbook的大部分url是被墙了的,需要科学上网,所以我把思路更换到了部署在我自己的服务器。
于是我参考了一些NodeJs玩家的部署方式和套路。其中有位使用GitLab CI构建工具,于是我想起来2019就推广的功能GitHub Action。确定我自己的想法可行之后我立马开始了安装。
安装NodeJs
由于我自己服务器在华北,不知道抽啥风,Wget和yum的安装下载都很缓慢,所以去官网下载NodeJs最新版本之后再上传到服务器..
tar -xf node
./configure
make
make install
解压安装。不过一开始我安错了版本,所以又不得不安装了nvm npm的版本控制换了个版本....
安装Git/Gitbook
Git也是通过官网下载,上传服务器的套路...
Gitbook使用npm的安装方式
npm install -g gitbook-cli
安装完成之后在本地大概试下了,还ok,当然Gitbook有一些版本不兼容的问题,所以安装的时候得稍微注意下。
创建仓库/设置Action
然后我在Github创建了Gitbook的md源版本,并且添加了自动化部署yaml
name: CI
on:
push:
branches:
- master
jobs:
build:
name: Build
runs-on: ubuntu-latest
steps:
- name: executing remote ssh commands using password
uses: appleboy/ssh-action@master
with:
host: 47.95.116.109
username: root
key: ${{ secrets.ACCESS_TOKEN }}
port: 22
script_stop: true
script: ./push.sh
这里的语法可以去看官方文档,说的很清楚,而这个ssh的自动化插件是我从Market搜的,star最多那个...然后按照插件的配置文档填了下配置..
服务器添加发布脚本
因为Gitbook可用gitbook serve启动一个服务器,但是没有集成重启命令,所以写个更新发布脚本:
cd /***/book-res/
git pull
ps -ef | grep gitbook | awk '{print $2}' | xargs kill -9
nohup gitbook serve >/dev/null 2>&1 &
starttime=$(date +%Y-%m-%d\ %H:%M:%S)
echo $starttime
exit
这里即切换到工作目录,然后拉取最新代码,再将之前有关gitbook的进程杀死,然后在后台执行启动命令。打印发布时间
这样只要push代码到master就会触发自动构建任务:
Set up job2s
Build appleboy/ssh-action@master5s
executing remote ssh commands using password9s
==============================================
Run appleboy/ssh-action@master
======CMD======
./push.sh
======END======
err: From github.com:KelovpString/book-res
err: 6546173..e343f28 master -> origin/master
out: Updating 6546173..e343f28
out: Fast-forward
out: book.json | 6 ------
out: 1 file changed, 6 deletions(-)
err: kill: sending signal to 8518 failed: No such process
out: 2020-03-15 16:33:36
==============================================
✅ Successfully executed commands to all host.
==============================================
Complete job
可以在GitHub仓库看到发布的过程和日志,失败默认会有邮件提示。
分配域名,Https配置
去阿里云解析了个域名:book.kelovp.com
然后申请了个免费证书,配置:
server {
listen 443 ssl;
server_name book.kelovp.com;
ssl_certificate cert/3602258_book.kelovp.com.pem;
ssl_certificate_key cert/3602258_book.kelovp.com.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://127.0.0.1:4000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server {
listen 80;
server_name book.kelovp.com;
rewrite ^(.*)$ https://$host$1 permanent;
location / {
index index.html index.htm;
}
}
然后随便写了点....
周末好像就这么过去了...
有一说一Github Action 还是猛的www
可以访问试下 (https://book.kelovp.com)