Caddy + wordpress VS Github pages + hexo
Caddy + wordpress
结构:
1 | 请求 -> DNS -> VPS -> Caddy接管80以及443,根据域名反向代理 -> wordpress服务 |
wordpress服务构成:
wordpress + mysql
需求:
可以参考王哥的分享
- 一个域名
- 一个云服务器、VPS等
tips:
出于备案的要求,域名服务商和服务器需要都在境内,国内的服务器如果不备案,是会被各种拦截下来无法提供web服务的。
如果你的域名和服务器都在境外,那是可以不备案的。
安装Docker
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17curl -fsSL https://get.docker.com | sudo sh -s -- --mirror Aliyun
sudo usermod -aG docker $USER
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2",
"registry-mirrors": ["https://t9ab0rkd.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl enable docker.service
sudo systemctl restart docker安装docker-compose
1
2sudo curl -L "https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose安装Caddy
1
2
3git clone git@git.meideng.net:linnan/my-caddy.git
cd my-caddy
docker-compose up -d域名提供商修改DNS配置,增加一条A记录
Caddyfile示例:
1 | blog.linnan.me { |
安装workpress
1
2
3mkdir wordpress && cd wordpress
touch docker-compose.yml && vi docker-compose.yml
docker-compose up -ddocker-compose.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31version: "3.9"
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
volumes:
- wordpress_data:/var/www/html
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
volumes:
db_data: {}
wordpress_data: {}将Caddy的服务代理到wordpress暴露的端口
Caddyfile示例:1
2
3
4
5blog.linnan.me {
route * {
reverse_proxy 127.0.0.1:8000
}
}
Github pages + hexo
先创建一个自己github page
deploy 部署
- 从头开始:
- 安装hexo工具
- 生成文件夹
1
2
3$ hexo init <folder>
$ cd <folder>
$ npm install - 修改_config.yml配置,站名等
- 修改_config.yml配置,post_asset_folder: true
- 新增两个依赖
1
2npm install hexo-deployer-git --save
npm hexo-asset-image-for-hexo5 --save npx hexo server
启动本地调试- 编写一篇博客
1
npx hexo new <title>
- Deploy发布
- 修改_config.yml文件
1
2
3
4
5deploy:
type: ''
type: git
repo: git@github.com:cafedeflore/cafedeflore.github.io.git
branch: gh-pages - 执行
1
npx hexo clean && npx hexo deploy
- 修改_config.yml文件
- clone现有的这个git仓库,修改一些配置,然后进行使用
- 从头开始:
-
先创建一个private的仓库my-blog,用来保存原始内容,并触发actions
生成一对秘钥:
1
ssh-keygen -t rsa -b 4096 -C "Hexo Deploy Key" -f github-deploy-key -N ""
这会在当前目录生成两个文件:
github-deploy-key —— 私钥
github-deploy-key.pub —— 公钥
我们把私钥放到我们存放 my-blog 原始文件的代码仓库里面,用于触发 Actions 时使用。
把公钥放到 GitHub Pages 对应的代码仓库Deploy key里面,用于 my-blog 部署时的写入工作。
自定义域名解析
- 去域名服务商的DNS新增一条CNAME指向
username.github.io
- 去username.github.io的Setting -> Pages新增自定义域名,github会在项目目录维护一个CNAME文件
- 在hexo的source目录下也维护同样内容的一个文件,确保我们打包出来的有这个CNAME
- 去域名服务商的DNS新增一条CNAME指向
两种方案的对比
- | 自建Wordpress | Github Page |
---|---|---|
搭建费用成本 | VPS服务器,即使非常低配,几百RMB/年 | 几乎为0 |
可访问性 | 取决于服务器位置,如果是国内服务器+备案,应该没有问题 | 依赖于github |
运维难度 | 可能遇到服务器性能问题等等 | 搭建好后几乎为0 |
编写体验 | 富文本编辑器,应该也有相关md支持,理论上只要有能上网的设备就能写 | 编写在本地,可以在vscode可视化编辑 |
更新延迟 | 发布即可见 | 有分钟级别的延迟 |
更新方式 | 动态 | 静态 |
数据 | 存储在mysql里,看mysql的容灾能力 | git维护,相对不容易丢数据,也不存在备份的问题 |
域名 | 可以关联自己的域名,没有的话只能通过ip访问 | 可以关联自己的域名,没有的话可以通过github的域名访问 |
https | 需要自己搞,当然用caddy成本也很低 | github帮你搞,无需操心 |
扩展性 | wordpress很多年了,生态应该还是很完善 | hexo也有很多主题插件,前端同学还能自己开发插件 |
其他
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 可太南了!
评论