Nextcloud迁移及恢复

一、迁出

1、停止apache2服务

sudo systemctl stop apache2

2、打包nextcloud目录所有文件

sudo tar -czvf nextcloud.tar.gz /var/www/nextcloud

3、导出MySQL数据库

sudo mysqldump --single-transaction --default-character-set=utf8mb4 -h server -u username -p password db_name > bakfile.sql

二、恢复

1、安装依赖

sudo apt install apache2 mysql-server php redis php-mysql php-redis php-apcu php-common php-curl php-gd php-json php-mbstring php-xml php-zip php-bz2 php-intl php-gmp php-imagick php-bcmath
#对于php-imagick的额外支持
sudo apt install libmagickcore-6.q16-6-extra

2、解压文件

tar -zxvf nextcloud.tar.gz
mv nextcloud /var/www/
chown www-data:www-data -R /var/www/nextcloud

3、恢复数据库

恢复用户

CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';

创建数据库

CREATE DATABASE IF NOT EXISTS nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

授予权限

GRANT ALL PRIVILEGES ON nextcloud.* TO 'username'@'localhost';

刷新权限

FLUSH PRIVILEGES;

恢复数据库

mysql -h server -u username -p password db_name < bakfile.sql

4、配置Nextcloud

启用对应Apache2模块

sudo a2enmod rewrite headers env dir mime 
sudo systemctl restart apache2
#启用SSL
a2enmod ssl

按照另一篇文章Nextcloud的Apache2配置写入配置

修改不同位置PHP设置,按照不同需求。根据PHP版本变化修改中间版本号。

/etc/php/7.4/apache2/php.ini 
or
/etc/php/7.4/fpm/php.ini
or
/etc/php/7.4/cli/php.ini

修改内容如下

修改/etc/php/7.4/apache2/php.ini
max_execution_time = 3600
max_input_time = 3600
memory_limit = 1024M
upload_max_filesize = 16G
post_max_size = 16G

另外对APCu还需单独启用


#为APache2启用
sudo nano /etc/php/7.4/apache2/conf.d/20-apcu.ini
#加入下列内容

apc.enable_cli=1

为Nextcloud建立定期corn服务

#执行文件
sudo nano /etc/systemd/system/nextcloudcron.service
#写入以下内容

[Unit]
Description=Nextcloud cron.php job

[Service]
User=www-data
ExecStart=/usr/bin/php -f /var/www/nextcloud/cron.php
KillMode=process

#定时触发文件
sudo nano /etc/systemd/system/nextcloudcron.timer
#写入内容

[Unit]
Description=Run Nextcloud cron.php every 5 minutes

[Timer]
OnBootSec=5min
OnUnitActiveSec=5min
Unit=nextcloudcron.service

[Install]
WantedBy=timers.target

#以下列命令立即执行
sudo systemctl daemon-reload
sudo systemctl enable --now nextcloudcron.timer