nextcloud使用mysql8.0、添加redis缓存以及解决升级超时问题

切换到mysql8.0

nextcloud直接使用mysql8.0是运行不起来的,因为mysql8.0开始将caching_sha2_password作为默认的身份验证插件, nextcloud现在是不支持caching_sha2_password认证的(由于php现在不支持)。 所以需要创建mysql_native_password认证的mysql用户来让nextcloud使用

-- 创建用户nextcloud,密码为password
CREATE USER 'nextcloud'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
-- 将nextcloud库的权限分配给用户nextcloud
GRANT ALL ON nextcloud.* TO 'nextcloud'@'%';

运行mysql8.0的时候使用命令--default-authentication-plugin=mysql_native_password启动也不好使,不知道为啥。 只有像上面这样新建mysql_native_password验证的用户才好使

添加redis作为缓存

config.php添加缓存配置

  'memcache.local' => '\\OC\\Memcache\\Redis',
  'memcache.locking' => '\\OC\\Memcache\\Redis',
  'filelocking.enabled' => 'true',
  'redis' =>
  array (
    'host' => '127.0.0.1',
    'port' => 6379,
    'dbindex' => 0,
    'timeout' => 1.5,
  ),

解决升级页面超时问题

在nextcloud页面点击升级的时候,经常会504超时,是请求超时了,再次点击升级的时候会返回如下信息

Step 4 is currently in process. Please reload this page later.

原因其实是后台下载升级包慢导致的。

这时候我们需要手动删除nextcloud的data目录下的updater-*文件夹中的.step文件,然后就不要在页面上升级了,在命令行下使用以下命令进行升级

sudo -u www-data php /var/www/nextcloud/updater/updater.phar
sudo -u www-data php /var/www/nextcloud/occ upgrade
sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --off

如果下载比较慢的话可以使用代理,有两种方式

  • 修改config.php,添加proxy配置,如'proxy' => 'http://127.0.0.1:1080'
  • 修改curl的代理, alias curl="curl -x socks5h://127.0.0.1:1081"或者export ALL_PROXY=socks5h://127.0.0.1:1081