最近随着gitee图床加了防盗链,我的Github page 上面的博客图片全部失效….

过了好多天的某个下午突然心血来潮想把图片的链接更换一下,满心热血的将每一个图片重新上传到了Github的仓库。

2SSANR0JLMVTYF13F27CDA

点了好久好久,终于在提交代码的时候,所有的页面全都炸了。与此同时,我加了GitHub Action同步到的Gitee page也炸了…

1

我尝试了很多方法去挽救,最终无果,最后带着我的page删库跑路了…

kasdfl

然后下面的文章就诞生了~~

博客的选择

我目前使用的 hexo + 服务器 + Github保存代码(服务器到期了还有个Github page兜底)

先来看看一些区别

供应商 域名绑定 仓库 访问速度
Gitee page 不支持(加钱) 可以私有
GIthub page 支持 只能公开 魔法快
服务器(阿里、腾讯…) 支持 私有

选择 Github 就是因为他能绑定一个域名….

Hexo搭建博客

这个地方默认你已经拥有了Nodejs环境,安装Git环境 Git (如果国内速度太慢,可以试试这里),已经一个以自己名字命名的 Github仓库

算了这一步省略了,请参考这篇文章教你如何从零开始搭建一个属于自己的网站

服务器博客部署

到目前为止,你应该是有了一个可以访问的GitHub page才对…

并且你的服务器安装了宝塔

在宝塔面板添加自己的站点

image-20220426143759402

添加站点

image-20220426143931208

然后将你的hexo g 生成的静态文件方法文件目录下即可得到一个网站。

同步提交到Github以及服务器

服务器端

在远程服务器上配置好 Git 仓库后,才能将本地的 hexo push 到远端。

  1. 安装 git (远程服务器上)

    yum install git
  2. 配置 git 用户

    adduser git
  3. 赋予用户权限

    chmod 740 /etc/sudoers
    vi /etc/sudoers
  4. 输入 i 进入 insert 模式 ,找到 root ALL=(ALL) ALL ,在其下方加入一行 git ALL=(ALL) ALL

    root    ALL=(ALL)       ALL
    // 在这里加入代码
    git     ALL=(ALL)       ALL
  5. 按下 ESC ,输入 :wq ,保存 vim 文件。

  6. 修改 sudoers 文件权限

    chmod 400 /etc/sudoers 
  7. 设置 git 用户的密码

    sudo passwd git
  8. 给 git 用户添加 ssh 秘钥 (找到本地的 ssh 公钥,部署 hexo 到 GitHub 时有生成,以 .pub 结尾)

    image-20220426144517908

    su - git
    mkdir -p ~/.ssh
    touch ~/.ssh/authorized_keys
    chmod 600 ~/.ssh/authorzied_keys
    chmod 700 ~/.ssh
    vim ~/.ssh/authorized_keys    #将ssh密钥粘贴进去

    如果你有多个密钥(也就是你有多台电脑),在编辑上面的文件的时候,多个密钥之间要空一行.

  9. 在本地打开一个终端,以 ssh 的方式登录云服务器

    ssh -v git@你的 ip 地址
    // 输入密码 即可成功登录云服务器
  10. 创建一个 git 仓库,新建一个 post-receive 文件,用来存储本地的提交。

    su root
    cd /home/git  # 远程仓库作为git的目录,可以更改
    git init --bare blog.git  #在/home/git下创建新仓库blog.git
    chown git:git -R blog.git #给予git用户权限
  11. 在 blog.git/hooks 文件夹下创建一个 post-receive 钩子,把提交到 git 仓库的文件同步到你的服务器放置静态文件的文件夹中

    cd blog.git/hooks
    vim post-receive
  12. 在 post-receive 文件中输入以下代码

    #!/bin/sh
    	git --work-tree=/www/wwwroot/xxxx --git-dir=/home/git/blog.git checkout -f

    注意:--work-tree 是你放博客文件的地方,也就是在服务器部署博客的时候所选的目录

    --work-tree是第十步创建的git目录

  13. 授予 post-receive 文件可执行权限

    chmod +x /home/git/blog.git/hooks/post-receive

服务器端完成🙌🙌

本地

打开 hexo 的配置文件 _config.yml 修改 Deployment 位置的配置

deploy:
  type: git
  repo:
        # 提交到GitHub
        github: github仓库地址,master
        # 提交到服务器
        hexo: root@你的ip地址:/home/git/blog.git,master
  # branch: master # 默认使用 master 分支
  message: Update Hexo Static Content # 你可以自定义此次部署更新的说明

配置完成之后,再通过hexo进行提交的时候你就会在GitHub以及你的服务器都收到代码的更新

至此客户端完成💖💖

附送一个sh提交命令

hexo clean
hexo g
hexo d

sleep 1.5

info=$1
if ["$info" = ""];
then info=":pencil: update content"
fi
git pull
git add -A
git commit -m "$info"
git push

在博客的根目录创建hexo.sh,将上述代码粘进去,输入sh hexo.sh执行提交命令.

Github图床

不写了,看这个 Typora+PicGo设置GitHub图床