今天我的网站备案终于通过了,可以通过域名去访问咱们的网站了,但是在这个过程中还是遇到了不少问题,这里打算只是记录一下整个程序,以便下次做迁移的时候可以省事一些。
先对整个过程做一个梳理:
- 在域名管理台添加域名解析,将
blog.gomkiri.top解析到 A 类型的 ip 地址中去。 - 在服务器下载 Caddy
- 编写 caddyfile
- 强制开始 SSL
- 强制跳转 https
下载 Caddy
我这里是直接使用了 Caddy 官方提供的下载方式,没有使用 Docker ,如果使用的是 root 用户,可以省略sudo
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
chmod o+r /usr/share/keyrings/caddy-stable-archive-keyring.gpg
chmod o+r /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddyBash另外我这里还多做了一步,给 Caddy 了更大的权限,在文件:/etc/systemd/system/multi-user.target.wants/caddy.service中将 User 和 Group 从 caddy 替换为了 root。
-- 修改前
User=caddy
Group=caddy
-- 修改后
User=root
Group=rootPlaintext修改 Caddyfile
目前我们也没有配 CDN 什么的,所以 caddyfile 的内容非常简单,文件位置:/etc/caddy/Caddyfile
blog.gomkiri.top {
reverse_proxy localhost:3307
}Plaintext没错,只需要这三行就能满足我们的全部需求,包括自动证书管理和域名反向代理!
开启 SSL 和强制跳转 https
本来以为到这里就结束了,但是实际去访问博客却发现,要么不走 http,要么所有的 css、js 都无法正常加载,搜索一番后发现还需要加入下面两个东西:
修改 ~wordpress/wp-config.php,加入下面的代码:
$_SERVER['HTTPS'] = 'on';
define('FORCE_SSL_ADMIN', true);
define('FORCE_SSL_LOGIN', true);
// 下面这两行可以在这里写,也可以直接改数据库,或者是修改管理页面的两个访问url
define('WP_HOME', 'https://blog.gomkiri.top/');
define('WP_SITEURL', 'https://blog.gomkiri.top/');PHP如何是想直接通过数据库的方式改,那就是将 wp_options 表中的 option_name 为 home 和 siteurl 的两行的 option_value 列改为htts访问地址
然后在~wordpress/wp-includes/fuctions.php,找到require ABSPATH . WPINC . '/option.php'; 后在它的下方加入
add_filter('script_loader_src', 'agnostic_script_loader_src', 20,2); function agnostic_script_loader_src($src, $handle) { return preg_replace('/^(http|https):/', '', $src); }
add_filter('style_loader_src', 'agnostic_style_loader_src', 20,2); function agnostic_style_loader_src($src, $handle) { return preg_replace('/^(http|https):/', '', $src); }PHP完成之后重启WordPress :docker restart wordperss
修改数据库数据
将数据库中存放的 url 全部从 IP 加端口替换为我们的域名即可,应该大部分数据都在wp_posts 表中。
Comments NOTHING