開啟維護(hù)模式
sudo -u nginx php occ maintenance:mode --on
關(guān)閉維護(hù)模式
sudo -u nginx php occ maintenance:mode --off
備份數(shù)據(jù)庫
mysqldump -uroot -p nextcloud_db > nextcloud_db20220826.sql
解壓
unzip nextcloud-23.0.3.zip
備份nextcloud配置文件
重命名 nextcloud 目錄為 nextcloud-old
上傳新版 nextcloud 23.0.0 所有文件到服務(wù)器 nextcloud 目錄关炼。
rm nextcloud-17.0.1.zip
mv nextcloud-23.0.0.zip /home/cloud 我自己的目錄
mv nextcloud nextcloud-old
chown -R nginx.nginx nextcloud
配置恢復(fù)
cp -a nextcloud-old/config/* nextcloud/config/
文件恢復(fù)
mv nextcloud-old/data nextcloud/
權(quán)限更新(如果權(quán)限是對的不用改)
chown -R nginx.nginx nextcloud
find nextcloud/ -type d -exec chmod 750 {} \;
find nextcloud/ -type f -exec chmod 640 {} \;
升級php74
安裝版本庫
yum install epel-release yum-utils -y
安裝源remirepo
yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
配置 PHP 7.4 repository,
yum-config-manager --enable remi-php74
注意: 可根據(jù)自已的版本選擇,比如remi-php73或者remi-php72
安裝升級php
yum update php php-common php-opcache php-mcrypt php-cli php-gd php-curl php-mysql -y
報錯
卸載
yum remove php70w-pecl-apcu-devel-5.1.9-1.w7.x86_64
驗證版本
[root@george local]# php -v
PHP 7.4.10 (cli) (built: Sep 1 2020 13:58:08) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.10, Copyright (c), by Zend Technologies
php提示:PHP 的組件 OPcache 沒有正確配置
查看php安裝目錄
whereis php
which php
php -v 查看版本號
查看編譯參數(shù):
1、nginx編譯參數(shù):
your_nginx_dir/sbin/nginx -v
2饰潜、apache編譯參數(shù):
cat your_apache_dir/build/config.nice
3粪狼、php編譯參數(shù):
your_php_dir/bin/php -i |grep configure
4呈驶、mysql編譯參數(shù):
cat your_mysql_dir/bin/mysqlbug |grep configure
Linux下查看nginx捂掰、mysql羡鸥、php的安裝路徑和編譯參數(shù)
https://blog.51cto.com/qiangsh/1561810
master process 后面的就是 php的目錄
ps -ef | grep php
修改php.ini
安裝php73報錯
完全卸載php
查看當(dāng)前php已安裝的包
rpm -qa|grep php70w-pecl-apcu-devel
基本只需要卸載幾個名為common的包即可蜈块,其他同版本依賴會被全部刪除鉴腻,刪除php71w-common,71w版本的依賴包全部會被刪除百揭。
例如
yum remove php71w-common
yum remove php74w-common
安裝redis擴展
yum install php-redis
繼續(xù)報錯
嘗試升級報錯
PHP 內(nèi)存限制低于建議值 512MB
The current PHP memory limit is below the recommended value of 512MB.
vim /etc/php.ini
memory_limit = 512M
安裝libzip擴展
yum install libzip
查看哪些可以安裝的PHP擴展
yum search php74-php
安裝zip擴展
yum -y install php-pecl-zip
平滑升級 MariaDB 5.5
備份數(shù)據(jù)庫拘哨,如果升級順利是不要實施備份還原的
mysqldump -u root -p --all-databases > alldb.sql
如果想保留自己的 my.cof 配置,則備份一下這個文件
cp /etc/my.cnf /etc/my.cnf.bak
停止數(shù)據(jù)庫運行
systemctl stop mariadb
卸載 MariaDB 老版本
yum remove mariadb mariadb-server
添加 MariaDB Yum 庫
建議使用 MariaDB 官方推薦的 stable 穩(wěn)定版信峻,
https://downloads.mariadb.org/mariadb/
http://yum.mariadb.org/
添加 MariaDB 官方源
vi /etc/yum.repos.d/MariaDB.repo
# MariaDB 10.3 CentOS repository list
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.3/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
清除 yum 緩存
yum clean all
yum makecache
升級已有數(shù)據(jù)庫
安裝 MariaDB 新版本
yum install mariadb mariadb-server
啟動新版 MariaDB
systemctl start mariadb
升級已有數(shù)據(jù)庫
mysql_upgrade -uroot -p
[root@sg-gop-10-71-12-89 tmp]# mysql_upgrade -uroot -p
Enter password:
Phase 1/7: Checking and upgrading mysql database
Processing databases
mysql
mysql.columns_priv OK
mysql.db OK
mysql.event OK
mysql.func OK
mysql.help_category OK
mysql.help_keyword OK
mysql.help_relation OK
mysql.help_topic OK
mysql.host OK
mysql.ndb_binlog_index OK
mysql.plugin OK
mysql.proc OK
mysql.procs_priv OK
mysql.proxies_priv OK
mysql.servers OK
mysql.tables_priv OK
mysql.time_zone OK
mysql.time_zone_leap_second OK
mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
mysql.user OK
Upgrading from a version before MariaDB-10.1
Phase 2/7: Installing used storage engines
Checking for tables with unknown storage engine
Phase 3/7: Fixing views
Phase 4/7: Running 'mysql_fix_privilege_tables'
Phase 5/7: Fixing table and database names
Phase 6/7: Checking and upgrading tables
Processing databases
information_schema
performance_schema
Phase 7/7: Running 'FLUSH PRIVILEGES'
OK
配置服務(wù)自啟動
systemctl enable mariadb
登錄數(shù)據(jù)庫驗證
mysql -uroot -p
升級過程遇到錯誤記得先查看日志分析
MariaDB 官方升級文檔
Upgrading from MariaDB 5.5 to MariaDB 10.0
https://mariadb.com/kb/en/library/upgrading-from-mariadb-55-to-mariadb-100/
nextcloud登錄頁面用戶輸入密碼無法登錄(閃退)
原因是web倦青、phpnginx和/var/lib/php/session/不是同一個用戶路徑:/var/lib/php/session/解決辦法換成一樣的用戶(我的用的nginx用戶)chown nginx:nginx /var/lib/php/session/之后就可以登陸了
chown nginx:nginx /var/lib/php/session/
頁面升級報錯
然后升級報不能越版本升級
Exception: Updates between multiple major versions and downgrades are unsupp
修改版本號
準(zhǔn)備強制升級
/data/nextcloud/lib/private/Updater.php vim編輯
注釋掉檢查項
230 private function doUpgrade(string $currentVersion, string $installedVersion): void {
231 // Stop update if the update is over several major versions
232 $allowedPreviousVersions = $this->getAllowedPreviousVersions();
233 # if (!$this->isUpgradePossible($installedVersion, $currentVersion, $allowedPreviousVersions)) {
234 # throw new \Exception('Updates between multiple major versions and downgrades are unsupported.');
235 # }
236
237 // Update .htaccess files
有時,升級后文件不顯示盹舞。重新掃描文件可以幫助:
sudo -u nginx php console.php files:scan --all
有關(guān)更多資源产镐,請參閱nextcloud.com 支持頁面隘庄。
有時,如果使用基于 Web 的升級過程癣亚,Nextcloud 可能會卡在升級中丑掺。這通常是由于進(jìn)程耗時過長并遇到 PHP 超時。以這種方式停止升級過程:
sudo -u nginx php occ maintenance:mode --off
開始手動過程:
sudo -u nginx php occ upgrade
如果這不能正常工作述雾,請嘗試修復(fù)功能:
sudo -u nginx php occ maintenance:repair
數(shù)據(jù)庫丟失了一些索引街州。由于給大的數(shù)據(jù)表添加索引會耗費一些時間,因此程序沒有自動對其進(jìn)行修復(fù)玻孟。您可以在 Nextcloud 運行時通過命令行手動執(zhí)行 "occ db:add-missing-indices" 命令修復(fù)丟失的索引唆缴。索引修復(fù)后會大大提高相應(yīng)表的查詢速度。
sudo -u nginx php occ db:add-missing-indices
數(shù)據(jù)庫缺少一些主鍵黍翎。由于在大型數(shù)據(jù)表上添加主鍵可能需要一些時間面徽,因此程序沒有自動添加。通過運行 "occ db:add-missing-primary-keys"匣掸,這些缺失的主鍵可以在實例持續(xù)運行時手動添加趟紊。
sudo -u nginx php occ db:add-missing-primary-keys
數(shù)據(jù)庫缺少一些可選列。 由于在大表上添加列可能會花費一些時間碰酝,因此在可以選擇時不會自動添加列霎匈。 通過運行 “occ db:add-missing-columns”,可以在實例繼續(xù)運行時手動添加那些缺少的列送爸。 添加列后唧躲,某些功能可能會提高響應(yīng)速度或可用性。
sudo -u nginx php occ db:add-missing-columns
數(shù)據(jù)庫中的一些列缺少對 BigInt 的轉(zhuǎn)換碱璃。由于改變大表的列類型可能需要一些時間弄痹,所以它們沒有被自動改變。通過運行 "occ db:convert-filecache-bigint"嵌器,可以手動應(yīng)用這些未決的變化肛真。這個操作需要在實例離線的情況下進(jìn)行。更多詳情請閱讀 有關(guān)于此的文檔頁面 ↗爽航。
sudo -u nginx php occ db:convert-filecache-bigint
數(shù)據(jù)庫丟失了一些索引蚓让。由于給大的數(shù)據(jù)表添加索引會耗費一些時間,因此程序沒有自動對其進(jìn)行修復(fù)讥珍。您可以在 Nextcloud 運行時通過命令行手動執(zhí)行 "occ db:add-missing-indices" 命令修復(fù)丟失的索引历极。索引修復(fù)后會大大提高相應(yīng)表的查詢速度。
sudo -u nginx php occ db:add-missing-indices
該實例缺失了一些推薦的 PHP 模塊衷佃。為提高性能和兼容性趟卸,我們強烈建議安裝它們。
intl
sodium
yum -y install php-intl
yum -y install php-sodium
PHP 模塊 "gmp" 和/或 "bcmath" 未被啟用。如果你使用 WebAuthn 無密碼驗證锄列,這些模塊是必需的图云。
yum -y install php-gmp
yum -y install php-bcmath
HTTP 請求頭 "X-Frame-Options" 沒有配置為 "SAMEORIGIN"。這是一個潛在的安全或隱私風(fēng)險邻邮,我們建議您調(diào)整這項設(shè)置竣况。
cd /etc/nginx/conf.d
vim nextcloud.conf
全部請求頭設(shè)置
add_header Strict-Transport-Security 'max-age=15552000';
add_header X-Content-Type-Options 'nosniff';
add_header X-Robots-Tag 'none';
add_header X-Frame-Options 'SAMEORIGIN';
add_header X-Download-Options 'noopen';
add_header X-Permitted-Cross-Domain-Policies 'none';
add_header X-XSS-Protection '1;mode=block';
add_header Referrer-Policy "no-referrer";
修改配置后重新加載生效
systemctl reload nginx
您的網(wǎng)頁服務(wù)器未正確設(shè)置以解析“/.well-known/webfinger”。
您的網(wǎng)頁服務(wù)器未正確設(shè)置以解析“/.well-known/nodeinfo”筒严。
處理辦法
注釋掉nextcloud.conf配置中的error_page 403丹泉、error_page 404
#error_page 403 /core/templates/403.php;
#error_page 404 /core/templates/404.php;
您的安裝沒有設(shè)置默認(rèn)電話區(qū)域。這是在沒有國家代碼的情況下驗證配置文件設(shè)置中的電話號碼所必需的鸭蛙。要允許沒有國家/地區(qū)代碼的號碼摹恨,請在您的配置文件中添加帶有相應(yīng) ISO 3166-1 代碼 ↗ 的地區(qū)的“default_phone_region”。
cd /data/nextcloud/config
vim config.php
'default_phone_region' => 'CN',
管理用戶報錯
an error occured during the request. unable to proceed. nextcloud報錯
錯誤處理方式待驗證
MySQL 被用作數(shù)據(jù)庫规惰,但不支持 4 字節(jié)字符睬塌。要能夠在文件名或評論中正確處理 4 字節(jié)字符 (如 emoji)泉蝌,建議在 MySQL 中啟用 4 字節(jié)支持歇万。
官方文檔:https://docs.nextcloud.com/server/14/admin_manual/configuration_database/mysql_4byte_support.html
MariaDB 10.3 或更高版本
[mysqld]
innodb_file_per_table=1
MariaDB 10.2 或更早版本[]
- 確保在 MySQL 服務(wù)器上設(shè)置了以下 InnoDB 設(shè)置:
[mysqld]
innodb_large_prefix=true
innodb_file_format=barracuda
innodb_file_per_table=1
MySQL:數(shù)據(jù)庫root用戶登入MySQL。
mysql -u root -p
更改數(shù)據(jù)庫字符集和排序規(guī)則勋陪。
ALTER DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
退出MySQL數(shù)據(jù)庫贪磺。exit
在Nextcloud的config.php中把mysql.utf8mb4設(shè)為true,進(jìn)入Nextcloud網(wǎng)站目錄诅愚,運行如下命令寒锚。
sudo -u www-data php occ config:system:set mysql.utf8mb4 --type boolean --value="true"
通過運行修復(fù)步驟將Nextcloud所有表轉(zhuǎn)換為新的排序規(guī)則。
sudo -u www-data php occ maintenance:repair
等待完成违孝。
————————————————
完成后刹前,再次刷新管理后臺的【概覽】頁,相關(guān)警告提示消失雌桑。
由上圖看出文件格式為Antelope喇喉,因些我們必須對數(shù)據(jù)庫文件格式進(jìn)行轉(zhuǎn)換。創(chuàng)建批量轉(zhuǎn)換SQL命令并執(zhí)行轉(zhuǎn)換
進(jìn)入INFORMATION_SCHEMA數(shù)據(jù)庫USE INFORMATION_SCHEMA;
生成Nextcloud數(shù)據(jù)庫的批量轉(zhuǎn)換SQL命令校坑,命令中“數(shù)據(jù)庫名稱”更改為你的Nextcloud數(shù)據(jù)庫名稱拣技。SELECT CONCAT("ALTER TABLE ", TABLE_SCHEMA,"
.", TABLE_NAME, "
ROW_FORMAT=DYNAMIC;") AS MySQLCMD FROM TABLES WHERE TABLE_SCHEMA = "數(shù)據(jù)庫名稱";
生成以下批量轉(zhuǎn)換SQL命令,將其拷出耍目,粘貼到記事本膏斤。
在復(fù)制時,會把命令前后的豎杠符號“|”也一并復(fù)制了邪驮,在記事本中用替換工具將其替換掉莫辨。
點擊【全部替換】,所有豎杠將消失。
在記事本中全選并復(fù)制所有命令衔掸,并粘貼到ssh中烫幕,此時,數(shù)據(jù)庫將逐一執(zhí)行轉(zhuǎn)換工作敞映,如下圖所示较曼,靜待完成。
再次查看Nextcloud數(shù)據(jù)庫文件格式是否已更改為Barracuda振愿,命令中“數(shù)據(jù)庫名稱”更換為你的Nextcloud數(shù)據(jù)庫名稱捷犹,記得保留后面的“%”符號。SELECT NAME, SPACE, FILE_FORMAT FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES WHERE NAME like "數(shù)據(jù)庫名稱%";
此時冕末,所有數(shù)據(jù)庫文件格式已成功轉(zhuǎn)換為Barracuda萍歉。
在Nextcloud的config.php中把mysql.utf8mb4設(shè)為true,進(jìn)入Nextcloud網(wǎng)站目錄档桃,運行如下命令枪孩。sudo -u www-data php occ config:system:set mysql.utf8mb4 --type boolean --value="true"通過運行修復(fù)步驟將Nextcloud所有表轉(zhuǎn)換為新的排序規(guī)則 。sudo -u www-data php occ maintenance:repair等待完成藻肄。
完成后蔑舞,再次刷新管理后臺的【概覽】頁,相關(guān)警告提示消失嘹屯。
————————————————
重新啟動 MariaDB 服務(wù)器攻询。
<MariaDB數(shù)據(jù)庫root用戶登入
MySQLmysql -u root -p
查看Nextcloud數(shù)據(jù)庫文件格式是否已更改為Barracuda,命令中“數(shù)據(jù)庫名稱”更換為你的Nextcloud數(shù)據(jù)庫名稱州弟,記得保留后面的“%”符號钧栖。
SELECT NAME, SPACE, FILE_FORMAT FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES WHERE NAME like "數(shù)據(jù)庫名稱%";
————————————————
MariaDB> SELECT NAME, SPACE, FILE_FORMAT FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES WHERE NAME like "nextcloud_db%";
<由上圖看出文件格式為Antelope,因些我們必須對數(shù)據(jù)庫文件格式進(jìn)行轉(zhuǎn)換婆翔。創(chuàng)建批量轉(zhuǎn)換SQL命令并執(zhí)行轉(zhuǎn)換
進(jìn)入
INFORMATION_SCHEMA數(shù)據(jù)庫
USE INFORMATION_SCHEMA;
生成Nextcloud數(shù)據(jù)庫的批量轉(zhuǎn)換SQL命令拯杠,命令中“數(shù)據(jù)庫名稱”更改為你的Nextcloud數(shù)據(jù)庫名稱。
SELECT CONCAT("ALTER TABLE ", TABLE_SCHEMA,"
.", TABLE_NAME, "
ROW_FORMAT=DYNAMIC;") AS MySQLCMD FROM TABLES WHERE TABLE_SCHEMA = "數(shù)據(jù)庫名稱";
————————————————
MariaDB> USE INFORMATION_SCHEMA;
MariaDB> SELECT CONCAT("ALTER TABLE `", TABLE_SCHEMA,"`.`", TABLE_NAME, "` ROW_FORMAT=DYNAMIC;") AS MySQLCMD FROM TABLES WHERE TABLE_SCHEMA = "nextcloud_db";
這將為 nextcloud 數(shù)據(jù)庫中的每個表返回一個 SQL 命令啃奴。這些行可以快速復(fù)制到文本編輯器中潭陪,替換“|”并將 SQL 命令復(fù)制回 MariaDB shell。如果沒有出現(xiàn)錯誤(有疑問纺腊,請檢查第 2 步)畔咧,一切都已完成,此處無需執(zhí)行任何操作揖膜。從第 3 步開始誓沸,它可以使用 MySQL 指令進(jìn)行。
但是壹粟,有些表可能無法更改拜隧。操作失敗并顯示:“ERROR 1478 (HY000): Table storage engine 'InnoDB' does not support the create option 'ROW_FORMAT'”宿百。在這種情況下,失敗的表在步驟 2 中的 SPACE 值為 0洪添。這基本上意味著該表沒有自己的索引文件垦页,這是梭子魚格式所必需的。這可以通過稍微不同的 SQL 命令來解決:
MariaDB> ALTER TABLE `nextcloud`.`oc_tablename` ROW_FORMAT=DYNAMIC, ALGORITHM=COPY;
mysql -u root -p
查看版本號
status
修改MySQL配置文件(一般存放于/etc/mysql目錄下)干奢,在 [mysqld]下添加如下配置項痊焊。[mysqld]
innodb_file_per_table = 1
更改數(shù)據(jù)庫字符集和排序規(guī)則
ALTER DATABASE nextcloud_db CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
這里的nextcloud修改為自己nextcloud的數(shù)據(jù)庫名
在Nextcloud的config.php中把mysql.utf8mb4設(shè)為true,進(jìn)入Nextcloud網(wǎng)站目錄忿峻,運行如下命令
sudo -u nginx php occ config:system:set mysql.utf8mb4 --type boolean --value="true"
通過運行修復(fù)步驟將Nextcloud所有表轉(zhuǎn)換為新的排序規(guī)則
sudo -u nginx php occ maintenance:repair
使用教程來修復(fù)排序規(guī)則https://confluence.atlassian.com/confkb/mysql-collat ion-repair-database-level-changes-670958163.html 523
然后
從config.php中刪除了'mysql.utf8mb4' => true薄啥,
在我刪除它之后,一切順利逛尚。