自动部署 hexo 项目至阿里云轻量级服务器
1. 服务器 - 安装 git
服务器需先安装git,如已安装,则跳过。
1 | # 使用root用户或有权限的用户执行命令,安装git |
2. 服务器 - 生成 SSH-Key 密钥
1 | # 检查 root 目录下是否已存在密钥 -la是显示隐藏文件 |
我的 root 目录下还没有密钥,执行下行命令生成 SSH-Key, 记得替换成自己的邮箱。
1 | ssh-keygen -t rsa -C "fooso2021@gamil.com" |
执行该命令后,第一行会提示你 SSH-Key 的保存地址,无需改动就直接回车。
然后他会让你输入二次密码。密码是用来保护你的密钥,可以直接 enter 跳过,否则后边拉取代码时会要求输入密码。
生成完毕后,会在当前文件夹下生成一个 .ssh
的隐藏文件夹,里边有两个文件 id_rsa
(私钥) 和 id_rsa.pub
(公钥)。现在就可以直接复制使用了。
3. github - 配置 SSH-Key
在 个人设置 - SSH and GPG keys 中上传刚才生成的 id_rsa.pub
4. 服务器 - 拉取 hexo 项目代码
我的服务器里,hexo 项目代码放在 /home/git/sofor-v1
文件目录下。
1 | # 移动到home目录下 |
5. 服务器 - npm 全局安装 hexo-cli 并建立 hexo 全局软连接
1 | npm install hexo-cli -g |
6. 服务器 - 创建 git 裸仓库
执行下面代码,创建只有提交记录的空仓库。具体原理移步 git裸仓库实现自动化部署
1 | cd /home/git |
7. 服务器 - git 裸仓库自动构建、部署脚本
本地的deploy命令只是把静态文件提交到git仓库,既然有git hooks,那么我们可以在有文件提交上来时,再将文件拷贝到博客网站目录。 进入到git仓库hooks目录,并创建钩子post-receive
。
1 | cd /home/git/bare.git/hooks |
输入下面脚本
1 | !/bin/sh |
其中BlogGitPath
为 hexo 项目绝对路径,BlogBuildedPath
是 hexo 项目打包后的绝对路径,DeployPath
是博客网站最终部署路径,git会先将 hexo 项目从 github 拉取到服务端仓库,然后执行node脚本安装依赖,再执行 hexo 打包命令。最后将打包完毕后的静态文件,拷贝到博客网站目录DeployPath
。
更该 post-receive
目录权限
1 | chmod +x post-receive |
8. 客户端 - 本地仓库关联服务器 git 裸仓库
完成上述操作后,需要在客户端项目中关联到服务器的 git 裸仓库。
1 | # root:web服务器用户名 |
9. 客户端 - 提交验证
关联完服务器 git 裸仓库之后,就可以在客户端提交一点测试代码进行验证。
每次提交代码的时候,需要先把代码提交到 github 上之后,再将提交记录提交到服务器 git 裸仓库中,这样就可以触发裸仓库的 post-receive 钩子,执行拉取最新代码、打包、部署的操作了。
1 | # 提交代码到 github |
10. 客户端 - 服务器配置 windows 客户端SSH公钥(免密提交)
参考连接:https://blog.51cto.com/lengff/4580016
windows 环境可能会提示 ssh-copy-id
方法不存在,则参考下方连接
参考连接:https://blog.csdn.net/qq_45624685/article/details/122631083
参考文章:
https://www.cnblogs.com/sxdcgaq8080/p/10570150.html
https://juejin.cn/post/6844903640910544909
https://juejin.cn/post/7239256068743544890