本教程适用于以下操作系统版本

  • Debian 12 (Bookworm)
  • Debian 11 (Bullseye)
  • Debian 8 (Jessie)

本页内容

  • 先决条件
  • 安装依赖项
  • 升级 PHP Pear
  • 配置 MariaDB 服务器
  • 下载 ownCloud 源代码
  • 配置 Apache2 虚拟主机
  • 通过命令行安装 ownCloud
  • ownCloud 性能调优
  • 结论

ownCloud 是一款用于创建类似 Google Drive 和 DropBox 的文件托管服务的软件解决方案。它是一款免费且开源的文件托管软件,允许你在自己的服务器上搭建自托管的文件托管服务。ownCloud 提供了服务器应用程序(ownCloud 软件套件的主要组件),以及可以安装在 Linux、Windows、macOS、Android 和 iOS 等多种操作系统上的客户端应用程序。

ownCloud 主要使用 PHP、JavaScript 和 Go 编写。它允许你轻松同步日历事件,并存储压缩包、图片和文件。它还允许你管理任务、通讯录等。ownCloud 是一款可扩展的应用程序,允许你在它之上安装额外的应用程序。

按照本指南,逐步了解如何在 Debian 12 上安装 ownCloud 软件。了解如何在 LAMP 栈上通过命令行安装 ownCloud,并使用来自 Letsencrypt 的 SSL/TLS 证书保护 ownCloud 的安全。

先决条件

在开始之前,请确保你具备以下条件:

  • 一台 Debian 12 服务器。
  • 一个具有管理员权限的非 root 用户。
  • 一个指向服务器 IP 地址的域名。

安装依赖项

在接下来的部分中,你将安装 ownCloud 所需的软件包依赖项。以下是你将安装的部分软件包:

  • Apache2 Web 服务器。
  • MariaDB 数据库服务器。PHP 7.4 —— ownCloud 目前尚不支持 PHP 8.x 版本,因此你需通过第三方存储库安装 PHP 7.4。
  • Redis 服务器。
  • 其他软件包,例如 ImageMagick、Certbot、Pear 以及 PHP 扩展。

首先,运行以下命令,在系统中安装一些依赖项。

sudo apt install lsb-release ca-certificates curl -y

在 Debian 12 上安装 ownCloud 私有云盘

现在运行以下命令,将 PHP GPG 密钥和存储库添加到你的 Debian 系统中。遗憾的是,ownCloud 目前仍不支持 PHP 8.x,因此你必须通过第三方存储库在 Debian 机器上安装 PHP 7.4。

sudo curl -sSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg
sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'

接下来,运行以下命令更新并刷新你的 Debian 存储库。

sudo apt update

在 Debian 12 上安装 ownCloud 私有云盘

然后通过执行以下 apt install 命令安装 ownCloud 的依赖项。借此,你将安装 LAMP 栈(Apache2、MariaDB 和 PHP 7.4)、Certbot、Redis、额外的 PHP 扩展以及 ImageMagick。

sudo apt install apache2 mariadb-server imagemagick certbot python3-certbot-apache smbclient redis-server unzip rsync libapache2-mod-php7.4 php7.4 php7.4-intl php7.4-mysql php7.4-mbstring php7.4-imagick php7.4-igbinary php7.4-gmp php7.4-bcmath php7.4-curl php7.4-gd php7.4-zip php7.4-imap php7.4-ldap php7.4-bz2 php7.4-ssh2 php7.4-common php7.4-json php7.4-xml php7.4-dev php7.4-apcu php7.4-redis libsmbclient-dev php-pear php-phpseclib

输入 y 以继续安装。

在 Debian 12 上安装 ownCloud 私有云盘

依赖项安装完成后,通过执行以下命令逐一验证它们。

运行以下命令验证 apache2 服务,以确保该服务正在运行。

sudo systemctl is-enabled apache2
sudo systemctl status apache2

以下输出表明 apache2 已启用且正在运行。

在 Debian 12 上安装 ownCloud 私有云盘

使用以下命令验证 mariadb 服务。

sudo systemctl is-enabled mariadb
sudo systemctl status mariadb

输出应类似,显示 enabled 即确认 mariadb 已启用,显示 active (running) 即确认 mariadb 正在运行。

在 Debian 12 上安装 ownCloud 私有云盘

现在使用以下命令验证 Redis。

sudo systemctl is-enabled redis
sudo systemctl status redis

Redis 服务器应如下处于运行状态且已启用:

在 Debian 12 上安装 ownCloud 私有云盘

接下来,运行以下命令配置 Debian 机器上的默认 PHP 版本。

sudo update-alternatives --config php

将默认 PHP 版本选择为 PHP 7.2。

在 Debian 12 上安装 ownCloud 私有云盘

运行以下命令配置其他 PHP 工具以使用 PHP 7.4。

sudo update-alternatives --set phar /usr/bin/phar7.4
sudo update-alternatives --set phar.phar /usr/bin/phar.phar7.4
sudo update-alternatives --set phpize /usr/bin/phpize7.4
sudo update-alternatives --set php-config /usr/bin/php-config7.4

之后,使用以下命令验证默认 PHP 版本及部分已启用的扩展。

php -v
php -m

以下输出确认 PHP 7.2 已安装并成为 Debian 机器上的默认 PHP 版本。

在 Debian 12 上安装 ownCloud 私有云盘

最后,使用以下命令查看 Certbot 的二进制路径及其版本。

which certbot
certbot --version

你应该会看到 Certbot 2.1.0 已安装到 /usr/bin/certbot 。

在 Debian 12 上安装 ownCloud 私有云盘

升级 PHP Pear

安装完依赖项后,下一步是将 Pear 软件包升级到最新版本,这可以通过 Pear 命令行完成。

执行以下命令创建新的临时目录 /tmp/pear/cache,并将 pear 版本升级到 1.10.13 。

sudo mkdir -p /tmp/pear/cache
sudo pear upgrade --force --alldeps http://pear.php.net/get/PEAR-1.10.13

在安装过程中,你应看到类似以下的输出:

在 Debian 12 上安装 ownCloud 私有云盘

接下来,运行以下 pear 命令以清除缓存、更新频道并升级所有软件包。

sudo pear clear-cache
sudo pear update-channels
sudo pear upgrade --force
sudo pear upgrade-all

完成后,使用以下命令验证 PEAR 版本。

pear version

你应该会看到 Pear 已更新到 v1.10.13 。

在 Debian 12 上安装 ownCloud 私有云盘

配置 MariaDB 服务器

在接下来的部分中,你将通过 mariadb-secure-installation 实用工具创建并保护你的 MariaDB 服务器安装。然后,你将创建 ownCloud 要使用的新数据库和用户。

要保护 MariaDB 服务器,请在终端上运行以下命令。

sudo mariadb-secure-installation

在此过程中,系统会询问你一些 MariaDB 的配置。输入 Y 接受配置,或输入 n 拒绝它。以下是系统会询问你的部分 MariaDB 配置:

  • 切换到 unix_socket 认证?输入 n 并按回车。默认的 MariaDB root 用户已经受到保护。你也可以输入 y 选择是来启用它。
  • 更改 root 密码?输入 y 确认并设置新的 MariaDB root 密码。
  • 删除匿名用户?输入 y 确认。
  • 禁止 root 远程登录?输入 y 确认。如果你使用 MariaDB root 用户,将只允许本地连接。
  • 删除测试数据库及其访问权限?输入 y 确认并删除默认的 'test' 数据库。
  • 最后,再次输入 y 以重新加载 MariaDB 服务器上所有表的权限并应用新的更改。

保护 MariaDB 之后,你将创建 ownCloud 要使用的新数据库和用户。为此,你必须通过 mariadb 客户端登录到 MariaDB 服务器。

执行以下命令登录到 MariaDB 服务器。在提示时输入你的 MariaDB root 密码。

sudo mariadb -u root -p

现在执行以下 MariaDB 查询,为 ownCloud 创建新的数据库和用户。在本示例中,你将创建一个名为 owncloud 的新数据库、一个名为 owncloud 的用户,密码为 password 。

CREATE DATABASE owncloud;
CREATE USER IF NOT EXISTS 'owncloud'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON owncloud.* TO 'owncloud'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;

在 Debian 12 上安装 ownCloud 私有云盘

最后,通过执行以下查询验证用户 owncloud 的权限。

SHOW GRANTS FOR 'owncloud'@'localhost';

你应该会看到用户 owncloud 能够访问数据库 owncloud ,该数据库将用于你的 ownCloud 安装。

在 Debian 12 上安装 ownCloud 私有云盘

现在输入 quit 退出 MariaDB 服务器。

下载 ownCloud 源代码

配置完 MariaDB 服务器后,你将下载 ownCloud 源代码,并为 ownCloud 安装配置 DocumentRoot 目录,设置合适的权限和所有权。

首先,将你的工作目录切换到 /var/www 。

cd /var/www

然后,运行以下 wget 命令,将 ownCloud 源代码及相应的校验和文件下载到你的系统。

wget https://download.owncloud.com/server/stable/owncloud-complete-latest.tar.bz2
wget https://download.owncloud.com/server/stable/owncloud-complete-latest.tar.bz2.sha256

现在运行以下命令以确保 ownCloud 源代码的完整性。如果成功,你应该会看到输出 " owncloud-complete-latest.tar.bz2: OK "。

sudo sha256sum -c owncloud-complete-latest.tar.bz2.sha256 < owncloud-complete-latest.tar.bz2

接下来,运行以下命令解压 ownCloud 源代码。ownCloud 源代码将被解压到 /var/www/owncloud 目录,该目录也将用作 DocumentRoot 目录。

tar -xf owncloud-complete-latest.tar.bz2

在 Debian 12 上安装 ownCloud 私有云盘

最后,运行以下命令将 /var/www/owncloud 目录的所有权更改为用户 www-data 。

sudo chown -R www-data:www-data /var/www/owncloud

配置 Apache2 虚拟主机

在本节中,你将创建一个新的虚拟主机配置,用于运行 ownCloud。你还将通过 Certbot 从 Letsencrypt 生成 SSL/TLS 证书。因此在开始之前,请确保你的域名已指向服务器 IP 地址。

首先,运行以下命令启用 ownCloud 将要使用的一些 Apache2 模块。

sudo a2enmod rewrite env dir mime unique_id headers ssl

在 Debian 12 上安装 ownCloud 私有云盘

现在使用以下 nano 编辑器命令创建新的虚拟主机文件 /etc/apache2/sites-available/owncloud.conf 。

sudo nano /etc/apache2/sites-available/owncloud.conf

插入以下配置,并确保更改 ServerName 参数中的域名。

<VirtualHost *:80>
  ServerName howtoforge.local
  ServerAlias www.howtoforge.local
  DocumentRoot /var/www/owncloud
  
  ErrorLog ${APACHE_LOG_DIR}/howtoforge.local-error.log
  CustomLog ${APACHE_LOG_DIR}/howtoforge.local-access.log combined
  Alias /owncloud "/var/www/owncloud/"
  <Directory /var/www/owncloud/>
    Options +FollowSymlinks
    AllowOverride All
    <IfModule mod_dav.c>
    Dav off
    </IfModule>
    SetEnv HOME /var/www/owncloud
    SetEnv HTTP_HOME /var/www/owncloud
  </Directory>
 
</VirtualHost>

完成后保存文件并退出编辑器。

接下来,运行以下 a2ensite 命令以激活虚拟主机文件 owncloud.conf,并通过 apachectl 命令验证 Apache2 语法。如果语法正确,你应该会看到输出 " Syntax OK "。

sudo a2ensite owncloud.conf
sudo apachectl configtest

现在运行以下 systemctl 命令以重启 apache2 服务并应用你所做的更改。

sudo systemctl restart apache2

在 Debian 12 上安装 ownCloud 私有云盘

最后,运行以下 certbot 命令为你的 ownCloud 域名生成 SSL/TLS 证书。请务必将命令中的域名和电子邮件地址替换为你自己的信息。

sudo certbot --apache --agree-tos --no-eff-email --redirect --hsts --staple-ocsp --email 
[email protected]
 -d howtoforge.local

一旦过程完成,你的 SSL/TLS 证书将位于 /etc/letsencrypt/live/howtoforge.local 目录中。同时,你的虚拟主机文件 owncloud.conf 将自动配置为使用 HTTPS。

通过命令行安装 ownCloud

至此,你已经安装并配置了 ownCloud 所需的全部依赖项。你可以通过 Web 浏览器或命令行开始安装步骤。在本示例中,你将通过命令行安装 ownCloud。

将你的工作目录切换到 /var/www/owncloud 。

cd /var/www/owncloud

执行以下命令通过命令行安装 ownCloud。请务必更改 MariaDB 数据库以及 ownCloud 新管理员用户和密码的相关信息。

sudo -u www-data /var/www/owncloud/occ maintenance:install \
   --database "mysql" \
   --database-name "owncloud" \
   --database-user "owncloud"\
   --database-pass "password" \
   --admin-user "admin" \
   --admin-pass "adminpassowncloud"

安装完成后,你应该会看到以下输出。

在 Debian 12 上安装 ownCloud 私有云盘

接下来,使用以下 nano 编辑器命令打开 ownCloud 的 config.php 脚本。

sudo nano /var/www/owncloud/config/config.php

将你的 ownCloud 域名添加到 trusted_domains 中,如下所示。

  'trusted_domains' =>
  array (
    0 => 'localhost',
    1 => 'howtoforge.local',
  ),

完成后保存并关闭文件。

现在打开你的 Web 浏览器并访问你的 ownCloud 域名,例如 http://hwdoamin.io/ 。你将被重定向到安全的 HTTPS 连接,并进入 ownCloud 登录页面。

输入你的管理员用户名和密码,然后点击 Login(登录)。

在 Debian 12 上安装 ownCloud 私有云盘

如果一切顺利,你应该会看到类似以下的 ownCloud 仪表盘。

在 Debian 12 上安装 ownCloud 私有云盘

ownCloud 性能调优

既然你已经安装了 ownCloud,在最后一部分中你将添加新配置以增强 ownCloud 安装。你将创建 ownCloud 的新的 crontab,并将 Redis 集成到 ownCloud 安装中。

通过执行以下命令为 ownCloud 创建新的 cron 任务。

sudo crontab -u www-data -e

选择你习惯的文本编辑器,并输入以下配置。这样,你将每 15 分钟执行一次命令 " /usr/bin/php -f /var/www/owncloud/occ system:cron "。

*/15  *  *  *  * /usr/bin/php -f /var/www/owncloud/occ system:cron

完成后保存并关闭文件。

接下来,再次使用 nano 编辑器命令打开 ownCloud 的 config.php 文件。

sudo nano /var/www/owncloud/config/config.php

将你的 Redis 服务器添加为 memcache.locking,如下所示:

<?php>
....
....
    'filelocking.enabled' => true,
    'memcache.local' => '\OC\Memcache\APCu',
    'memcache.locking' => '\OC\Memcache\Redis',
    'redis' => [
        'host' => 'localhost',
        'port' => 6379,
    ],
....
....
);

完成后保存并退出文件。

现在返回 ownCloud 仪表盘,点击用户图标,然后选择 Settings(设置)。

在 Debian 12 上安装 ownCloud 私有云盘

点击 General(常规)菜单,并查看 Security and Setup warnings(安全和设置警告)部分,以获取针对你 ownCloud 安装的详细建议。

在 Debian 12 上安装 ownCloud 私有云盘

结论

恭喜!你已逐步完成了在 Debian 12 服务器上 ownCloud 的安装。你已通过 LAMP 栈(Apache2、MariaDB 和 PHP)安装了 ownCloud,使用来自 Letsencrypt 的 SSL/TLS 证书保护了 ownCloud,并将 Redis 服务器集成到了 ownCloud 安装中。