1. 本网站的系统架构
- 网站示例: sunlogging.com
- 服务器: 阿里云ECS
- 服务器系统: Ubuntu 24.04 LTS
- 博客框架: Hexo
- 网站主题: Volantis
2. 安装git
执行环境: ECS服务器 + 本地计算机
- 安装
1 | sudo apt install -y git |
- 验证
1 | git --version |
显示具体的版本号则说明安装成功。
3. 配置git用户
3.1. 为什么要创建git用户
为了实现博客的自动化部署,我们后面要使用公钥免密登录服务器。为了安全起见,最好不要使用root用户免密登录,我们创建一个受限的用户来进行免密登录。
3.2. 创建git用户
执行环境: ECS服务器
- 创建账户
1 | adduser git |
- 查看是否创建成功
1 | cat /etc/passwd | grep git |
- 配置sudoers
将git用户添加到sudo的配置文件
1 | # 切换到root用户 |
3.3. 设置git用户的密码
执行环境: ECS服务器
- 设置密码
1 | sudo passwd git |
设置完密码后,就可以用git用户远程登录ECS服务器了。
- 验证
1 | ssh git@服务器IP |
输入刚设置的密码进行登录,如果登录成功,这说明git用户密码的设置成功。
3.4. 创建公钥-私钥对
执行环境: 在本地计算机
前提条件: 已安装git和ssh客户端,如果未安装,请先安装。
1 | # 进入~/.ssh,如果不存在该目录,可以手动创建一个 |
接下来,碰见系统询问就直接按回车键。此时便会在 ~/.ssh 目录创建两个文件,分别为: id_ed25519 (私钥) 和 id_ed25519.pub (公钥)。
3.5. 服务器配置公钥
执行环境: ECS服务器
前提条件: 已安装git,如果未安装,请先安装。
- 复制id_ed25519.pub
复制 4.4创建的 id_ed25519.pub 的内容。注意不要在命令行里选中复制,可以用VSCode等编辑器打开文件后,复制内容。
- 用git用户登录服务器
1 | ssh git@服务器IP |
- 创建authorized_keys文件
1 | # 进入git用户的home目录 |
- 验证
退出远程登录的服务器。再次通过ssh用git用户登录,这时应该不需要输入密码就能进正常登录了。
1 | ssh git@服务器IP |
4. hexo配置自动化部署
4.1. 配置Git仓库
执行环境: ECS服务器
前提条件: 已安装git,如果未安装,请先安装。
- 用git用户登录服务器
1 | ssh git@服务器IP |
- 创建git仓库
1 | cd ~ |
- 创建 post-receive
1 | cd hooks/ |
post-receive文件内容的功能:
让钩子文件删除 /home/www/sunlogging 目录下原有的文件,然后从 /home/git/sunlogging_repo 仓库 clone 新的博客静态文件到 /home/www/sunlogging 目录下。
/home/www/sunlogging
: 静态博客网站的根目录/home/git/sunlogging_repo
: 博客网站的git仓库目录
- 修改 /home/www/sunlogging 目录权限
1 | cd /home/www/sunlogging |
4.2. hexo站点配置
执行环境: 在本地计算机
前提条件: 已安装 node.js、hexo、git等软件,如果未安装,请先安装。
- 安装hexo-deployer-git
hexo-deployer-git是hexo官方提供的部署插件,可以实现hexo站点自动部署到git仓库。
1 | npm install hexo-deployer-git --save |
- 修改 _config.yml 配置
1 | deploy: |
your_pub_ip为ECS服务器的公网IP,请替换为你的公网IP。仓库路径修改为你自己的仓库路径。
- 部署网站
1 | # 1.生成静态页面 |
- 验证
通过浏览器访问 http://xxx.xxx.xxx.xxx:80/,就能查看刚部署的博客主页了。