跳至内容

使用 Nextcloud 的云服务器

关于 Rocky Linux 9.x

此过程应该适用于 Rocky Linux 9.x。区别在于您可能需要更改某些仓库的版本引用以将其更新到版本 9。如果您使用的是 Rocky Linux 9.x,请注意,这在 8.6 和 9.0 中都经过测试,但最初是为 8.6 编写的。

先决条件和假设

  • 运行 Rocky Linux 的服务器(您可以在任何 Linux 发行版上安装 Nextcloud,但此过程将假设您使用的是 Rocky)。
  • 对从命令行进行安装和配置操作有很高的舒适度。
  • 了解命令行编辑器。在此示例中,我们使用的是 *vi*,但如果您有喜欢的编辑器,也可以使用。
  • 虽然 Nextcloud 可以通过 snap 应用程序安装,但我们将只记录 .zip 文件安装。
  • 我们将应用 Apache *sites enabled* 文档(链接到下方)中的概念来进行目录设置。
  • 我们还将使用 *mariadb-server* 加固程序(稍后也会链接到该程序)来进行数据库设置。
  • 在本文档的整个过程中,我们将假设您是 root,或者您可以通过使用 *sudo* 来进行操作。
  • 我们在配置中使用以下示例域名:

介绍

如果您负责大型(甚至小型)公司的服务器环境,您可能会被云应用程序所吸引。在云中执行操作可以腾出您自己的资源用于其他事情,但这也有缺点,即对公司数据的控制权的丧失。如果云应用程序遭到破坏,您公司的數據也可能遭到破坏。

将云带回您自己的环境是收回数据安全性的方法,但需要付出时间和精力。有时,这是值得付出的代价。

Nextcloud 提供了一个开源云,以安全性、灵活性和可扩展性为核心原则。请注意,构建 Nextcloud 服务器是一项很好的练习,即使您最终选择将云置于场外。以下过程介绍如何在 Rocky Linux 上设置 Nextcloud。

Nextcloud 安装

安装和配置仓库和模块

对于此安装,我们将需要两个仓库。我们需要安装 EPEL(企业 Linux 附加软件包)和用于 PHP 8.3 的 Remi 仓库

注意

需要 PHP 最低版本 7.3 或 7.4,而 Rocky Linux 版本 7.4 不包含 Nextcloud 所需的所有软件包。我们将使用 Remi 仓库中的 PHP 8.3 代替。

要安装 EPEL,请运行

dnf install epel-release

要安装 Remi 仓库,请运行(注意:如果您使用的是 Rocky Linux 9.x,请在下面的 *release-* 旁边替换 9)

dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm

然后再次运行 *dnf upgrade*。

运行以下命令以查看可以启用的 php 模块列表

dnf module list php

这将为您提供 Rocky Linux 8.x 的以下输出(Rocky Linux 9.x 将显示类似的输出)

Rocky Linux 8 - AppStream
Name                    Stream                     Profiles                                     Summary                                 
php                     7.2 [d]                    common [d], devel, minimal                   PHP scripting language                  
php                     7.3                        common [d], devel, minimal                   PHP scripting language                  
php                     7.4                        common [d], devel, minimal                   PHP scripting language               
php                     7.4                        common [d], devel, minimal                   PHP scripting language                  
Remi's Modular repository for Enterprise Linux 8 - x86_64
Name                    Stream                     Profiles                                     Summary                                 
php                     remi-7.2                   common [d], devel, minimal                   PHP scripting language                  
php                     remi-7.3                   common [d], devel, minimal                   PHP scripting language                  
php                     remi-7.4                   common [d], devel, minimal                   PHP scripting language                  
php                     remi-8.0                   common [d], devel, minimal                   PHP scripting language                  
php                     remi-8.1                   common [d], devel, minimal                   PHP scripting language                  
php                     remi-8.2                   common [d], devel, minimal                   PHP scripting language                  
php                     remi-8.3                   common [d], devel, minimal                   PHP scripting language                  
Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

我们想获取 Nextcloud 兼容的最新 PHP,目前是 8.3,因此我们将通过以下方式启用该模块

dnf module enable php:remi-8.3

要查看这如何更改模块列表的输出,请再次运行模块列表命令,您将在 8.3 旁边看到 "[e]"

dnf module list php

输出再次相同,除了这行

php                    remi-8.3 [e]                   common [d], devel, minimal                  PHP scripting language

安装软件包

此处的示例使用 Apache 和 mariadb,因此要安装我们需要的软件包,我们只需执行以下操作

dnf install httpd mariadb-server vim wget zip unzip libxml2 openssl php83-php php83-php-ctype php83-php-curl php83-php-gd php83-php-iconv php83-php-json php83-php-libxml php83-php-mbstring php83-php-openssl php83-php-posix php83-php-session php83-php-xml php83-php-zip php83-php-zlib php83-php-pdo php83-php-mysqlnd php83-php-intl php83-php-bcmath php83-php-gmp

配置

配置 Apache

将 *apache* 设置为在启动时启动

systemctl enable httpd

然后启动它

systemctl start httpd

创建配置

在 *先决条件和假设* 部分中,我们提到我们将使用 Apache Sites Enabled 过程来进行配置。点击该过程并设置基本信息,然后返回到本文档以继续。

对于 Nextcloud,我们需要创建以下配置文件。

vi /etc/httpd/sites-available/com.yourdomain.nextcloud

您的配置文件应如下所示

<VirtualHost *:80>
  DocumentRoot /var/www/sub-domains/com.yourdomain.nextcloud/html/
  ServerName  nextcloud.yourdomain.com
  <Directory /var/www/sub-domains/com.yourdomain.nextcloud/html/>
    Require all granted
    AllowOverride All
    Options FollowSymLinks MultiViews
    <IfModule mod_dav.c>
      Dav off
    </IfModule>
  </Directory>
</VirtualHost>

完成后,保存您的更改(对于 *vi*,使用 Shift+:+w+q+!)。

接下来,在 /etc/httpd/sites-enabled 中创建一个指向该文件的链接

ln -s /etc/httpd/sites-available/com.yourdomain.nextcloud /etc/httpd/sites-enabled/

创建目录

如上面配置中所述,需要创建DocumentRoot。这可以通过以下方法完成

mkdir -p /var/www/sub-domains/com.yourdomain.com/html

这是我们将安装 Nextcloud 实例的位置。

配置 PHP

我们需要为 PHP 设置时区。为此,请使用您选择的文本编辑器打开 php.ini 文件

vi /etc/opt/remi/php83/php.ini

然后找到以下行

;date.timezone =

我们需要删除注释 (;) 并设置我们的时区。对于我们的示例时区,我们可以输入以下内容

date.timezone = "America/Chicago"

或者

date.timezone = "US/Central"

然后保存并退出 php.ini 文件。

请注意,为了保持一致性,php.ini 文件中的时区应该与您机器的时区设置匹配。您可以通过以下方法查看当前时区设置

ls -al /etc/localtime

假设您在安装 Rocky Linux 时设置了时区,并且您居住在中央时区,则您应该会看到类似以下内容

/etc/localtime -> /usr/share/zoneinfo/America/Chicago

配置 mariadb-server

设置mariadb-server 在启动时启动

systemctl enable mariadb

然后启动它

systemctl restart mariadb

同样,如前所述,我们将使用 此处 中找到的用于强化mariadb-server 的设置过程进行初始配置。

安装 .zip

接下来的步骤假设您通过ssh 远程连接到 Nextcloud 服务器,并打开了远程控制台

  • 导航到 Nextcloud 网站
  • 将鼠标悬停在Get Nextcloud 上,将显示一个下拉菜单。
  • 点击Server Packages
  • 右键点击Download Nextcloud 并复制链接地址(不同浏览器对此的语法不同)。
  • 在 Nextcloud 服务器上的远程控制台中,键入wget,然后输入空格,并粘贴您刚刚复制的内容。您应该会看到类似以下内容:wget https://download.nextcloud.com/server/releases/nextcloud-21.0.1.zip(注意版本可能不同)。
  • 按回车键后,.zip 文件的下载将开始,并将在短时间内完成。

下载完成后,使用以下命令解压缩 Nextcloud zip 文件

unzip nextcloud-21.0.1.zip

复制内容并更改权限

完成解压缩步骤后,您应该在/root 中看到一个名为“nextcloud”的新目录。进入该目录

cd nextcloud

并将内容复制或移动到我们的DocumentRoot

cp -Rf * /var/www/sub-domains/com.yourdomain.nextcloud/html/

或者

mv * /var/www/sub-domains/com.yourdomain.nextcloud/html/

现在一切都在正确的位置,下一步是确保 apache 拥有该目录。为此,请运行以下命令

chown -Rf apache.apache /var/www/sub-domains/com.yourdomain.nextcloud/html

出于安全原因,我们还希望将data 文件夹从DocumentRoot 内部移动到外部。使用以下命令完成此操作

mv /var/www/sub-domains/com.yourdomain.nextcloud/html/data /var/www/sub-domains/com.yourdomain.nextcloud/

配置 Nextcloud

现在是乐趣开始的时候!首先,确保您的服务正在运行。如果您遵循上述步骤,它们应该已经在运行。我们在那些初始服务启动之间执行了几个步骤,因此让我们重新启动它们,以确保万无一失

systemctl restart httpd
systemctl restart mariadb

如果一切顺利重启,并且没有问题,那么您就可以继续下一步了。

为了进行初始配置,我们希望实际在 Web 浏览器中加载站点

http://your-server-hostname/(替换为您的实际主机名)

假设您到目前为止一切顺利,您应该会看到一个 Nextcloud 设置屏幕

nextcloud login screen

我们想做几件事,与默认显示的内容不同

  • 在网页顶部,在Create an admin account 位置,设置用户名和密码。为了本文档的方便,我们输入admin 并设置一个强密码。请记住将其保存在安全的地方(例如密码管理器中),以免丢失!即使您已经在该字段中输入了内容,也不要按 Enter 键,直到我们完成所有设置字段!
  • Storage & database 部分,将Data folder 位置从默认的文档根目录更改为我们之前移动数据文件夹的位置:/var/www/sub-domains/com.yourdomain.nextcloud/data
  • Configure the database 部分,通过点击该按钮将SQLite 更改为MySQL/MariaDB
  • Database userDatabase password 字段中输入您之前设置的 MariaDB root 用户名和密码。
  • Database name 字段中,键入nextcloud
  • localhost 字段中,键入(3306 是默认的mariadb 连接端口)。

完成所有设置后,点击Finish Setup,您应该就可以开始使用了。

浏览器窗口将刷新一段时间,然后通常不会重新加载站点。再次在浏览器窗口中输入您的 URL,您应该会看到默认的第一个页面。

此时,您的管理员用户已经(或应该)登录,并且有几个旨在帮助您快速入门的信息页面。“Dashboard” 是用户首次登录时看到的界面。管理员用户现在可以创建其他用户、安装其他应用程序以及执行许多其他任务。

“Nextcloud Manual.pdf” 文件是用户手册,用户可以从中了解可用的功能。管理员用户应该阅读或至少浏览管理员手册中的重点内容 Nextcloud 网站

下一步

此时,请记住,这将是您用于存储公司数据的服务器。重要的是使用防火墙将其锁定,设置 备份,使用 SSL 保护站点,以及完成任何其他必要的工作以确保数据的安全。

结论

决定将公司云部署在内部需要经过仔细评估。对于那些决定将公司数据保存在本地而非外部云主机的人来说,Nextcloud 是一个不错的选择。

作者:Steven Spencer

贡献者:Ezequiel Bruni,Ganna Zhyrnova