主機SERVER虛擬化(六) – CENTOS 8 安裝 Nextcloud 私有雲

完成LEMP(Linux + Nginx + MariaDB + PHP)的安裝後,就可以開始架站了!這次的任務是要架設NextCloud私有雲,安裝完閉後就可以有私人的雲端空間囉!接下來~漢克會介紹ESXi的安裝,透過ESXi Server建立虛擬環境。
computer

Nextcloud可以做什麼?

他就是類似DropBox或GoogleDrive的雲端服務~
不同的是,這個服務我們可以自己安裝、設定!
你的硬碟有多大,這個雲端服務的空間就有多大!
漢克的SERVER有2T的硬碟空間,切個1.5T做雲端空間就非常好用了~
今天就要來介紹 安裝 Nextcloud
NextCloud還提供桌面應用程式,透過應用程式可以同步雲端資料。
也提供手機APP程式~
手機APP可設定自動上傳照片,而且照片是原檔備份不會被壓縮!
其他檔案的上傳/備份就是基本功能~
漢克之後會做一篇操作的介紹。

安裝 Nextcloud !話不多說,我們GO下去!

到官網看最新的STABLE 版本,透過瀏覽器直接下載下來吧~
下載下來後,放到你架站的目錄底下,然後直接解壓縮~

假設漢克的架站目錄放在

/var/www/html/

在這個路徑下放上Nextcloud解壓縮的資料,
執行以下指令建立data資料夾 :

mkdir /var/www/html/nextcloud/data

將nextcloud資料夾下的所有檔案權限全部指派給nginx,
加上 -R 會將 nextcloud 以下的全部資料夾和檔案指派給 nginx。

chown -R nginx:nginx /var/www/html/nextcloud

要怎麼樣才能讓nginx抓到 /var/www/html/nextcloud 這個站台?
並且讓這個站台運作呢?
只要在 Nginx 設定 nextcloud 的config檔即可~
NGINX、DB、PHP快取的設定,請直接參考官網~
照著官網做是最安全的,照著做通常不會出錯,網路上也都找的到解決方法~

安裝過程中難免會有錯誤,
除錯的過程通常是很痛苦的~
除了查看是不是有漏了什麼步驟沒做?
最實際的方法就是查看LOG,這樣才能對症下藥!!
這邊分享查看LOG的方式,比較好針對問題GOOLE答案
使用tail 指令可以看見LOG檔的最後幾行內容~
是非常方便且實用的指令!

DB LOG:
    tail /var/log/mariadb/mariadb.log
Nextcloud LOG:
    tail  /var/www/html/nextcloud/data/nextcloud.log
Nginx LOG:
    tail /var/log/nginx/access.log
    tail /var/log/nginx/error.log

架站的過程中,只要查看以上LOG,
都能用關鍵字找到答案!
每個人遇到的狀況不一,我這邊也實在是難一一說明。

以下記錄我遇到的一些問題,希望可以幫助到你~
照著官網完成設定後,第一次進入nextcloud畫面,
會需要設定一個root帳號、密碼。
接下來要設定有權限的DB帳號/密碼以及DB名稱。
請先執行以下指令(請注意!單引號內中文請輸入自己命名的「英文」名稱,單引號不要拿掉)

建立DB:

CREATE DATABASE IF NOT EXISTS '你的DB名稱' CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

建立使用者:

CREATE USER '你的帳號'@'localhost' IDENTIFIED BY '你的密碼';

設定使用者的DB權限:

GRANT ALL PRIVILEGES on 你的DB名稱.* to '你的帳號'@'localhost' IDENTIFIED BY '你的密碼' WITH GRANT OPTION;
GRANT ALL PRIVILEGES on 你的DB名稱.* to '你的帳號'@'%' IDENTIFIED BY '你的密碼' WITH GRANT OPTION;

完成設定後,我還是無法成功啟用nextcloud~
執行以下,查看LOG:

tail /var/www/html/nextcloud/data/nextcloud.log

發現以下訊息:

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax CREATE USER 'user'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'

參考這篇 Nextcloud Issue
發現是SQL語法的問題!

CREATE USER 'user'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'

把 WITH mysql_native_password 語法拿掉就正常了~
要怎麼拿掉這段語法呢?
我們只需要修改以下路徑程式

/var/www/html/nextcloud/lib/private/Setup/MySQL.php

使用VIM語法進入編輯模式,CREATE USER的語法有兩段,
找出兩段CREATE USER 語法的程式片段,
將 WITH mysql_native_password 的部份刪掉~
修改後的兩段語法如下:

 $query = "CREATE USER '$name'@'localhost' IDENTIFIED BY '$password'";
 $query = "CREATE USER '$name'@'%' IDENTIFIED BY '$password'";

儲存後重啟NGINX,就可以正常使用 nextcloud 囉!

systemctl restart nginx.service

進到頁面後,可以在右上角的選單選取「設定」
如下圖:

nextcloud setting
點選右上角的「設定」

再點選左邊選單的「概觀」,
點選後上方會自動掃描 nextcloud,並將異常或安全性建議show出來~
利用關鍵字就可以google到答案了~

nextcloud overview
點選左側選單「概觀」就可以看到最上方顯示異常資訊

漢克剛架好nextcloud 時,有出現以下訊息:

資料庫缺少了某些索引值。由於在一個龐大的表中新增索引需要一些時間,因此他們並不會被自動新增。您可執行 "occ db:add-missing-indices" 來手動新增那些遺失的索引值。當索引值新增完成後,查詢的速度通常會變得快許多
.在資料表 "oc_calendarobjects_props" 中,找不到索引值 "calendarobject_calid_index" 。
.在資料表 "oc_schedulingobjects" 中,找不到索引值 "schedulobj_principuri_index" 。

執行以下指令就解決囉:

sudo -u nginx php occ db:add-missing-indices

第二個問題是DB的格式問題:

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

執行以下指令,讓這個提示訊息消失吧!

sudo -u nginx php occ db:convert-filecache-bigin

排除這些問題基本上私有雲就架設完成了~
這個時候你可以安裝 Nextcloud的免費APP,
透過設定讓手機的照片自動備份上去。
也可以安裝桌面程式,設定好資料夾~
就可以將SERVER的檔案同步下來,
也可以丟檔案到資料夾中,讓資料夾中的檔案同步到SERVER!
有一個自有、獨立的私有雲,真的非常方便!漢克非常推薦

走到這一步,我們已經把 server 的服務都架設好了!
接下來就是將舊 CentOS7主機 安裝 Vmware ESXi!
並將虛擬機匯入!

如果你對自架 Server有興趣~
漢克的硬體配置可以參考:【自組NAS】我的 NAS Server 硬體配置

分享在 facebook
Facebook
分享在 google
Google+
分享在 twitter
Twitter
分享在 linkedin
LinkedIn
分享在 email
Email

發佈留言