qian'jing'zhai'yao

最近随着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图床