Skip to main content

安裝 Nextcloud 主程式

1 系統基本環境

基本的作業系統部份,在本文中我們採用 Rocky Linux 8,可以參考Rocky Linux 8 基本安裝將基本的系統安裝起來,另外在環境部份採 Apache + MariaDB + PHP,可參考在 Rocky Linux 8 安裝 Apache + MariaDB + PHP文件,而不是快速佈署體驗,如果只是想試試 Nextcloud 的基本功能的話,可以參考相關的Nextcloud 快速安裝體驗文件。

2 下載及解壓縮最新 Nextcloud 安裝檔

在撰寫本文件時,Nextcloud 的最新版本為 24.0.1,您可以至官方網站中確認最新版本,在說明的過程中,我們會選用 zip 這種較常見的壓縮形式,並搭配 Rocky Linux 8 本機的指令來完成解壓縮及下載,相關需要安裝的工具皆已在基本安裝的說明文件中提及,若沒有安裝的朋友,可以至前述的連結參考安裝。

首先,我們先要下載最新的 Nextcloud 安裝檔,指令如下:

$ export VER="24.0.1"
$ cd /tmp
$ wget -c https://download.nextcloud.com/server/releases/nextcloud-${VER}.zip
以續傳的方式下載,若中斷可以重新再執行一次。

接下來解壓縮檔案,並將解壓的結果移動到網頁伺服器主目錄中。

$ unzip nextcloud-${VER}.zip
$ sudo mv nextcloud /var/www/html
$ sudo mkdir /var/www/html/nextcloud/data -> 因為 data 目錄一開始不會建立,若有啟用 selinux 要先自行建立。若覺得麻煩,可以關掉 selinux 來嚐試。
$ rm nextcloud-${VER}.zip
$ sudo chown apache.apache /var/www/html/nextcloud -R
3 準備資料庫資訊

接下來要新增一組新的資料庫,點選畫面最上方的【資料庫】,並在【建立新資料庫】的名稱部份填入【nextcloud】(範例,可依你自己的需求)、【編碼與規則】的部份選擇【utf8mb4_unicode_ci】,最後請按下【建立】鍵完成。

image-1654222575191.png

完成的畫面如下所示。

image-1654222677881.png

為了權限問題,建議資料庫的 root 使用者帳號不要在開放的網站上使用,可透過 phpMyAdmin 新增一組權限較少的一般用戶帳號給網站專案使用,接下來我們利用 phpMyAdmin 資料庫管理工具來初始化 Nextcloud 的資料庫,依照前述文件的內容,請先連線到管理介面,點選「使用者帳號」->「新增使用者帳號」,畫面如下。

image-1654221293310.png

輸入資料庫「使用者名稱」、「主機名稱」及二次密碼,其中建議主機名稱的部份填入「localhost」。

image-1654221505512.png

最後把畫面拉到最下方,按下「執行」鍵完成用戶新增的作業,完成後,畫面上方會出現此次新增用戶的指令,如下所示,貼上給大家參考一下,也可以透過指令列來建立新的用戶。

CREATE USER 'nextclouduser'@'localhost' IDENTIFIED VIA mysql_native_password USING '***';GRANT USAGE ON *.* TO 'nextclouduser'@'localhost' REQUIRE NONE WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;

接著再點選畫面中的「資料庫」連結,選擇畫面下方剛新增的 nextcloud 資料庫名稱,並按下執行。

image-1654829864996.png

接下來先使用「全選」的選項,如下圖所示。

image-1654831873835.png

最後按下執行,完成資料庫權限的設定,參考的指令如下:

GRANT ALL PRIVILEGES ON `nextcloud`.* TO 'nextclouduser'@'localhost' WITH GRANT OPTION;
4 設定 SELinux

預設 Rocky Linux 8 是啟用 SELinux 模式的,若沒有關閉的話(建議開啟),需執行以下指令,nextcloud 主目錄的路徑,請依照實際的狀況調整:

先安裝 SELinux 管理工具:

$ sudo yum install policycoreutils-python-utils -y
上次中介資料過期檢查:2:19:43 前,時間點為西元2022年06月03日 (週五) 17時43分24秒。
依賴關係解析完畢。
========================================================================================
 軟體包                             架構         版本                軟體庫        大小
========================================================================================
安裝:
 policycoreutils-python-utils       noarch       2.9-19.el8          baseos       252 k
將安裝依賴項目:
 checkpolicy                        x86_64       2.9-1.el8           baseos       345 k
 python3-audit                      x86_64       3.0.7-2.el8.2       baseos        86 k
 python3-libsemanage                x86_64       2.9-8.el8           baseos       127 k
 python3-policycoreutils            noarch       2.9-19.el8          baseos       2.2 M
 python3-setools                    x86_64       4.3.0-3.el8         baseos       623 k

處理事項摘要
========================================================================================
安裝  6 軟體包

總下載大小:3.6 M
安裝的大小:10 M
下載軟體包:
(1/6): python3-audit-3.0.7-2.el8.2.x86_64.rpm           247 kB/s |  86 kB     00:00
(2/6): policycoreutils-python-utils-2.9-19.el8.noarch.r 514 kB/s | 252 kB     00:00
(3/6): checkpolicy-2.9-1.el8.x86_64.rpm                 635 kB/s | 345 kB     00:00
(4/6): python3-libsemanage-2.9-8.el8.x86_64.rpm         500 kB/s | 127 kB     00:00
(5/6): python3-policycoreutils-2.9-19.el8.noarch.rpm    2.1 MB/s | 2.2 MB     00:01
(6/6): python3-setools-4.3.0-3.el8.x86_64.rpm           593 kB/s | 623 kB     00:01
----------------------------------------------------------------------------------------
總計                                                    1.8 MB/s | 3.6 MB     00:02
執行處理事項檢查
處理事項檢查成功。
執行處理事項測試
處理事項測試成功。
執行處理事項
  準備        :                                                                     1/1
  正在安裝    : python3-setools-4.3.0-3.el8.x86_64                                  1/6
  正在安裝    : python3-libsemanage-2.9-8.el8.x86_64                                2/6
  正在安裝    : python3-audit-3.0.7-2.el8.2.x86_64                                  3/6
  正在安裝    : checkpolicy-2.9-1.el8.x86_64                                        4/6
  正在安裝    : python3-policycoreutils-2.9-19.el8.noarch                           5/6
  正在安裝    : policycoreutils-python-utils-2.9-19.el8.noarch                      6/6
  執行小令稿  : policycoreutils-python-utils-2.9-19.el8.noarch                      6/6
  核驗        : checkpolicy-2.9-1.el8.x86_64                                        1/6
  核驗        : policycoreutils-python-utils-2.9-19.el8.noarch                      2/6
  核驗        : python3-audit-3.0.7-2.el8.2.x86_64                                  3/6
  核驗        : python3-libsemanage-2.9-8.el8.x86_64                                4/6
  核驗        : python3-policycoreutils-2.9-19.el8.noarch                           5/6
  核驗        : python3-setools-4.3.0-3.el8.x86_64                                  6/6

已安裝:
  checkpolicy-2.9-1.el8.x86_64
  policycoreutils-python-utils-2.9-19.el8.noarch
  python3-audit-3.0.7-2.el8.2.x86_64
  python3-libsemanage-2.9-8.el8.x86_64
  python3-policycoreutils-2.9-19.el8.noarch
  python3-setools-4.3.0-3.el8.x86_64

完成!

接下來新增以下設定:

$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/data(/.*)?'
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/config(/.*)?'
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/apps(/.*)?'
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/.htaccess'
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/.user.ini'
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/3rdparty/aws/aws-sdk-php/src/data/logs(/.*)?'
$ sudo restorecon -Rv '/var/www/html/nextcloud/'

如果要移除這個 Nextcloud 的安裝路徑的話,那要下以下的指令。

$ sudo semanage fcontext -d '/var/www/html/nextcloud/data(/.*)?'
$ sudo semanage fcontext -d '/var/www/html/nextcloud/config(/.*)?'
$ sudo semanage fcontext -d '/var/www/html/nextcloud/apps(/.*)?'
$ sudo semanage fcontext -d '/var/www/html/nextcloud/.htaccess'
$ sudo semanage fcontext -d '/var/www/html/nextcloud/.user.ini'
$ sudo semanage fcontext -d '/var/www/html/nextcloud/3rdparty/aws/aws-sdk-php/src/data/logs(/.*)?'
$ sudo restorecon -Rv '/var/www/html/nextcloud/'
5 進行安裝作業

接下來進行 Nextcloud 主程式安裝,連結位置預設採用 http://yourhostname/nextcloud,出現的安裝畫面如下所示:

image-1654257261225.png

如上圖所示,請先自行設定管理者的「使用者名稱」及「密碼」,並且點擊畫面上的「設定資料庫」選擇「MySQL/MariaDB」的部份,以下欄位請填寫對應的值:填入上述流程設定的資料庫使用者名稱、資料庫使用者密碼、資料庫名稱,然後按下「安裝」鍵繼續,系統就會開始進行程式安裝的動作,完成後,不知道為什麼 Nextcloud 在 22 版本後,會導到一個不存在的位置(可能是我們設定的原因),沒關係,當出現「無法連上這個網站」字樣後,請重新自行以:

 http://yourhostname/nextcloud/index.php/core/apps/recommended 

來登入即可,畫面會如下所示:

image-1654258349080.png

請按下「安裝推薦的應用程式」繼續,系統會幫你初始化一些常見的 Apps,不過一般來說,我們會建議若不確定要啟用哪些應用程式的話,可以等到後續再自行啟用即可,完成後會自動登入 admin 帳號,畫面如下所示:

image-1654258521450.png

這樣就完成最簡單的安裝工作了。

6 登入及調整 phpMyAdmin 帳號權限

登入的連結,預設是 http://yourhostname/nextcloud,畫面如下,帳號密碼就是剛才在設定資料庫資訊最一開始所設定的。

image-1654258691753.png

還記得剛剛新增的資料庫帳號嗎?記得要把他的權限調降回來,只要一般的權限就可以了,請點選「使用者帳號」找到剛剛建立的資料庫用戶 (本例為:nextclouduser),並點選「編輯權限」,如下圖所示。

image-1654830061806.png

然後選擇「資料庫」,再選擇針對 nextcloud 資料庫選擇「編輯權限」的動作,如下圖所示:

image-1654832041088.png

最後請取消「管理」這塊功能,如下圖所示:

image-1654832095991.png

完成後把畫面往下拖曳,按下「執行」鍵即完成設定,同樣會出現對應的指令,未來可參考使用。

REVOKE ALL PRIVILEGES ON `nextcloud`.* FROM 'nextclouduser'@'localhost'; REVOKE GRANT OPTION ON `nextcloud`.* FROM 'nextclouduser'@'localhost'; GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, CREATE VIEW, EVENT, TRIGGER, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EXECUTE ON `nextcloud`.* TO 'nextclouduser'@'localhost';
7 無法安裝的可能問題

如果你發現無法正確的安裝 Nextcloud 的話,有可能是以下 2 個因素:

  • 沒有正確設定好 SELinux 的模式

如果沒有設定 SELinux 的話,在安裝過程中 SELinux 就會限制 Nextcloud 存取目錄或是檔案而造成無法安裝的問題,此時可以關閉 SELinux,或是依照本文第 4 部份來調整即可。

  • 沒有安裝所需要的 PHP 套件

若無法安裝,也有可能沒有安裝到必要套件,Nextcloud 的安裝頁面會提供提示給您。

8 其它參考文件

如果您想在 Fedora 系統上測試 Nextcloud,也可以參考: