关于博客那些事
qian'jing'zhai'yao
最近随着gitee图床加了防盗链,我的Github page 上面的博客图片全部失效....
过了好多天的某个下午突然心血来潮想把图片的链接更换一下,满心热血的将每一个图片重新上传到了Github的仓库。
点了好久好久,终于在提交代码的时候,所有的页面全都炸了。与此同时,我加了GitHub Action同步到的Gitee page也炸了...
我尝试了很多方法去挽救,最终无果,最后带着我的page删库跑路了...
然后下面的文章就诞生了~~
博客的选择
我目前使用的 hexo + 服务器 + Github保存代码(服务器到期了还有个Github page兜底)
先来看看一些区别
供应商 | 域名绑定 | 仓库 | 访问速度 |
---|---|---|---|
Gitee page | 不支持(加钱) | 可以私有 | 快 |
GIthub page | 支持 | 只能公开 | 魔法快 |
服务器(阿里、腾讯...) | 支持 | 私有 | 快 |
选择 Github 就是因为他能绑定一个域名....
Hexo搭建博客
这个地方默认你已经拥有了Nodejs环境,安装Git环境 Git (如果国内速度太慢,可以试试这里),已经一个以自己名字命名的 Github仓库
算了这一步省略了,请参考这篇文章教你如何从零开始搭建一个属于自己的网站
服务器博客部署
到目前为止,你应该是有了一个可以访问的GitHub page才对...
并且你的服务器安装了宝塔
在宝塔面板添加自己的站点
添加站点
然后将你的hexo g
生成的静态文件方法文件目录下即可得到一个网站。
同步提交到Github以及服务器
服务器端
在远程服务器上配置好 Git 仓库后,才能将本地的 hexo push 到远端。
-
安装 git (远程服务器上)
yum install git
-
配置 git 用户
adduser git
-
赋予用户权限
chmod 740 /etc/sudoers vi /etc/sudoers
-
输入 i 进入 insert 模式 ,找到 root ALL=(ALL) ALL ,在其下方加入一行 git ALL=(ALL) ALL
root ALL=(ALL) ALL // 在这里加入代码 git ALL=(ALL) ALL
-
按下 ESC ,输入
:wq
,保存 vim 文件。 -
修改 sudoers 文件权限
chmod 400 /etc/sudoers
-
设置 git 用户的密码
sudo passwd git
-
给 git 用户添加 ssh 秘钥 (找到本地的 ssh 公钥,部署 hexo 到 GitHub 时有生成,以 .pub 结尾)
su - git mkdir -p ~/.ssh touch ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorzied_keys chmod 700 ~/.ssh vim ~/.ssh/authorized_keys #将ssh密钥粘贴进去
如果你有多个密钥(也就是你有多台电脑),在编辑上面的文件的时候,多个密钥之间要空一行.
-
在本地打开一个终端,以 ssh 的方式登录云服务器
ssh -v git@你的 ip 地址 // 输入密码 即可成功登录云服务器
-
创建一个 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用户权限
-
在 blog.git/hooks 文件夹下创建一个 post-receive 钩子,把提交到 git 仓库的文件同步到你的服务器放置静态文件的文件夹中
cd blog.git/hooks vim post-receive
-
在 post-receive 文件中输入以下代码
#!/bin/sh git --work-tree=/www/wwwroot/xxxx --git-dir=/home/git/blog.git checkout -f
注意:
--work-tree
是你放博客文件的地方,也就是在服务器部署博客的时候所选的目录。--work-tree
是第十步创建的git目录 -
授予 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图床