小站迁移记录
从我开始部署这个小站起,一直使用 php5,而且也有段时间,wordpress 后台开始提醒 php 版本不安全,提示我更新。但更新是有风险的,何况我部署的是本地数据库,加上本人比较懒,因此一直没有动。结果前几天,有几个插件一并不支持 php5,导致一打开站就看到几个无法消除的红点,这就让人很不爽了。
所以下决心予以更新。本以为是游园会一样轻松的事儿,结果没想到踩了很多坑。在这里记录一下。
- 备份mysql,之后 scp 到本地
mysqldump -uroot -p 数据库名 > db.sql - 备份 wp-content 文件夹,之后 scp 到本地
tar xvf wp_bak.tar /var/www/html/wp-content - 系统重装为 debian 10,旧数据完全抹除。
之前是 debian8,实在是太老了,也该更新了。此时已经做了最坏打算,就是万一最后实在无法无痛恢复,反正数据库备份了,我就一篇一篇文章在复制进去。
-
php 重装为 7.4
wordpress 官方推荐是 7.4 以上,其实 php 出 8 了,但是 8 太新了,简单查了一下,还是有一些负面反馈,担心有兼容性问题,所以最终决定用 7.4
apt -y install lsb-release apt-transport-https ca-certificates wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/php.list apt update apt -y install php7.4 apt install php7.4-{bcmath,bz2,intl,gd,mbstring,mysql,zip} apt-get install php7.4-fpm - 这次直接改成 caddy 了,主要是为了 TLS 证书的自动续约。
apt install -y debian-keyring debian-archive-keyring curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | apt-key add - curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | tee /etc/apt/sources.list.d/caddy-stable.list apt update apt install caddy curl -o /usr/bin/caddy "https://caddyserver.com/api/download?os=linux&arch=amd64&p=github.com%2Fmastercactapus%2Fcaddy2-proxyprotocol&idempotency=79074247675458" chmod +x /usr/bin/caddy - wordpress 下载
这玩意不能用用 apt 安装,apt安装的有点问题,会报缺一个什么
/etc/wp-config-www.your-domain.com.php文件,总之用 apt 安装 wordpress 屁事多,我在这个坑里躺了三个小时,最后还是去官网下载解决的问题。官网:https://wordpress.org/download/wget https://wordpress.org/latest.tar.gz tar xvf latest.tar.gz mv wordpress/ /var/www/html/ - 上传 wp-content,并且覆盖
/var/www/html/wp-content文件夹 -
安装 mysql,上传db.sql,导入数据
apt install mariadb-server mariadb-client # 设置密码、创建数据库之类的事情就自己百度吧 mysql -uroot -p; # 输入密码 use wordpress; source db.sql; - Caddyfile
vim /etc/caddy/Caddyfile # 内容如下 https://www.history-of-my-life.com { request_body { max_size 50MB } bind 127.0.0.1 root * /var/www/html php_fastcgi unix//run/php/php7.4-fpm.sock file_server browse encode gzip @disallowed { path /wp-content/uploads/*.php } } :80 { redir https://{host}{uri} permanent } - php7.4-fpm 的运行用户问题
这个问题很蛋疼,搞起来以后一直 bad request,因为 caddy 的默认用户是 caddy,而 php7.4-fpm 的默认用户是 www-data,这就出问题。所以要改一下
vim /etc/php/7.4/fpm/pool.d/www.conf # 寻找并改变下面两行 user = www-data group = www-data # 改成下面这样 user = caddy group = caddy # 之后运行 systemctl restart php7.4-fpm - php7.4-fpm 的上传大小限制
vim /etc/php/7.4/fpm/php.ini # 修改俩参数为 upload_max_filesize 50M post_max_size 50M - Https 和 http 混用的 mix-content blocked 问题
终于打开页面了,发现页面框架混乱无比,有内容,但 css 和 js 全都丢了。看了一下 F12,发现 css 和 js 全都显示加载异常,错误是 mix-content blocked,查了一下,是主流浏览器的安全更新,现在不允许在 https 网站中夹杂 http 请求。查球半天,最后直接改了主题的 header.php 文件。
vim /var/www/html/wp-content/themes/hestia/header.php # 在 header 里加上这么一句 <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">如下图:

-
修正重定向次数过多的问题
然后主页就正常了,但是一旦尝试进入 wp-admin 页面,就会出现重定向次数爆炸的问题。神特么烦,主要思路肯定是 80 和 443 端口之间来回跳转的问题,但怎么也查不到原因,在网上查了半天,查到一个看起来比较可能靠谱的方法,用了一下,真解决了……
vim /var/www/html/wp-config.php # 在第二行加这么几句 $_SERVER['HTTPS'] = 'on'; define('FORCE_SSL_LOGIN', true); define('FORCE_SSL_ADMIN', true);截图如下:

-
之后一顿重启即可
systemctl restart caddy
0 条评论