Nextcloud on Rocky Linux 9


前置準備

  • Rocky Linux 9.5 ISO
  • nextcloud下載連結

Get ZIP file
https://download.nextcloud.com/server/releases/latest.zip
https://nextcloud.com/install/#community-projects

LAB流程說明

  • 建立nexcloud 可登入使用
  • 增加硬碟擴充LVM空間大小

系統安裝設定

  • 一、電腦名稱及IP設定

1-1 設定電腦名稱

1
[root@localhost ~]# hostnamectl set-hostname nextcloud-lab

1-2 設定固定IP位置

1
2
3
4
5
6
7
8
9
10
[root@nextcloud-lab ~]# nmcli con show
NAME UUID TYPE DEVICE
ens160 74bcd31b-fe43-3483-9d5a-73f5d1d00389 ethernet ens160
lo 19f4e765-55c5-445d-ae87-6bad00b3b78f loopback lo

[root@nextcloud-lab ~]# nmcli con modify ens160 ipv4.method manual ipv4.addresses 192.168.133.170/24 ipv4.gateway 192.168.133.2 ipv4.dns 192.168.133.2 +ipv4.dns 8.8.8.8 autoconnect yes

[root@nextcloud-lab ~]# nmcli con up ens160
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3)

  • 二、安裝套件及更新系統

2-1 . Install epel-release 額外套件庫

EPEL(Extra Packages for Enterprise Linux)
EPEL 提供了許多 RHEL 預設軟體庫中沒有的軟體,但仍然保持高穩定性及相容性,常用於伺服器環境。

1
[root@nextcloud-lab ~]# dnf install epel-release

2-2. Update 系統

1
[root@nextcloud-lab ~]# dnf  update -y

2-3 安裝及啟動 Apache Web Server

  • 安裝
1
[root@nextcloud-lab ~]# dnf install httpd -y
  • 啟動
1
2
3
[root@nextcloud-lab ~]# systemctl enable --now httpd
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.

2-4 安裝及啟動MariaDB(資料庫)

  • 安裝
1
[root@nextcloud-lab ~]# dnf install mariadb-server -y
  • 啟動
1
2
3
4
[root@nextcloud-lab ~]# systemctl enable --now mariadb
Created symlink /etc/systemd/system/mysql.service → /usr/lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/mysqld.service → /usr/lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/multi-user.target.wants/mariadb.service → /usr/lib/systemd/system/mariadb.service.

2-4-1 MariaDB初始安全設置

1
[root@nextcloud-lab ~]# mysql_secure_installation

先不輸入現有的root密碼,按下enter

unix認證,按下預設Y

變更資料庫 Root密碼

移除匿名使用者 > 依照預設 Y

禁止Root遠端登入,依預設Y即可

移除測試資料庫及重新讀取資料表 > 皆預設Y即可

2-4-2 建立Nextcloud資料庫及使用者

  • 登入資料庫
1
2
3
4
5
6
7
8
9
10
11
[mysql -u root -p](<[root@nextcloud-lab ~]# mysql -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 13
Server version: 10.5.22-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]%3E>)
  • 建立nextcloud資料庫
1
2
3
4
5
MariaDB [(none)]> CREATE DATABASE nextcloud;
Query OK, 1 row affected (0.001 sec)

MariaDB [(none)]>

  • 建立cloudadm 使用者及密碼(password)
1
2
3
4
5
MariaDB [(none)]> CREATE USER 'cloudadm'@'localhost' IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]>

  • 授予cloudadm使用者在nextcloud 所有資料表的權限
1
2
3
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nextcloud.* TO 'cloudadm'@'localhost';
Query OK, 0 rows affected (0.001 sec)

⚠️ 注意:
  1. 安全性考量:避免使用 GRANT ALL PRIVILEGES 在生產環境中使用,可能會帶來潛在的安全風險。
  2. 使用更精細的權限控制:例如僅授予 SELECT, INSERT, UPDATE, DELETE 等必要權限。
    ``
  • 存檔及離開
1
2
3
4
5
MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> EXIT;

2-5 安裝PHP及必要的擴充模組

1
[root@nextcloud-lab ~]# dnf install dnf-utils http://rpms.remirepo.net/enterprise/remi-release-9.rpm -y

2-5-1 重置PHP模組

1
2
3
4
5
6
7
8
[root@nextcloud-lab ~]# dnf module reset php -y
Remi's Modular repository for Enterprise Linux 9 - x86_64 124 kB/s | 770 kB 00:06
Safe Remi's RPM repository for Enterprise Linux 9 - x86_64 283 kB/s | 1.2 MB 00:04
Last metadata expiration check: 0:00:01 ago on Tue 07 Jan 2025 03:40:16 PM CST.
Dependencies resolved.
Nothing to do.
Complete!

2-5-2 啟用Remi儲存庫PHP版本

1
2
3
4
5
6
7
8
9
10
11
[root@nextcloud-lab ~]# dnf module enable php:remi-8.2 -y
Last metadata expiration check: 0:00:50 ago on Tue 07 Jan 2025 03:40:16 PM CST.
Dependencies resolved.
========================================================================================================
Package Architecture Version Repository Size
========================================================================================================
Enabling module streams:
php remi-8.2

Transaction Summary

2-5-3 安裝PHP及常用的模組

1
[root@nextcloud-lab ~]# dnf install php php-mysqlnd php-xml php-zip php-curl php-gd php-intl php-mbstring php-apcu php-bcmath php-gmp php-imagick php-fpm php-cli php-opcache -y

==Remi儲存庫說明==

為什麼使用 Remi 儲存庫?

  • 官方 DNF 儲存庫的 PHP 版本較舊(通常是穩定但非最新)。
  • Remi 提供更新版本,適合開發新專案或使用最新 PHP 功能。
  • 如果需要穩定版本且不需要最新功能,則可使用官方 DNF 套件庫即可。

2-5-4 修改PHP設定

1
[root@nextcloud-lab ~]# vim /etc/php.ini

``
修改內容

  • memory_limit = 512M

    限制 PHP 腳本可使用的記憶體量,以防止過大的記憶體使用導致伺服器崩潰
    處理大型檔案、圖像處理或複雜計算時可調高此值

  • upload_max_filesize = 2G

    限制透過 PHP 上傳的單一檔案最大可接受的檔案大小,可自訂

  • post_max_size = 2G

    限制 PHP 處理的 POST 數據總量,包含檔案上傳與表單資料。
    注意post_max_size 必須 ≥ upload_max_filesize,否則大檔案無法正常上傳

  • date.timezone = Asia/Taipei

    設定時區

2-5-5 重新啟動PHP-FPM服務

1
[root@nextcloud-lab ~]# systemctl restart php-fpm.service

三、下載並安裝nextcloud

3-1 先移動到/var/www目錄下

1
2
[root@nextcloud-lab ~]# cd /var/www/
[root@nextcloud-lab www]#

3-2 使用curl將下載的檔案輸出檔名為nextcloud.zip

1
[root@nextcloud-lab ~]# curl -o nextcloud.zip https://download.nextcloud.com/server/releases/latest.zip

3-3 解壓縮 nextcloud.zip

1
[root@nextcloud-lab www]# unzip nextcloud.zip

3-4 變更資料夾擁有者權限

1
2
[root@nextcloud-lab www]# chown -R apache:apache nextcloud
[root@nextcloud-lab www]# chmod -R 755 nextcloud

四、設定Apache

4-1 安裝ssl模組

1
[root@nextcloud-lab www]# dnf install mod_ssl -y

4-2 啟用mod_rewrite模組

1
[root@nextcloud-lab nextcloud]# echo "LoadModule rewrite_module modules/mod_rewrite.so" >> /etc/httpd/conf/httpd.conf

說明:

  • mod_rewrite 用於網址重寫與轉址。
  • 可用於 SEO 優化、強制 HTTPS、網址美化 和 轉址。
  • 需要透過 .htaccess 或 Apache 主設定檔實作。
  • 啟用後,需重啟 Apache 才能生效。

4-2 設定 nextcloud.conf

1
[root@nextcloud-lab www]# vim /etc/httpd/conf.d/nextcloud.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
<VirtualHost *:80>
DocumentRoot "/var/www/nextcloud"
ServerName 192.168.133.170

<Directory /var/www/nextcloud>
AllowOverride All
Require all granted
</Directory>

ErrorLog /var/log/httpd/nextcloud_error.log
CustomLog /var/log/httpd/nextcloud_access.log combined
</VirtualHost>

4-3 編輯ssl.conf

1
2
3
4
[root@nextcloud-lab conf.d]# pwd
/etc/httpd/conf.d
[root@nextcloud-lab conf.d]#
[root@nextcloud-lab conf.d]# vim ssl.conf
  • 搜尋 將註解去除,並修改為LAB環境設置

修改前:

1
2
#DocumentRoot "/var/www/html"
#ServerName www.example.com:443

修改後:

1
2
DocumentRoot "/var/www/nextcloud"
ServerName 192.168.133.170:443

4-3 放行防火牆https 服務 及 reload服務

1
2
3
[root@nextcloud-lab www]# firewall-cmd  --permanent --add-service=https
success
[root@nextcloud-lab www]# firewall-cmd --reload

4-4 重啟 Apache服務

1
[root@nextcloud-lab nextcloud]# systemctl restart httpd

五、登入Nextcloud

5-1 登入cloudadm進行初始化

5-2 依需求安裝推薦的應用程式

5-3 登入後畫面

5-3 新增使用者帳號

5-4 也可下載Windows 版本APP進行安裝使用 (如同onedrive、google…)

六、使用LVM擴充nextcloud容量

6-1 將LAB環境中第二顆額外的100GB硬碟,擴充至 /root LV

6-2 先新增硬碟分割及調整type為LVM格式

1
[root@nextcloud-lab nextcloud]# fdisk /dev/nvme0n2

6-3 新增分割 , 輸入 n

6-4 新增primary 分割,number選擇1 > Enter > Enter

6-5 已建立分割完成

6-6 輸入t > 8e (LVM格式),也可輸入L檢視

6-7 輸入W寫入

6-8 lsblk 檢視已分割出 nvme0n2p1

6-9 建立PV

1
2
3
4
[root@nextcloud-lab nextcloud]# pvcreate /dev/nvme0n2p1
Physical volume "/dev/nvme0n2p1" successfully created.
[root@nextcloud-lab nextcloud]#

6-10 確認目前的VG大小

6-11 擴充VG大小

1
2
3
[root@nextcloud-lab nextcloud]# vgextend rl  /dev/nvme0n2p1
Volume group "rl" successfully extended
[root@nextcloud-lab nextcloud]#

6-12 查看VG大小

6-12 擴充LV大小

1
2
3
4
[root@nextcloud-lab nextcloud]# lvextend -l +25599 /dev/rl/root
Size of logical volume rl/root changed from %3C47.93 GiB (12270 extents) to <147.93 GiB (37869 extents).
Logical volume rl/root successfully resized.
[root@nextcloud-lab nextcloud]#>)

6-13 確認LV大小已擴充至147.93G

1
2
3
4
5
6
7
[root@nextcloud-lab nextcloud]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
home rl -wi-ao---- 23.40g
root rl -wi-ao---- <147.93g
swap rl -wi-ao---- 7.66g
[root@nextcloud-lab nextcloud]#

6-14 修正檔案系統大小,此時/dev/mapper/rl-root還是舊大小容量

6-15 更新檔案系統

1
[root@nextcloud-lab ~]# xfs_growfs /dev/rl/root

6-16 已順利擴充檔案系統大小完成

作者

Sam Peng

發表於

2025-05-09

更新於

2025-05-13

許可協議