前几天把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年了。。
或许应该尝试 https://hub.docker.com/r/linuxserver/chevereto
这装的是免费版啊
大佬 请教个问题…我在内网跑了个服务,然后用群晖自带的反代把服务放到公网了…我想监控下那些ip访问了这些服务…Zabbix这种实在太复杂了………有什么其他办法么?
最近都不更新了啊 大佬
最近有点忙,近期会经常更新了。
docker-compose 优势来了