本教程适用于以下操作系统版本
- 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

现在运行以下命令,将 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

然后通过执行以下 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 以继续安装。

依赖项安装完成后,通过执行以下命令逐一验证它们。
运行以下命令验证 apache2 服务,以确保该服务正在运行。
sudo systemctl is-enabled apache2
sudo systemctl status apache2
以下输出表明 apache2 已启用且正在运行。

使用以下命令验证 mariadb 服务。
sudo systemctl is-enabled mariadb
sudo systemctl status mariadb
输出应类似,显示 enabled 即确认 mariadb 已启用,显示 active (running) 即确认 mariadb 正在运行。

现在使用以下命令验证 Redis。
sudo systemctl is-enabled redis
sudo systemctl status redis
Redis 服务器应如下处于运行状态且已启用:

接下来,运行以下命令配置 Debian 机器上的默认 PHP 版本。
sudo update-alternatives --config php
将默认 PHP 版本选择为 PHP 7.2。

运行以下命令配置其他 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 版本。

最后,使用以下命令查看 Certbot 的二进制路径及其版本。
which certbot
certbot --version
你应该会看到 Certbot 2.1.0 已安装到 /usr/bin/certbot 。

升级 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
在安装过程中,你应看到类似以下的输出:

接下来,运行以下 pear 命令以清除缓存、更新频道并升级所有软件包。
sudo pear clear-cache
sudo pear update-channels
sudo pear upgrade --force
sudo pear upgrade-all
完成后,使用以下命令验证 PEAR 版本。
pear version
你应该会看到 Pear 已更新到 v1.10.13 。

配置 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;

最后,通过执行以下查询验证用户 owncloud 的权限。
SHOW GRANTS FOR 'owncloud'@'localhost';
你应该会看到用户 owncloud 能够访问数据库 owncloud ,该数据库将用于你的 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

最后,运行以下命令将 /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

现在使用以下 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

最后,运行以下 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"
安装完成后,你应该会看到以下输出。

接下来,使用以下 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(登录)。

如果一切顺利,你应该会看到类似以下的 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(设置)。

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

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