lala.im:Chevereto升级v3最终版需要注意的事项

運維技術·lala.im · 2021-06-08 · 117 人浏览

原文地址:https://lala.im/7925.html,請支持原作者!該處僅作轉載。

前几天把chevereto升级到了所谓的v3最终版:3.20.0。升级后我就发现这个版本bug是真的多,所以个人建议目前不要升,等真正稳定后再考虑。
我从3.18.3升到3.20.0实际是没问题的,问题发生在他后面发布的3.20.2版本。
我看到他发布了这个3.20.2版本后肯定是毫不犹豫就去更的,因为这个版本主要就是修复之前版本的各种bug。
结果我这一更就掉坑里面去了,在安装更新的时候提示SQL语句不能成功执行:

Problems executing the SQL update query. It is recommended that you issue the above SQL queries manually.

然后我手动去执行结果报了个错:

1071 - Specified key was too long; max key length is 1000 bytes

整了半天最后才知道是从3.20.0开始只支持mysql8,现在我用的mariadb10.3对标的貌似是mysql5.7,要把mariadb升到10.5才行。
要是早知道新版本对系统环境的要求有变化我就不会升了,因为我的博客和这个chevereto搭在同一台服务器上,我不是很想折腾这个生产环境。。
但是没办法现在只能硬着头皮升了。。所以我认为造成这个问题产生的原因chevereto有一定的责任。
因为众所周知chevereto之前的版本更新都是很傻瓜式的,有新更新了你在后台点点鼠标就完成了,所以这次更新我习惯性认为和之前一样,再加上我升3.20.0也没遇到问题,所以就按照往常一样直接升了。
我认为chevereto应该在升级的界面给一个有关更新的提示,至少告诉要升级的人一些注意事项,这样就可以从一定程度上避免这个问题,好在确实在3.20.2更新中加入了这个新的功能:
https://chevereto.com/community/threads/update-warning.13419/
除此之外,在chevereto文档上对依赖mariadb的版本号描述有缺陷,只写了10这个版本号,但实际上并不是所有10.x都支持:
https://v3-docs.chevereto.com/setup/system/requirements.html#database
对于使用mariadb的人来说,需要自己查看与mysql相关的兼容性:
https://mariadb.com/kb/en/compatibility-differences/
以下是有关如何在debian10把mariadb10.3升到10.5的步骤。
使用下面的升级方法有一个前提条件是你的mariadb旧版本是通过apt的官方存储库安装的。
开始升级之前先备份数据,安装mariadb-backup备份工具:

apt -y update
apt -y install mariadb-backup

创建备份目录:

mkdir /var/mariadb

备份全部数据库:

mariabackup --backup --user=imlala --password=xxxxx --target-dir=/var/mariadb/backup

必须准备备份数据,否则这些备份下来的数据可能无法正常恢复:

mariabackup --prepare --target-dir=/var/mariadb/backup

当然这里你也可以用其他的备份方式,总之要先备份,备份,备份!
确认你的备份正常后,停止运行mariadb:

systemctl stop mariadb.service

卸载所有有关mariadb的包:

apt remove "mariadb-*"

还需要卸载galera相关的包,我是mariadb10.3,对应的包名:

apt remove galera-3

再次检查是否卸载了所有有关mariadb的包,以下命令执行后正常情况下不应该有任何回显:

apt list --installed | grep -i -E "mariadb|galera"

现在准备安装新版本,这里我直接使用mariadb官方的脚本来配置存储库,下载脚本给执行权限:

apt -y install wget curl ca-certificates apt-transport-https
wget https://downloads.mariadb.com/MariaDB/mariadb_repo_setup
chmod +x mariadb_repo_setup

运行脚本会自动帮你添加相应的存储库,这里设置安装mariadb10.5:

./mariadb_repo_setup --mariadb-server-version="mariadb-10.5"

之后就可以安装新版本的mariadb了:

apt -y update
apt -y install mariadb-server mariadb-backup

启动以及设置开机自启:

systemctl start mariadb
systemctl enable mariadb

确认运行状态:

systemctl status mariadb

chevereto的v3最终版本实际上对php也有硬性要求,我目前用的是php7.3,虽然还没有造成过什么问题,但是按照官方的说法v3最终版本仅支持php7.4。
为了后续升级能够一切顺利,php7.3可能会带来不必要的麻烦,这里我顺带把php7.3也升级到php7.4了。下面的升级步骤仅支持debian10。
首先添加sury的存储库:

apt -y install apt-transport-https ca-certificates lsb-release
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" > /etc/apt/sources.list.d/php.list
apt -y update

之后就可以直接安装php7.4了:

apt -y install php7.4-common php7.4-cli php7.4-cgi php7.4-fpm \
php7.4-mysql php7.4-sqlite3 php7.4-curl php7.4-mbstring \
php7.4-imagick php7.4-zip php7.4-xml php7.4-gd

启动php7.4-fpm并设置开机自启:

systemctl start php7.4-fpm
systemctl enable php7.4-fpm

相对于mariadb来说php是可以非常方便在debian上实现多版本管理和共存的,与其说是升级,不如说是多装一个版本实现切换。
对于nginx来说,只需要改一个配置即可让程序用到新版本的php:

fastcgi_pass unix:/run/php/php7.4-fpm.sock;

重启nginx使其生效:

systemctl restart nginx

对于php的命令行版本切换,可以使用update-alternatives:

update-alternatives --config php

对于chevereto而言,新版本的php更新后,还需要进行相关的优化,否则后续使用还会出问题。
一直以来我都发现chevereto有一个问题,在上传大图片(10M左右大小)的时候会概率性报错500,这里顺带也给解决了。
首先把php-fpm的超时时间/内存限制等配置进行调整,编辑如下配置文件:

nano /etc/php/7.4/fpm/php.ini

修改下面列出的这些配置项:

max_execution_time = 300
post_max_size = 100M
upload_max_filesize = 100M
memory_limit = 512M

除了上面这些配置需要修改外还需要增加php-fpm的子进程数量,否则上传大图依旧会报错500。
默认配置的子进程数量太少,chevereto在并行上传的时候会耗尽所有子进程,编辑如下配置文件:

nano /etc/php/7.4/fpm/pool.d/www.conf

修改下面列出的这些配置项:

pm = dynamic
pm.max_children = 20
pm.start_servers = 12
pm.min_spare_servers = 8
pm.max_spare_servers = 19
pm.max_requests = 500

重启php-fpm使更改生效:

systemctl restart php7.4-fpm

现在继续等chevereto后续的更新吧,因为还有很多bug没修。。比如说移动端safari下面,各种乱七八糟的前端问题。。
我只想说v4版本我估计是不会花钱买了。。除非前端设计的特别惊艳。。
最后晒个授权购买日期,不知不觉过去6年了。。

範例

運維技術 lala.im
Theme Jasmine by Kent Liao