tian051011的博客

将博客Typecho版本更新至1.2.0,与这期间遇到的坑

前言

真的好久没有更新博客了!这自然有我个人最近想进行的文字表达比较少的原因,但也有生活与学习繁忙的原因。期间也发生了很多事情,我可能会把其中的一些整理后记在博客上吧。同样好久没有更新的,还有Typecho。今天久违的登录了博客的后台,吃惊的发现Typecho居然在4月1日发布了一个新版本1.2.0。不是愚人节玩笑,真是令人吃惊,要知道Typecho的上一个稳定版本1.1,也是本博客目前正在使用的版本是在2017年10月发布的,是将近5年前。而我的最后一篇博客,是在2019年10月发布的,是将近3年前。将Typecho的更新作为本博客重启的序幕,我觉得很合适。

准备工作

首先,我们来看看Tyepcho 1.2.0的安装环境要求。

PHP 7.2 以上
MySQL, PostgreSQL, SQLite 任意一种数据库支持,并在 PHP 中安装了相关扩展
CURL 扩展支持
mbstring 或 iconv 扩展支持

其中最大的变化是PHP版本要求从5.1飞跃到了7.2。其实更新PHP本来可能是这个任务中最难的部分,然而在一两年前左右,好像是为了部署FreshRSS,我已经把PHP从5.4更新到7.4了,还顺带把Typecho 1.1在PHP 7.4的报错修了下,所以这部分理论上不必再折腾了。但是,既然是时隔已久的更新,总是要彻底一点嘛!另外也是由于在VPS上,我使用了LNMP一键脚本,更新PHP差不多也是一个命令完事。

使用SSH连接到VPS后,先更新LNMP到1.8吧。

下载LNMP 1.8压缩包并解压:

[root@web ~]# wget http://soft.vpser.net/lnmp/lnmp1.8.tar.gz
[root@web ~]# tar -zxvf lnmp1.8.tar.gz

切换至新目录并执行更新脚本:

[root@web ~]# cd lnmp1.8
[root@web lnmp1.8]# ./upgrade1.x-1.8.sh

之后按任意键开始更新并等待更新完成。

LNMP更新完成之后是重头戏,更新PHP。不过LNMP脚本已经将其做的很人性化了,只需要在相同目录执行./upgrade.sh并按提示操作就行了。

由于编译更新PHP是一件耗时且不应中断的任务,我这里开了一个screen单独运行它,这样SSH断连脚本也不会终止了。

[root@web lnmp1.8]# screen -S upd_php
[root@web lnmp1.8]# ./upgrade.sh

之后按提示操作即可。这个升级脚本还可以用于升级Nginx,MySQL/MariaDB等,这里就不展示了。

开始升级

根据Typecho的文档,Typecho本身的升级还是很简单的,只需要删除/admin//var//index.php/install.php,之后把新版的这些文件复制进去就行了。我们照着教程来吧。

下载最新版的Tyepcho并解压至新建的目录:

[root@web ~]# wget https://github.com/typecho/typecho/releases/latest/download/typecho.zip
[root@web ~]# mkdir typecho-1.2.0
[root@web ~]# mv typecho.zip typecho-1.2.0/
[root@web ~]# cd typecho-1.2.0/
[root@web typecho-1.2.0]# unzip typecho.zip

备份旧版Typecho的文件:

[root@web typecho-1.2.0]# cd ..
[root@web ~]# mkdir typecho-1.1
[root@web ~]# mv -t typecho-1.1/ /home/wwwroot/tian051011.me/admin/ /home/wwwroot/tian051011.me/var/ /home/wwwroot/tian051011.me/index.php /home/wwwroot/tian051011.me/install.php

将新文件复制过去,别忘了更改权限:

[root@web ~]# cp -rt /home/wwwroot/tian051011.me/ typecho-1.2.0/admin/ typecho-1.2.0/var/ typecho-1.2.0/index.php typecho-1.2.0/install.php
[root@web ~]# chown -R www:www /home/wwwroot/tian051011.me/admin/ /home/wwwroot/tian051011.me/var/ /home/wwwroot/tian051011.me/index.php /home/wwwroot/tian051011.me/install.php

之后访问admin页面就可以完成升级了!

当然在此之前最好按照提示备份一下。

升级完成,与遇到的问题

升级完成之后,页面跳转回了后台。访问本博客,发现没有插件与功能出现异常。不过,后台却多了一个升级提示,而我们很明显已经升级到最新版了。

查看/admin/index.php文件,可以发现这个升级提示的信息是通过浏览器的sessionStorage保存的。

$(document).ready(function () {
    var ul = $('#typecho-message ul'), cache = window.sessionStorage,
        html = cache ? cache.getItem('feed') : '',
        update = cache ? cache.getItem('update') : '';
    ……
    function applyUpdate(update) {
        if (update.available) {
            $('<div class="update-check message error"><p>'
                + '<?php _e('您当前使用的版本是 %s'); ?>'.replace('%s', update.current) + '<br />'
                + '<strong><a href="' + update.link + '" target="_blank">'
                + '<?php _e('官方最新版本是 %s'); ?>'.replace('%s', update.latest) + '</a></strong></p></div>')
                .insertAfter('.typecho-page-title').effect('highlight');
        }
    }
    ……

可能是上次获取的结果还在缓存里,清除一下对应的sessionStorage试试吧。要达成这一目的,最简单的方面是在该页面按Ctrl+F5进行硬刷新。

后记

时光的流逝真是令人感叹,我离开博客的这段时间也发生了很多事,很多事物都渐渐的改变了。但是,还是有些东西是不怕时间的。
我计划用自己近年来学到的知识继续改造本博客。如果真的有人用RSS订阅了本博客,或者刷收藏的时候看到了本文章,希望看到这里的你可以知道,这个博客还没有弃坑哦!

当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »