如何在Ubuntu18.04上安装Ampache音乐流媒体服务器
作为 Write for DOnations 计划的一部分,作者选择了 Open Internet/Free Speech Fund 来接受捐赠。
介绍
Ampache 是一个开源音乐流媒体服务器,允许您在自己的服务器上托管和管理您的数字音乐收藏。 Ampache 可以将您的音乐流式传输到您的计算机、智能手机、平板电脑或智能电视。 这意味着您不必在要用来收听音乐的设备上维护音乐的多个副本。 使用 Ampache,您可以使用 Ampache 的 Web 界面在您的服务器上管理您的收藏并在任何地方收听。
在本教程中,您将安装和配置将为您的 Ampache 实例提供服务的 Apache Web 服务器和 PHP。 然后,您将创建一个 MySQL 数据库,Ampache 将使用它来存储其所有操作信息。 最后,您将上传您的音乐收藏,以便开始播放您的音乐。
先决条件
在开始本指南之前,您需要以下内容:
- 按照 Initial Server Setup with Ubuntu 18.04 教程设置一台 Ubuntu 18.04 服务器,包括非 root 用户、sudo 用户。
- 在您的服务器上安装了 Apache、MySQL 和 PHP,如 如何在 Ubuntu 18.04 上安装 Linux、Apache、MySQL、PHP (LAMP) 堆栈中所示。
- 配置为指向您的服务器的域名。 您可以通过参考 Domains 和 DNS 指南了解如何将域指向 DigitalOcean Droplets。
第 1 步 — 安装 Ampache
在此步骤中,您将 Ampache ZIP 存档下载到您的服务器,将其解压缩到其安装主目录,并进行一些必要的文件系统更改。
首先,以非 root 用户身份登录到您的服务器。 然后使用以下命令创建 Ampache 的主目录:
sudo mkdir /var/www/ampache
接下来,安装解压 Ampache 存档所需的 zip
实用程序:
sudo apt install zip
接下来,下载最新版本的 ZIP 存档。 您可以在 Ampache 的 GitHub 页面 上找到最新版本的链接。 在这些示例中,使用版本 4.1.1
:
wget https://github.com/ampache/ampache/releases/download/4.1.1/ampache-4.1.1_all.zip
接下来,使用 -d
选项将 ZIP 压缩包解压到 /var/www/ampache/
目录中:
sudo unzip ampache-4.1.1_all.zip -d /var/www/ampache/
接下来,设置 Ampache 文件的用户和组标识,以便 Apache 能够读取、写入和执行 Ampache 实例文件:
sudo chown --recursive www-data:www-data /var/www/ampache/
--recursive
选项使 chown
将 /var/www/ampache/
下所有文件和子目录的所有权和组标识更改为 Apache 的用户和组 www-data
。
接下来,重命名 ZIP 存档中包含的 .htaccess
文件。 .htaccess
文件包含 Apache 的安全和其他操作信息,但它们仅适用于文件扩展名 .htaccess
。 使用以下命令将提供的 .htaccess.dist
文件重命名为 .htaccess
:
sudo mv /var/www/ampache/rest/.htaccess.dist /var/www/ampache/rest/.htaccess sudo mv /var/www/ampache/play/.htaccess.dist /var/www/ampache/play/.htaccess sudo mv /var/www/ampache/channel/.htaccess.dist /var/www/ampache/channel/.htaccess
现在您将创建包含音乐文件的目录。 出于安全原因,最好在 Ampache 的安装目录之外创建此目录。 这样,恶意 Web 请求将无法读取或更改它,因为它位于 Ampache 的 DocumentRoot
之外。
使用以下命令创建目录 /data/Music
:
sudo mkdir -p /data/Music
然后更改其所有者和组身份,以便 Apache 可以对其进行读写:
sudo chown www-data:www-data /data/Music
要完成设置,您将安装 FFmpeg,这是一个将音频和视频从一种格式转换为另一种格式的实用程序。 例如,您可以使用它将 MP3 音乐文件转换为 OPUS 音乐文件。 Ampache 使用 FFmpeg 将音频从上传的格式动态转换为收听设备可以播放的格式。 这是一个称为 转码 的过程。
这很有用,因为并非所有设备都能够播放所有格式的音乐。 Ampache 可以检测播放设备支持的格式并自动以支持的格式提供您的音乐。
使用以下命令安装 FFmpeg:
sudo apt install ffmpeg
您现在已经为 Web 安装程序解压并准备了 Ampache 实例,并安装了 FFmpeg 实用程序。 接下来,您将配置 Apache 和 PHP 来为您的 Ampache 实例提供服务。
第 2 步 — 配置 Apache 和 PHP
在本节中,您将通过创建一个新的 VirtualHost 文件来配置 Apache,该文件将提供 Apache 为您的 Ampache 服务器域提供服务所需的配置。 您还将安装一些额外的 PHP 模块,以扩展 PHP 的功能以满足 Ampache 的要求
首先,安装一些未包含在默认 PHP 安装中的附加 PHP 模块:
sudo apt install php-mysql php-curl php-json php-gd php7.2-xml
这些模块提供以下附加功能:
php-mysql
— 使 PHP 能够与 MySQL 数据库通信。php-curl
— 使 PHP 能够使用 curl 实用程序从远程服务器下载文件,例如专辑封面。php-json
— 使 PHP 能够读取和操作 JSON 格式的文本文件。php-gd
— 使 PHP 能够操作和创建图像文件。php7.2-xml
— 使 PHP 能够读取和操作 XML 格式的文本文件。
接下来,使用 a2enmod
实用程序启用几个 Apache 模块:
sudo a2enmod rewrite expires
这些 Apache 模块允许 Apache 执行以下操作:
rewrite
— 按照 Ampache 提供的规则修改或重写 URL。expires
— 设置对象(例如图像)的缓存过期时间,以便浏览器更有效地存储它们。
现在,您将创建 VirtualHost
文件,该文件告诉 Apache 如何以及在何处加载 Ampache 实例。
注意: 如果您按照“如何在 Ubuntu 18.04 上安装 Linux、Apache、MySQL、PHP (LAMP) 堆栈”指南创建了一个使用您的 Ampache 域名的测试 VirtualHost
文件你必须禁用它。 使用 a2dissite
实用程序禁用它:
sudo a2dissite test_virtalhost_file
现在,使用文本编辑器在 /etc/apache2/sites-available/ampache.conf
创建并打开 VirtualHost
文件:
sudo nano /etc/apache2/sites-available/ampache.conf
将以下 VirtualHost
模板添加到您的文件中:
/etc/apache2/sites-available/ampache.conf
<VirtualHost *:80> ServerName your_domain DocumentRoot /var/www/ampache <Directory /var/www/ampache/> AllowOverride All Require all granted </Directory> RewriteEngine on CustomLog /var/log/apache2/ampache.access.log common ErrorLog /var/log/apache2/ampache.error.log </VirtualHost>
您必须将 your_domain
更改为您重定向到服务器的域名。 完成编辑此文件后,保存并退出编辑器。
此 VirtualHost
文件中的指令是:
ServerName
— Apache 将用于为您的 Ampache 实例提供服务的域名。DocumentRoot
— 服务器上 Ampache 实例所在的文件系统位置。 这与您在步骤 1 中将 ZIP 存档解压缩到的位置相同。Directory
- 此部分将配置传递给 Apache,该配置适用于路径中包含的文件和目录。RewriteEngine
— 启用重写 Apache 模块。CustomLog
- 创建一个日志文件,Apache 将使用它来记录您的 Ampache 服务器的所有访问日志。ErrorLog
- 创建一个日志文件,Apache 将使用它来记录您的 Ampache 服务器生成的所有错误日志。
接下来,使用 apachectl
实用程序检查您创建的 VirtualHost
文件是否有任何错误:
sudo apachectl configtest
如果您的配置不包含任何错误,您将在命令后看到以下输出:
OutputSyntax OK
如果您的配置确实包含错误,则输出将打印遇到错误的文件名和行号。
注意:如果你看到错误:
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
然后您需要在 /etc/apache2/apache2.conf
编辑 Apache 的主配置文件并添加以下行:
ServerName your_domain
接下来,使用 a2ensite
实用程序启用新的 VirtualHost
配置:
sudo a2ensite ampache
最终配置是可选的,但建议使用。 PHP中文件上传的默认设置是不能上传大于2MB的文件。 音乐文件往往比这个大,因此增加这个大小将允许您使用 Ampache 界面在您的音乐收藏中上传更大的文件。
使用以下命令打开 /etc/php/7.2/apache2/php.ini
:
sudo nano /etc/php/7.2/apache2/php.ini
并更改以下几行:
/etc/php/7.2/apache2/php.ini
. . . upload_max_filesize = 2M . . . post_max_size = 8M . . .
到:
/etc/php/7.2/apache2/php.ini
. . . upload_max_filesize = 100M . . . post_max_size = 110M . . .
您现在可以上传最大 100MB 的音乐文件。 如果您打算上传大于此大小的文件,请使用更大的值。 保存并退出文件。
最后,重新加载更新的 Apache 配置:
sudo systemctl reload apache2.service
您现在已将 Apache 配置为通过 HTTP 提供 Ampache。 接下来,您将获得 TLS 证书并配置 Apache 以使用它,以便您可以通过 HTTPS 安全地访问 Ampache。
第 3 步 — 启用 HTTPS
在此步骤中,您将使用 Certbot 实用程序获得免费的 Let's Encrypt TLS 证书,该实用程序启用 HTTPS 浏览。 Certbot 将创建证书,自动生成所需的 Apache 配置,并管理证书的自动续订。
这很重要,因为每次您登录 Ampache 时,您都会通过 Internet 发送您的用户名和密码。 如果您不使用 HTTPS,那么您的密码将以纯文本形式发送,在 Internet 上传输时可以读取该密码。
Ubuntu 的 LTS 版本往往没有最新的软件包,Certbot 程序也是如此。 Certbot 开发人员维护一个专用的 Ubuntu 存储库,称为 PPA,以便 Ubuntu 用户可以保留 Certbot 的最新副本。
使用以下命令安装 Certbot 存储库:
sudo add-apt-repository ppa:certbot/certbot
现在,安装 certbot
实用程序:
sudo apt install python-certbot-apache
接下来,使用 certbot
获取 TLS 证书:
sudo certbot --apache -d your_domain
--apache
选项使用 Apache 插件,使 Certbot 能够自动读取和配置 Apache。 -d your_domain
指定您希望 Certbot 为其创建证书的域名。
当您运行 certbot
命令时,您将被问到一系列问题。 系统将提示您输入电子邮件地址并同意服务条款。
如果 certbot
成功确认您控制了您的域,它将要求您配置 HTTPS 设置:
OutputPlease choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access. ------------------------------------------------------------------------------- 1: No redirect - Make no further changes to the webserver configuration. 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you're confident your site works on HTTPS. You can undo this change by editing your web server's configuration. ------------------------------------------------------------------------------- Select the appropriate number [1-2] then [enter] (press 'c' to cancel):
No redirect
:Apache 将通过 HTTP 和 HTTPS 为 Ampache 提供服务。Redirect
:Apache 会自动将所有 HTTP 连接重定向到 HTTPS。 这意味着您的 Ampache 服务器只能通过 HTTPS 访问。 此选项更安全,不会影响您的 Ampache 实例的行为方式。 这是推荐的选择。
最后,通过运行以下命令测试证书的自动续订是否成功:
sudo certbot renew --dry-run
--dry-run
选项意味着 certbot
将测试更新尝试,而不会对您的服务器进行任何永久性更改。 如果测试成功,输出将包括以下行:
OutputCongratulations, all renewals succeeded. The following certs have been renewed: /etc/letsencrypt/live/your_domain/fullchain.pem (success)
Apache 和 PHP 现在已准备好为您的 Ampache 实例提供服务。 在下一步中,您将创建和配置 Ampache 的数据库。
第 4 步 — 创建 MySQL 数据库
Ampache 使用 MySQL 数据库来存储播放列表、用户偏好等信息。 在这一步中,您将创建一个数据库和 MySQL 用户,Ampache 将使用它来访问它。
您将需要选择三个信息来完成以下说明来创建 Ampache 的数据库:
ampache_database
:Ampache 数据库的名称。database_user
:Ampache 将用来访问数据库的 MySQL 用户。 这不是系统用户,只能访问数据库。database_password
:数据库用户的密码。 请务必选择安全密码。
记下这些详细信息,因为稍后您将需要它们。
首先,使用 mysql
命令打开交互式 MySQL shell:
mysql --user=root --password
--user=root
以 MySQL root 用户身份打开 MySQL shell,--password
提示输入 root 用户的密码。
以下命令将创建一个空数据库:
CREATE DATABASE ampache_database;
接下来,创建 MySQL 用户:
CREATE USER 'database_user'@'localhost' IDENTIFIED BY 'database_password';
现在,授予新用户对数据库的完全访问权限:
GRANT ALL PRIVILEGES ON ampache_database.* TO 'database_user'@'localhost';
最后,通过运行以下命令检查新数据库是否存在:
SHOW DATABASES;
您将看到以下输出:
+--------------------+ | Database | +--------------------+ | information_schema | | ampache_database | | mysql | | performance_schema | | sys | +--------------------+ 5 rows in set (0.00 sec)
输入 exit;
退出 MySQL shell。
最后,通过尝试使用 database_user
登录 MySQL shell 来测试数据库、用户名和密码。
输入以下命令以新用户身份登录 MySQL shell:
mysql --user=database_user --password ampache_database
您现在已经创建了 Ampache 将使用的数据库。 您已完成服务器配置并准备好使用 Web 安装程序完成安装。
第 5 步 — 使用 Web 安装程序
在此步骤中,您将使用 Ampache 的 Web 安装程序通过向 Ampache 提供运行所需的信息来完成安装,例如 Web 界面管理员用户、数据库详细信息和其他设置。
通过在浏览器中输入 https://your_domain
开始 Web 安装。
选择安装语言
选择Ampache的界面语言,点击【X50X】开始配置【X73X】按钮继续。
要求
此页面是 Ampache 检查服务器是否满足其要求的地方。 此页面上的每一行都代表安装程序执行的一个测试,以确保所有必需的 PHP 模块都存在并且工作正常。 您会看到每个测试都有一个绿色复选标记,表示您的服务器已准备好使用 Ampache。
单击继续按钮进入下一页。
插入安帕奇数据库
如果 Ampache 的数据库不存在,此页面将创建它并对其进行格式化。 填写以下字段:
- 所需的数据库名称:
ampache_database
- MySQL 主机名:
localhost
- MySQL 端口(可选) :
- MySQL 管理用户名:
database_user
- MySQL 管理密码:
database_password
- 创建数据库 :
- 创建表 (ampache.sql) :
- 创建数据库用户 :
单击 插入数据库 按钮继续。
生成配置文件
此页面创建 Ampache 将用于运行的配置文件。 填写以下字段:
- 网络路径 :
- 数据库名称:
ampache_database
- MySQL 主机名:
localhost
- MySQL 端口(可选) :
- MySQL 用户名:
database_user
- MySQL 密码:
database_password
- 安装类型 保留默认设置。
- 允许转码 从下拉列表中选择ffmpeg。
- Players 将这些保留为默认设置。
单击创建配置按钮继续。
创建管理员帐户
此页面创建第一个 Web 界面用户。 该用户具有完全的管理权限,是您首次用于登录和配置 Ampache 的用户。
选择用户名和安全密码,然后将其输入 Password 和 Confirm Password 字段。
单击创建帐户按钮继续。
安帕奇更新
此页面将对 Ampache 的数据库执行任何需要进行的管理更改。 这些更改是在版本升级期间进行的,但由于这是新安装,安装程序不会进行任何更改。
单击 立即更新! 按钮继续。
安帕奇更新
此页面打印并解释安装程序在上一步中所做的任何更新。 您应该不会看到列出的任何更新。
点击【X10X】【返回主页面】【X35X】链接继续登录页面。 输入您设置的用户名和密码以登录到您的 Ampache 服务器。
Ampache 尚未完全设置好并可以使用。 现在,您将通过添加音乐来完成设置,以便开始使用新的 Ampache 服务器。
第 6 步 — 将您的音乐添加到 Ampache
没有一些音乐可以播放,音乐服务器是没有用的。 在此步骤中,您将配置音乐目录并上传一些音乐。 “目录”是 Ampache 给音乐集的名称。 Ampache 能够从服务器内外的许多来源读取音乐,但在本教程中,您将上传您的音乐并将其存储在服务器上的本地目录中,正如 Ampache 所指的那样。
首先,在登录 Ampache 时看到的第一页的以下行中单击 add a Catalog 链接:
尚未配置目录。 要开始流式传输您的媒体,您现在需要添加一个目录。
这将带您进入 添加目录 页面。 填写以下字段:
- 目录名称:
Give this catalog a short, memorable name.
- 目录类型:
local
- 文件名模式:
- 文件夹模式: 保留默认值。
- 收集艺术:
- 从播放列表文件构建播放列表。 (m3u、m3u8、asx、pls、xspf):
- 小路:
/data/Music
单击添加目录按钮完成此页面。
在随后的页面上单击 继续 按钮。 这将带您到 显示目录 页面,该页面将打印您创建的目录的详细信息。 您可以在以后随时更改目录设置。
现在,通过单击第三个导航图标打开扩展设置来启用 Ampache 的网络上传工具:
向下滚动到 Server Config 部分,然后单击 System 链接以打开系统设置页面。
找到 Allow user uploads 行,然后从 Value 列的下拉菜单中选择 Enable。
您还可以选择可以上传音乐文件的用户级别。 默认级别为 Catalog Manager,这允许 Catalog Manager 和所有具有更高权限的用户上传音乐。 在这种情况下,就是管理员。
您还需要设置要添加音乐的目录。 使用 Destination catalog 行进行设置。 在 Value 下拉菜单中选择您创建的目录。
点击页面底部的【X10X】Update Preferences【X32X】按钮,完成配置。 您现在可以上传一些音乐了。
首先,点击第一个设置图标:
然后单击 Music 部分中的 Upload 链接。
在 Upload 页面上,单击 Browse 按钮并在您的计算机上找到您的音乐文件并上传它们。
如果您将 Artist 和 Album 标签留空,则 Ampache 将读取音乐文件的 ID3 标签以自动发现艺术家和专辑。 上传一些音乐后,您现在可以通过单击 Music[ X161X] 左侧导航面板中的部分。
您的 Ampache 音乐服务器现在已准备好开始流式传输您的音乐。
结论
在本文中,您安装并配置了 Ampache 音乐流服务器并上传了一些音乐。 您现在可以在任何设备上随时随地聆听音乐。 Ampache 的文档 将帮助您使用和扩展您的流媒体服务器。 这些 Android 应用程序 和这个 iOS 应用程序 会将您的音乐流式传输到您的手机。 Ampache 使用音乐文件中的 ID3 标签在服务器上组织您的音乐。 MusicMrainz 程序将帮助您管理音乐文件的 ID3 标签。