一个乐于分享的博客
关注互联网折腾服务器分享码农的日常

使用GitHub Pages静态网页托管服务托管WordPress博客

使用GitHub Pages静态网页托管服务托管WordPress博客

GitHub是全球最大的代码托管网站,这次我们不讨论他的代码托管功能,重点使用的是Pages服务。不了解的可以先阅读:

# GitHub Pages配置自定义域名 并开启HTTPS访问

GitHub Pages允许用户将代码库中的静态文件直接发布为网站。同时支持绑定自定义域名,和开启SSL证书,而这些都是免费的!

那么可不可以用这个功能来托管网站呢?就拿WordPress来说,它是基于PHP的动态网站,显然不能直接部署到GitHub Pages。本篇岩兔站就鼓捣一下,将动态网站转换为静态文件,并自动同步到GitHub!

托管于GitHub的示例网站:

https://static.yantuz.cn/

准备工作

开始之前需要有一个目标网站,这里就是基于WordPress的岩兔站为例,所有操作都在Linux命令行中进行。

  • GitHub帐户
  • 要迁移的网站,比如https://bak.yantuz.cn:8000
  • 一台Linux计算机,也可以直接使用网站的服务器

网站静态化

在Linux命令行中,只要用wget一条命令就能搞定:

wget \
--mirror \
--convert-links  \
--adjust-extension \
--page-requisites  \
--retry-connrefused  \
--exclude-directories=comments \
--execute robots=off \
https://bak.yantuz.cn:8000

这条命令可以将整个网站以HTML的形式下载到本地

如果需要替换链接或者内容可以增加替换语句,将原域名https://bak.yantuz.cn:8000替换为新域名https://static.yantuz.cn

find ./ -type f -exec sed -i -e 's|https://bak.yantuz.cn:8000|https://static.yantuz.cn|g' {} \;

提交到GitHub

首先在GitHub中建立一个项目,起名为StaticYantuz,得到Git地址为git@github.com:yhf7952/staticYantuz.git

然后进行初始化设置,其中初始化和连接远程库的操作只需要执行一次即可。

#文件夹名称设置为docs
mv yantuz.cn/* docs/.
rmdir yantuz.cn

#初始化本地git库
git init
git add docs/*
#连接远程Git库,并进行提交到master
git remote add origin git@github.com:yhf7952/git-ssh.git
git push -u origin master

注意:以上为部分代码,用命令行提交GitHub还需要设置可信密钥等操作,详情查看git-ssh简明教程-命令行提交代码到GitHub

建立网站

启用Pages服务,并选择docs目录即可,之后绑定域名即可。以下是岩兔站的配置,详细设置参考GitHub Pages配置自定义域名 并开启HTTPS访问

设置完成之后应该可以通过https://static.yantuz.cn/直接访问了。

使用GitHub Pages静态网页托管服务托管WordPress博客

计划任务

网站是实时更新的,所以原网站更新时,同时也需要更新GitHub。根据网站更新频率自行设置任务计划就行,完整代码为:

#!/bin/sh

cd /home/staticYantuz

wget \
--mirror \
--convert-links  \
--adjust-extension \
--page-requisites  \
--retry-connrefused  \
--exclude-directories=comments \
--execute robots=off \
https://bak.yantuz.cn:8000

git rm -rf docs/*
mv yantuz.cn/* docs/.
rmdir yantuz.cn
find ./docs/ -type f -exec sed -i -e 's|https://bak.yantuz.cn:8000|https://static.yantuz.cn|g' {} \;
git add docs/*
git commit -m "new snapshot"
git push origin master

将代码存储为mirror.sh,执行方法为./mirror.sh

实际应用

本方法实际的应用是CMS类的网站,可以在本地部署运行环境,之后将生成的静态文件发布到外网平台。

优点:显而易见,由于服务器不进行动态运算,所以响应速度是最快的!而且不运行动态内容的话,杜绝了挂马的风险。

缺点:由于不能运行动态内容,所以数据库读写也不行,一些实时交互如留言等功能无法实现。

转载务必注明出处:岩兔站 » 使用GitHub Pages静态网页托管服务托管WordPress博客
赞 (5) or 打赏

讨论区 2

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #0

    这个方法可以有!!不过感觉如果是拿GitHub Pages托管博客的话不如直接用像Hugo这样的静态博客。

    Omega6年前 (2018-09-30)回复
    • 原本就是静态页会更方便,蹭服务器妥妥的

      岩兔站6年前 (2018-09-30)回复