安全地清除 ownCloud Apache .htaccess 警告
僅對 ownCloud 的 Web 根目錄設定 AllowOverride All,驗證活動的 Apache 虛擬主機,然後安全地重新載入以恢復 .htaccess 規則。
對於 ownCloud 10,首先應用已安裝的核心和應用程式提供的架構更改,然後驗證哪些資料庫查詢速度較慢。不要盲目添加索引,也不要假設 Nextcloud 命令db:add-missing-indices是 ownCloud 10 支援的修復命令:目前的 ownCloud Server 10.15 OCC 參考文件中並未包含此命令。索引可以加快匹配讀取的速度,但每個新增的索引都會佔用儲存空間,並增加插入、更新和刪除操作的開銷。
這種方法適用於 ownCloud 頁面、檔案清單或應用程式運作緩慢,且管理員可以存取伺服器和資料庫的情況。如果整個實例運行緩慢,或者實例運行在 SQLite 資料庫且有多個活躍用戶,則在將索引視為問題原因之前,請先檢查更廣泛的資料庫和部署設定。
資料庫索引是一種輔助結構,它可以幫助資料庫在不掃描整個表的情況下定位行。 ownCloud 及其應用程式在其架構中定義了表、列和索引。核心和應用程式更新可能包含架構遷移,從而建立或調整這些索引。因此,保持應用程式架構的最新狀態是最安全的第一步。
在進行任何更改之前,請先了解以下差異:
索引並非提升速度的萬能鑰匙。增加索引數量或許能提升特定查詢的效能,但同時也會增加資料庫大小和寫入延遲。最終結果取決於查詢結構、表格大小、資料分佈、資料庫引擎以及快取狀態。
sudo -u www-data ./occ status。記下 ownCloud 版本、已安裝的應用程式版本、資料庫類型和表格前綴config/config.php。將 `< www-dataweb server account>` 替換為您的發行版上的 Web 伺服器帳戶。mysqldump --single-transaction以 MySQL 相容資料庫為例;請根據您的配置調整主機、使用者和資料庫值。切勿將資料庫密碼直接寫入 shell 歷史記錄或進程清單中。如果 ownCloud 核心或應用程式有待更新,請使用適用於您安裝方式的文件化升級流程。在傳統的 Linux 安裝中,OCC 指令以 HTTP 使用者身分從 ownCloud 根目錄執行。依照手動升級說明操作時,命令如下:
sudo -u www-data ./occ upgrade
請勿在檔案僅部分更新的安裝上執行此命令。請先準備好匹配的發布版本文件,並按照該版本的官方升級步驟進行操作。對於 Docker 部署,請使用容器文件中提供的 OCC 調用,而不是指向其他 PHP 環境的主機路徑。
請閱讀完整的命令輸出和日誌。成功的命令應該不會報告遷移失敗;但這並不保證所有緩慢的查詢都已修復。如果更新報告了遷移錯誤,請停止並調查該錯誤,而不是重複重新執行命令或手動編輯模式表。如果涉及應用程式遷移,請查閱特定版本的 ownCloud 升級文件並諮詢應用程式維護人員。
ownCloud 10.15 OCC 參考文件列出了諸如db:convert-type`db`、db:convert-mysql-charset`db` 和`db` 之類的資料庫指令db:restore-default-row-format,但沒有列出 `db` 。由於命令的可用性可能會因版本和已安裝的程式碼而異,您可以使用 `command`或 `command`命令db:add-missing-indices檢查您自己的實例。如果後者報告未知命令,請勿將 Nextcloud 教程中的命令複製到 ownCloud 中。請查閱您所使用的 ownCloud 版本的文檔,並使用受支援的升級或應用遷移路徑。sudo -u www-data ./occ list dbsudo -u www-data ./occ help db:add-missing-indices
手動編寫 SQL 是資料庫管理員針對已驗證的查詢問題所採取的措施,並非 ownCloud 的常規最佳化。首先,捕捉特定的慢查詢,並執行引擎的計劃檢查工具,例如EXPLAIN針對 MySQL/MariaDB 或 PostgreSQL 的工具。確認該計劃是否掃描了過多的行,以及是否忽略了現有索引。 ownCloud 表前綴是可配置的,因此切勿假定表名以 `.` 開頭oc_。
在建立索引之前,請將建議的欄位與查詢的篩選條件、連接和排序順序進行比較。複合索引的列順序至關重要;複製現有索引可能會增加成本,而不會最佳化執行計劃。請諮詢資料庫管理員 (DBA),以了解資料庫版本行為、線上或並發索引建置支援、磁碟空間、鎖定影響以及回滾流程。這些細節取決於引擎和版本,因此對於每個 ownCloud 10 安裝,並不存在一個絕對安全的 SQL 語句。
不要僅僅因為名稱看起來冗餘就修改 ownCloud 表或刪除索引。此類變更可能會與後續的核心或應用程式遷移衝突,並可能導致使用與您檢查的查詢不同的查詢的功能發生故障。請保留任何手動架構變更的書面記錄,並確保在復原或遷移後可以重新建立。如果缺少的索引是產品架構缺陷,請優先使用受支援的 ownCloud 修補程式或應用程式版本。
如果方案已經使用了合適的索引,那麼添加另一個索引不太可能解決其他原因造成的延遲。請將這些選項與觀察到的瓶頸進行比較:
更換資料庫引擎是遷移項目,而非簡單的索引調整。 ownCloud 提供occ db:convert-type支援的轉換方案;請先查看其前提條件,做好備份,並在將使用者引導至轉換後的實例之前進行測試。
在類似條件下重複相同的使用者操作,並比較查詢持續時間、執行計劃、檢查的行數、資料庫 I/O 和伺服器負載。確認相關的 ownCloud 頁面或應用程式正常完成,且日誌中沒有顯示任何資料庫或遷移錯誤。單次請求速度的提升並不代表整體效能的提升;請比較多個具代表性的請求,並考慮熱緩存的影響。
如果使用適當的索引後,相同查詢仍然很慢,請檢查鎖定、儲存、網路延遲、PHP 工作進程以及資料庫資源限制。如果查詢計劃或表格結構不明確,請在手動執行 DDL 語句之前停止操作,並聯絡 DBA 或 ownCloud 支援人員進行審核。可靠的結果是,資料庫模式與已安裝的 ownCloud 版本和已測量的查詢保持一致,並且沒有未追蹤的索引變更。
僅對 ownCloud 的 Web 根目錄設定 AllowOverride All,驗證活動的 Apache 虛擬主機,然後安全地重新載入以恢復 .htaccess 規則。
啟用 ownCloud 的企業審計應用程序,將 admin_audit 事件路由到受保護的日誌文件,並確認正在記錄真實使用者的操作。
讓 Keycloak 的 realm 頒發者、Web 用戶端和使用者聲明保持一致,以便 ownCloud Infinite Scale 能夠可靠地在 Web 和行動用戶端上登入使用者。
使用 ownCloud 的 occ 指令傳輸擁有的檔案和要傳出的共享,以了解哪些內容會保留下來,並在刪除舊帳戶之前驗證存取權限。
了解何時需要關注 ownCloud 10 資料庫索引,如何安全地應用受支援的架構更新,以及何時查詢調優或資料庫變更是更好的解決方案。
透過外部儲存將 Windows 或 Samba 網路共用連接到 ownCloud,驗證憑證,並安全地排查無法存取的資料夾問題。
刪除一個帳戶或所有使用者的所有已儲存的 ownCloud Server Classic 檔案版本,並區分完全清除和基於保留期限的過期。
以正確的順序檢查伺服器 URL、手機網路、HTTPS 端點和伺服器日誌,即可追蹤 ownCloud 行動連線被拒絕的原因。
將按需作業運行替換為 systemd 定時器,該定時器每 15 分鐘執行一次 ownCloud 支援的 occ system:cron 命令。
透過 Apache、Nginx 或反向代理程式追蹤 WebDAV 請求,然後使用經過驗證的 PROPFIND 測試確認 ownCloud 同步功能正常。