Nextcloud Q & A 問題處理

這一篇是記錄我在使用上所遇到的問題,處理方式

外部儲存設定 (SMB/CIFS)


之前環境被我玩壞結果我重新安裝二三次發顯到目前,外部儲存無法正常建立起來,結果是 NextCloud 本身系統 Bug,目前我所安裝的版本是 17.0.1 目前官方最新版本。在官方的 GitHub 討論區有人反應此問題,並且提出決解方案,但是不知道官方會何時修復此問題,解決方案如下

在 NextCloud 的目錄下有一個檔案,vim /var/www/html/nextcloud/apps/files_external/lib/Lib/Backend/SMB.php ,修改 SMB.php 設定檔內容如下

#修改前
 ->addParameters([
    new DefinitionParameter('host', $l->t('Host')),
	new DefinitionParameter('share', $l->t('Share')),
	(new DefinitionParameter('root', $l->t('Remote subfolder')))
		->setFlag(DefinitionParameter::FLAG_OPTIONAL),
	(new DefinitionParameter('domain', $l->t('Domain')))
		->setFlag(DefinitionParameter::FLAG_OPTIONAL),
	(new DefinitionParameter('show_hidden', $l->t('Show hidden files')))
		->setType(DefinitionParameter::VALUE_BOOLEAN)
		->setFlag(DefinitionParameter::FLAG_OPTIONAL),
	(new DefinitionParameter('timeout', $l->t('Timeout')))
		->setType(DefinitionParameter::VALUE_HIDDEN)
 ])

#修改後
   
 ->addParameters([
    new DefinitionParameter('host', $l->t('Host')),
	new DefinitionParameter('share', $l->t('Share')),
	(new DefinitionParameter('root', $l->t('Remote subfolder')))
		->setFlag(DefinitionParameter::FLAG_OPTIONAL),
	(new DefinitionParameter('domain', $l->t('Domain')))
		->setFlag(DefinitionParameter::FLAG_OPTIONAL),
	(new DefinitionParameter('show_hidden', $l->t('Show hidden files')))
		->setType(DefinitionParameter::VALUE_BOOLEAN)
		->setFlag(DefinitionParameter::FLAG_OPTIONAL),
	(new DefinitionParameter('timeout', $l->t('Timeout')))
		->setType(DefinitionParameter::VALUE_HIDDEN)
        ->setFlag(DefinitionParameter::FLAG_OPTIONAL), #增加這一行即可
 ])  


參考解決方案



NextCloud、Collabora Online 結合 CloudFlare 的問題


BUBU 我在測試過程中,發現在會有一些程式無法正常顯示,發現到是問題是卡在 CloudFlare 的設定上,Rocket Loader 這個設定,這是加速載入 JavaScript 檔案,這可以在 CloudFlare 上的頁面規則上將此功能關閉。

  • 在規則頁面新增規則

NC-CF-01.png

  • 填入您的網域之後選擇 Rocket Loader 之後存檔即可

NC-CF-02.png



參考解決方案



NextCloud 更新後出現問題 資料庫的有些欄位缺少big int.格式轉換


BUBU 將 17.0.1 更新為 17.0.2 時出現這樣子的狀況

  • 資料庫的有些欄位缺少big int.格式轉換。因為攔位格式轉換需要一些時間,所以沒有自動轉換。你可以執行'occ db:convert-filecache-bigin'手動完成轉換,轉換時Nextcloud服務必須處於離線狀態。詳情請參閱 the documentation page about this
    • mounts.storage_id
    • mounts.root_id
    • mounts.mount_id

nc-bigint-01.png

進到 nextcloud 目錄下執行 cd /var/www/html/nextcloud 執行下面指令, nginx 修改成你目前正在使用的 web 服務權限

sudo -u nginx php occ db:convert-filecache-bigint
  • 執行結果如下,輸入 y 即可,再去看是否還會出現這樣子訊息

nc-bigint-02.png



參考解決方案



出現 occ: command not found 錯誤


BUBU 在進入後台看安全及設定警告的時候出現這樣子的錯誤訊息,因此記錄一下這樣子的狀況怎麼排除掉

  • 如果在後台更新時候看到這樣子的狀況

nc-occ-01.png

  • 麻煩請先進到 nextcloud 目錄下,然後下一段指令來進行修正
sudo -u nginx php /var/www/html/nextcloud/occ db:add-missing-indices
  • 下面的圖示是在執行後所出現的訊息,跑完之後再去後台更新那,重新整理頁面看是否還會出現,正常是不會再出現的

nc-occ-02.png



參考解決方案



PHP 的 OPcache 功能並未被妥善設定


BUBU 在安全及設定警告的時候發現一直出現這樣子的訊息,所以試著照著官方建議去修改

  • 官方建議的設定值如下
opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1
  • 然後再到 vim /etc/php.d/ 照著官方給予的設定值去設定,然後重啟 php 服務 systemctl restart php-fpm,重啟以後再把網頁重新整理看是否還會出現這樣子的訊息


參考解決方案



設定記憶體快取 (memcache)


BUBU 在後台查看安全及設定警告,看到我還未尚設定 memcache 記憶體快取服務。

  • 那在設定之前要先安裝 memcache 服務,那我的環境是 CentOS 7 ,所以以下的指令是以 CentOS 指令下去安裝的。
# 安裝必要的套件服務
yum install -y redis memcached php-pecl-apcu php-pecl-redis

# 設定自動啟動服務
systemctl enable redis memcached

# 啟重服務
systemctl start redis memcached

# 在 php 的設定檔啟動 acpu 設定,將 apc.enable_cli 改為1
vim /etc/php.d/40-apcu.ini
  • 再到 nextcloud 目錄的設定 memcache 啟用服務
# 進到 nextcloud 設定檔
cd /var/www/html/nextcloud/config

# 編輯 config.php 此設定檔
vim config.php
  • 在該設定檔最下面加入以下幾行的參數,設定完後存檔,再去看安全及設定警告那裡是否還會出現記憶體快取服務的訊息。
'memcache.local' => '\OC\Memcache\APCu',
'memcache.distributed' => '\OC\Memcache\Redis',
'redis' =>[
  'host' => 'localhost',
  'port' => 6379,
 ],
'memcache.locking' => '\OC\Memcache\Redis',


參考解決方案