@@ -9,19 +9,19 @@ description: GithubPage智能DNS解析
99
1010好久不见,今天分享一下我的网站是如何做智能DNS解析的案例。
1111
12- 现在看到到这个网站被部署在一个github仓库,我域名解析指向了github ,因此可以通过域名直接访问这个网站。
12+ 现在看到这个网站被部署在一个 GitHub 仓库,我域名解析指向了 GitHub ,因此可以通过域名直接访问这个网站。
1313
1414但是目前在中国大陆访问比较慢,于是我采购了一台中国大陆的服务器。目标:
15- - 在大陆的IP地址访问 ,解析到大陆服务器。
16- - 在境外访问,解析到github 。
15+ - 在大陆的 IP 地址访问 ,解析到大陆服务器。
16+ - 在境外访问,解析到 GitHub 。
1717
18- 项目原本的增量更新逻辑不变:即通过` githubworkflow ` ,每次变更自动更新不一致的文件。
18+ 项目原本的增量更新逻辑不变:即通过 ` GitHub Actions ` ,每次变更自动更新不一致的文件。
1919
20- 实现这个需求的关键在于使用** 智能DNS解析** ,也就是根据访问者的地理位置将域名解析到不同的IP地址 。
20+ 实现这个需求的关键在于使用** 智能DNS解析** ,也就是根据访问者的地理位置将域名解析到不同的 IP 地址 。
2121
2222## 域名解析修改
2323
24- 在阿里云服务选择` 云解析 DNS ` 。相关配置如下:
24+ 在阿里云服务选择` 云解析 DNS ` 。相关配置如下:
2525
2626| 主机记录 | 记录类型 | 解析线路 | 记录值 |
2727| ----------| ----------| ----------| --------|
@@ -32,22 +32,22 @@ description: GithubPage智能DNS解析
3232
3333## 服务器配置
3434
35- 在服务器上,需要部署一个** Web服务器** (如Nginx或Apache ),并配置它来服务项目静态文件。大部分服务器都是开箱既有。我用的宝塔面板 ,添加` PHP项目 ` ,简单的配置了一下域名和` SSL ` 证书。找到项目指向的文件夹` /www/wwwroot/jiangmiemie.com ` ,后续将Github生成的静态资源传输到这里即可 。
35+ 在服务器上,需要部署一个** Web服务器** (如 Nginx 或 Apache ),并配置它来服务项目静态文件。大部分服务器都是开箱即有。我使用的是宝塔面板 ,添加` PHP项目 ` ,简单的配置了一下域名和` SSL ` 证书。找到项目指向的文件夹` /www/wwwroot/jiangmiemie.com ` ,后续将 GitHub 生成的静态资源传输到这里即可 。
3636
37- 如何将项目文件** 同步** 到这台服务器上。这里计划使用` rsync ` 增量同步, 使用` ssh ` 链接, 。
37+ 如何将项目文件** 同步** 到这台服务器上。这里计划使用` rsync ` 增量同步, 使用` ssh ` 链接。
3838
3939### rsync
4040
4141` rsync ` 比 ` scp ` 更适合同步大量文件,因为它可以只传输有变化的部分。
4242
43- 我的这台服务器是阿里云系统(不是Ubuntu),需要使用 :` yum install -y rsync ` 安装一下 。
43+ 我的这台服务器是阿里云系统(不是 Ubuntu),需要使用命令 :` yum install -y rsync ` 进行安装 。
4444
4545### ssh
4646
47- 需要打开的防火墙端口 :` 22 ` 、` 80 ` 、` 443 `
47+ 需要在防火墙中打开的端口 :` 22 ` 、` 80 ` 、` 443 `
4848
4949::: info
50- 虽然我们可以直接通过账号密码登录ssh ,但是账号密码权限太高,因此设置一个仅用于登录的ssh密码 。
50+ 虽然我们可以直接通过账号密码登录 ssh ,但是账号密码权限太高,因此设置一个仅用于部署的 ssh 密钥 。
5151:::
5252
5353``` bash showLineNumbers
@@ -75,22 +75,22 @@ ssh -i ~/.ssh/github_deploy_key root@localhost
7575cat ~ /.ssh/github_deploy_key
7676```
7777
78- ## GitHub Workflow修改
78+ ## GitHub Workflow 修改
7979
80- 完整内容如下,变更的内容为 ` Setup SSH ` 和` Deploy to server ` 。
80+ 完整配置如下,主要变更内容为 ` Setup SSH ` 和` Deploy to server ` 。
8181
82- 因为` GitHub Workflow ` 是所有人都能看到的,因此为了安全,你需要把服务器IP地址、链接密码等配置为密钥变量 。下面代码中` ${{ secrets.SSH_PRIVATE_KEY }} ` 这样格式的都是密钥变量。
82+ 因为` GitHub Actions ` 是所有人都能看到的,因此为了安全,你需要把服务器 IP 地址、连接信息等配置为密钥变量 。下面代码中` ${{ secrets.SSH_PRIVATE_KEY }} ` 这样格式的都是密钥变量。
8383
84- 把你的ip地址和刚刚终端显示的 ` 私钥 ` 复制到GitHub Secrets。
84+ 把你的 IP 地址和刚刚终端显示的 ` 私钥 ` 复制到 GitHub Secrets。
8585
8686::: info
87- 在你的GitHub仓库页面 ,进入 ` Settings ` -> ` Secrets and variables ` -> ` Actions ` 。
87+ 在你的 GitHub 仓库页面 ,进入 ` Settings ` -> ` Secrets and variables ` -> ` Actions ` 。
8888
8989点击 ` New repository secret ` 。
9090
9191Name 填写一个有意义的名称,比如我设置的是` SSH_PRIVATE_KEY ` 和` IP ` 。
9292
93- - ` IP ` 的 Secret 框中,仅粘贴你的ip地址 。例如:` 192.168.10.11 `
93+ - ` IP ` 的 Secret 框中,仅粘贴你的 IP 地址 。例如:` 192.168.10.11 `
9494
9595- ` SSH_PRIVATE_KEY ` 的 Secret 框中,粘贴从` -----BEGIN OPENSSH PRIVATE KEY----- ` 到` -----END OPENSSH PRIVATE KEY----- ` 完整内容。
9696
@@ -136,19 +136,18 @@ jobs:
136136
137137表示将服务器的公钥添加到 known_hosts 文件中。
138138
139-
140139- ` rsync -avz --exclude='.user.ini' ./build/ root@${{ secrets.IP }}:/www/wwwroot/jiangmiemie.com`
141140
142141表示将`./build/`文件夹同步到`/www/wwwroot/jiangmiemie.com`文件夹。
143142
144143| 参数 | 作用 | 详细说明 |
145144|------|------|----------|
146- | `rsync` | 远程同步工具 | 比scp更智能 ,只传输变化的部分 |
145+ | `rsync` | 远程同步工具 | 比 scp 更智能 ,只传输变化的部分 |
147146| `-a` | 归档模式 | 保留文件权限、时间戳、符号链接等所有属性 |
148147| `-v` | 详细输出 | 显示传输过程的详细信息 |
149148| `-z` | 压缩传输 | 传输时压缩数据,减少网络带宽 |
150149| `--exclude='.user.ini'` | 排除文件 | 跳过服务器自动生成的系统文件 |
151150| `./build/` | 源目录 | 本地构建好的静态文件目录 |
152151| `root@IP:/path/` | 目标地址 | 服务器上的部署目录 |
153152
154- 每次你推送代码到GitHub ,工作流会自动构建并将变化同步到服务器,实现真正的**持续部署** !
153+ 每次你推送代码到 GitHub ,工作流会自动构建并将变化同步到服务器,一次修改,处处生效 !
0 commit comments