0%

GITHUB建立BLOG完整记录

GITHUB建立BLOG完整记录

  1. 建立BLOG专属容器
  2. 开机自启docker后 开启或关闭自启容器
  3. 建立Blog

QQ群:397745473

建立BLOG专属容器

建立多个Blog 可以使用docker单独管理.十分方便.

命令如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
curl -sSL https://get.daocloud.io/docker | sh
service docker start
docker pull ubuntu

# 直接 docker 启动 开机启动 *任选一种
docker run -p 8081:80 -p 8022:22 -itd --name vsyourBlog ubuntu /bin/bash
docker update --restart=always vksec


# 使用 docker-compose *任选一种
mkdir -p /root/blog/vksec
cat >docker-compose.yml <<EOG
version: '3.3'
services:
hexo:
#image: superpaintman/hexo
image: spurin/hexo
container_name: vksec
restart: always
ports:
- "8029:80"
- "8030:22"
volumes:
- ./data:/blog
environment:
hexo_SERVER_PORT: 8000 # 缺省的端口号
NODE_ENV: production
EOG

#进入容器 patch
docker exec -it vksec /bin/bash




apt-get -y update && apt-get -y upgrade
apt-get -y install git net-tools openssh-server vim
apt-get install language-pack-zh-hans

提示:
1. Africa 2. America 3. Antarctica 4. Australia 5. Arctic 6. Asia 7. Atlantic 8. Europe 9. Indian 10. Pacific 11. SystemV 12. US 13. Etc
选择: 6
Please select the city or region corresponding to your time zone.
再选: 70 shanghi

更改/etc/ssh/sshd_config 配置
vim /etc/ssh/sshd_config

::去掉以下两项的注释
PermitRootLogin yes
PasswordAuthentication yes

#允许root认证登录
sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/g' /etc/ssh/sshd_config
#允许密码认证
sed -i 's/#PasswordAuthentication yes/PasswordAuthentication yes/g' /etc/ssh/sshd_config

# vim 模式修复
sed -i 's/mouse=a/mouse-=a/g' /usr/share/vim/vim81/defaults.vim

# 重启服务
/etc/init.d/ssh restart
passwd root


cat > ~/startup_run.sh << EOF
#!/bin/bash

LOGTIME=\$(date "+%Y-%m-%d %H:%M:%S")
echo "[$LOGTIME] startup run..." >> ~/startup_run.log
service ssh start >>/root/startup_run.log
EOF
chmod +x ~/startup_run.sh

vim /root/.bashrc 末尾增加如下语句
# startup run
if [ -f /root/startup_run.sh ]; then
. /root/startup_run.sh
fi

现在可以直接使用 Bitvise SSH Client 连接这个docker了


开机自启docker后 开启或关闭自启容器

1
2
3
4
5
6
7
8
9
10
开机自启docker后 开启或关闭自启容器
docker run –restart=always

当然如果你的容器已经启动,可以通过update命令进行修改.
命令如下:
docker update --restart=always <CONTAINER ID>
docker update --restart=always 995f4f428c14

如果你想取消掉 命令如下:
docker update --restart=no <CONTAINER ID>

vercel 配合Docker搭建BLOG记录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 挂代理升级
export ALL_PROXY=socks5://192.168.2.114:7892
nvm install 17.0.0
npm install -g vercel
npm install -g npm@8.13.2



apt -y install nodejs npm sudo
npm install -g hexo-cli

hexo init /blog
主题: https://hexo.io/themes/
插件: https://hexo.io/plugins/

cd /blog
git clone https://github.com/theme-next/hexo-theme-next themes/next

# 预览
cd /blog && hexo server -p 80
http://192.168.2.48:8025/

# 上传生成
cd /blog && hexo cl && hexo g && cd public && vercel --prod --confirm && cd ..

建立Blog

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
建立参考: 
https://zhuanlan.zhihu.com/p/35668237
https://godweiyang.com/2018/04/13/hexo-blog/

apt -y install nodejs npm

# 如果在国内可以先把终端代理一下
# export ALL_PROXY=socks5://192.168.2.11:1080


npm i hexo-cli -g
npm i hexo-deployer-git
npm install hexo-deployer-git --save

mkdir /blog;cd /blog/
输入hexo init初始化文件夹,接着输入npm install安装必备的组件。

git config --global user.name "vsyour"
git config --global user.email "vsyour@qq.com"
git remote set-url blog github.com/vsyour/vsyour.com.git

ssh-keygen -t rsa -C "vsyour@qq.com"
在 Deploy keys 新建一个RSA 把下面的值复制进去
cat ~/.ssh/id_rsa.pub


cd /blog && hexo clean && hexo generate && hexo deploy

加ssl证书

域名A记录解析到:

1
2
3
4
185.199.108.153
185.199.109.153
185.199.110.153
185.199.111.153

ubuntu中文支持,及中文乱码问题

首先,安装中文支持包language-pack-zh-hans:

1
apt-get install language-pack-zh-hans

然后,修改/etc/environment(在文件的末尾追加):

1
2
LANG="zh_CN.UTF-8"
LANGUAGE="zh_CN:zh:en_US:en"

再修改/var/lib/locales/supported.d/local(没有这个文件就新建,同样在末尾追加):

1
2
3
4
en_US.UTF-8 UTF-8
zh_CN.UTF-8 UTF-8
zh_CN.GBK GBK
zh_CN GB2312

最后,执行命令:

1
sudo locale-gen

对于中文乱码是空格的情况,安装中文字体解决。

1
apt-get install fonts-droid-fallback ttf-wqy-zenhei ttf-wqy-microhei fonts-arphic-ukai fonts-arphic-uming

免密部署

1
2
3
4
5
6
7
8
加密钥后使用: ssh -T git@github.com 命令测试.
看到提示:
Hi vsyour/vsyour.com! You've successfully authenticated, but GitHub does not provide shell access.
成功后修改 _config.yml
repo: git@github.com:vsyour/vsyour.com.git
这个地址可以到github页面中查到. (平常git clone 的位置)
code --> clone --> SSH -->直接复制就可以了.

问题解决:

提示信息:

rewrite “2021/05/21/186_badusb\344\275\277\347\224\250\345\277\203\345\276\227/index.html” (62%)
remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.
remote: Please see https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ for more information.
fatal: unable to access ‘https://github.com/vsyour/vksec.github.io/': The requested URL returned error: 403
FATAL Something’s wrong. Maybe you can find the solution here: https://hexo.io/docs/troubleshooting.html
Error: remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.
remote: Please see https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ for more information.
fatal: unable to access ‘https://github.com/vsyour/vksec.github.io/': The requested URL returned error: 403

1
2
3
4
at ChildProcess.<anonymous> (/blog/node_modules/hexo-util/lib/spawn.js:37:17)
at ChildProcess.emit (events.js:209:13)
at maybeClose (internal/child_process.js:1021:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:283:5)

以前记住密码现在不能再用了,需要去github中生成一个key做为密码

生成key的方法参考:

https://docs.github.com/en/github/authenticating-to-github/keeping-your-account-and-data-secure/creating-a-personal-access-token

缓存密码

1
2
3
4
5
6
7
8
9
10
11
12
参考:https://cloud.tencent.com/developer/article/1693938

root@k28ovZ:~# cd ~/
root@k28ovZ:~# vi .git-credentials

添加:
https://用户名:密码@gitee.com
或者 输完密码后直接输入下面命令就可以保存密码到~/.git-credentials文件中了
git config --global credential.helper store



SSH 无法自动启动

发现docker启动的时候ssh不会跟着自动启动

1
2
# 最后参考文档解决了问题
https://www.swack.cn/wiki/001557409799713ca16fa7271334e4cadbf9cc76fd0d933000/0015931471097505edb31370de542088d4520607b6370df000

hexo g时出现错误,具体报错如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
INFO  Validating config
INFO Start processing
FATAL { err:
TypeError: line.matchAll is not a function
at res.value.res.value.split.map.line (/**/hexosite/node_modules/hexo-util/lib/highlight.js:128:26)
at Array.map (<anonymous>)
at closeTags (/**/hexosite/node_modules/hexo-util/lib/highlight.js:126:37)
at highlight (/**/hexosite/node_modules/hexo-util/lib/highlight.js:119:10)
at highlightUtil (/**/hexosite/node_modules/hexo-util/lib/highlight.js:23:16)
at data.content.dataContent.replace (/**/hexosite/node_modules/hexo/lib/plugins/filter/before_post_render/backtick_code_block.js:92:17)
at String.replace (<anonymous>)
at Hexo.backtickCodeBlock (/**/hexosite/node_modules/hexo/lib/plugins/filter/before_post_render/backtick_code_block.js:19:30)
at Hexo.tryCatcher (/**/hexosite/node_modules/bluebird/js/release/util.js:16:23)
at Hexo.<anonymous> (/**/hexosite/node_modules/bluebird/js/release/method.js:15:34)
at Promise.each.filter (/**/hexosite/node_modules/hexo/lib/extend/filter.js:67:52)
at tryCatcher (/**/hexosite/node_modules/bluebird/js/release/util.js:16:23)
at Object.gotValue (/**/hexosite/node_modules/bluebird/js/release/reduce.js:166:18)
at Object.gotAccum (/**/hexosite/node_modules/bluebird/js/release/reduce.js:155:25)
at Object.tryCatcher (/**/hexosite/node_modules/bluebird/js/release/util.js:16:23)
at Promise._settlePromiseFromHandler (/**/hexosite/node_modules/bluebird/js/release/promise.js:547:31)
at Promise._settlePromise (/**/hexosite/node_modules/bluebird/js/release/promise.js:604:18)
at Promise._settlePromiseCtx (/**/hexosite/node_modules/bluebird/js/release/promise.js:641:10)
at _drainQueueStep (/**/hexosite/node_modules/bluebird/js/release/async.js:97:12)
at _drainQueue (/**/hexosite/node_modules/bluebird/js/release/async.js:86:9)
at Async._drainQueues (/**/hexosite/node_modules/bluebird/js/release/async.js:102:5)
at Immediate.Async.drainQueues [as _onImmediate] (/**/hexosite/node_modules/bluebird/js/release/async.js:15:14) }
'Something\'s wrong. Maybe you can find the solution here: %s' '\u001b[4mhttps://hexo.io/docs/troubleshooting.html\u001b[24m'

经排查,发现问题出现在 Node.js的版本上。由于 Node.js 10在2021年8月30日已停止服务,新版本的 Hexo需要 Node.js版本在12.0+。

但ubuntu默认软件源仓库中 Node.js的版本仍为10,故需要额外的步骤来更新:

  1. 首先更新系统以保证不会发生依赖错误:

    1
    2
    sudo apt update
    sudo apt -y upgrade
  2. 添加仓库

    1
    2
    3
    sudo apt update
    sudo apt -y install curl dirmngr apt-transport-https lsb-release ca-certificates
    curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
  3. 更新Node

    1
    sudo apt -y install nodejs

自此,故障得以解决。

将Hexo博客直接部署到Vercel

不经过Github使用 vercel + hexo 搭建博

Vercel 提供了一个云平台,可以优化整个项目开发和部署体验,它有很强大的功能值得去探索,个人使用是免费的,提供了域名访问,使用方便快捷。

1
参考 : https://blog.csdn.net/qq_35977139/article/details/116648090

注册 vercel

1
2
3
4
5
6
7
npm install -g vercel
Hexo自带了一个生成静态站点的功能,我们只需把Hexo博客生成静态站点然后就可以直接部署到Vercel。Vercel是可以自动识别根目录和子目录的index.html文件的
cd到博客的public目录。执行 vercel
第一次会提示你登录。输入你注册Vercel账号的邮箱地址,然后Vercel会给这个邮箱发一封邮件,控制台程序也会等待验证完成,打开这个邮件点击验证(VERIFY)按钮,点击之后就显示验证完成,控制台程序也会提示登录成功。
这时候再执行
vercel --prod
然后出现这些提示,按照提示操作!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

如果需要自动化集成(也就是不用回答下列问题)的话,前面的命令也可以使用vercel --prod --confirm,但是这样的话项目名称会自动使用缺省值,如果需要指定项目名称的话就需要在博客的source目录添加vercel.json文件,配置name属性:{ name": "my-hexo-blog" }

? Set up and deploy “/home/runner/no5972tk/my-hexo-blog”? [Y/n]
# 选择发布到的位置 -> 直接回车
# 默认就是账户名,显示在提示下面
# 可以在官网登录后访问这个地址查看:https://vercel.com/dashboard
Which scope do you want to deploy to?
·[username]
# 是否链接到一个存在的项目 -> n
? Link to existing project? [y/N]
# 为项目命名,这里输入的项目名会反映在域名上
? What’s your project’s name? (my-hexo-blog)
# 选择代码的位置,当前代码位置就是根目录 -> 直接回车
? In which directory is your code located? ./

最后显示

1
2
✅ Production : https://xxxxxx.vercel.app [copied to clipboard] [10s]

的时候就部署到Vercel上了,其中 xxxxxx是项目名称。这个域名就是部署好的域名,从这个网址进去就可以访问博客了。

以后需要更新博客的话执行下列操作:

1
2
hexo cl && hexo g && cd public && vercel --prod --confirm && cd ..

后续还可以从Vercel网页端的Settings里面绑定自己注册的独立域名,然后在自己的域名解析里面设置解析到 76.76.21.21,这样就可以通过独立域名来访问了。

QQ群:397745473

欢迎关注我的其它发布渠道