作者选择Open Internet/Free Speech Fund接受捐赠,作为Write for DOnations计划的一部分。
介绍
Ampache是一个开源音乐流媒体服务器,允许您在自己的服务器上托管和管理您的数字音乐收藏。Ampache 可以将您的音乐流式传输到您的计算机、智能手机、平板电脑或智能电视。这意味着您不必在要用来收听音乐的设备上保留多个音乐副本。使用 Ampache,您可以使用 Ampache 的 Web 界面在您的服务器上管理您的收藏,并在任何地方收听。
在本教程中,您将安装和配置为您的 Ampache 实例提供服务的 Apache 网络服务器和 PHP。然后,您将创建一个 MySQL 数据库,Ampache 将使用该数据库来存储其所有操作信息。最后,您将上传您的音乐收藏,以便您可以开始流式传输您的音乐。
先决条件
在开始本指南之前,您需要具备以下条件:
- 通过遵循Ubuntu 18.04教程的初始服务器设置来设置一台 Ubuntu 18.04 服务器,包括非 root 的 sudo 用户。
- Apache、MySQL 和 PHP 安装在您的服务器上,如如何在 Ubuntu 18.04 上安装 Linux、Apache、MySQL、PHP (LAMP) 堆栈中所示。
- 配置为指向您的服务器的域名。您可以通过参考域和 DNS指南了解如何将域指向 DigitalOcean Droplets 。
第 1 步 – 安装 Ampache
在这一步中,您将 Ampache ZIP 存档下载到您的服务器,将其解压到其安装主目录,并进行一些必要的文件系统更改。
首先,以非 root 用户身份登录到您的服务器。然后使用以下命令创建 Ampache 的主目录:
- sudo mkdir /var/www/ampache
接下来,安装zip
解压缩 Ampache 存档所需的实用程序:
- sudo apt install zip
接下来,下载最新版本的 ZIP 存档。您可以在Ampache 的 GitHub 页面上找到最新版本的链接。在这些示例中,使用了 version 4.1.1
:
- wget https://github.com/ampache/ampache/releases/download/4.1.1/ampache-4.1.1_all.zip
接下来,/var/www/ampache/
使用以下-d
选项将 ZIP 存档解压缩到目录中:
- 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
。
接下来,重命名.htaccess
包含在 ZIP 存档中的文件。.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 实例。
注意:如果您在VirtualHost
遵循“如何在 Ubuntu 18.04 上安装 Linux、Apache、MySQL、PHP (LAMP) 堆栈”指南时创建了使用您的 Ampache 域名的测试文件,则必须禁用它。使用该a2dissite
实用程序禁用它:
- sudo a2dissite test_virtalhost_file
现在,VirtualHost
使用文本编辑器在/etc/apache2/sites-available/ampache.conf
以下位置创建并打开文件:
- sudo nano /etc/apache2/sites-available/ampache.conf
将以下VirtualHost
模板添加到您的文件中:
<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 服务器生成的所有错误日志。
接下来,检查VirtualHost
您创建的文件是否与该apachectl
实用程序没有任何错误:
- 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
然后您需要编辑 Apache 的主配置文件/etc/apache2/apache2.conf
并添加以下行:
ServerName your_domain
接下来,VirtualHost
使用该a2ensite
实用程序启用新配置:
- sudo a2ensite ampache
最终配置是可选的,但建议使用。PHP 中文件上传的默认设置是不能上传大于 2MB 的文件。音乐文件往往比这更大,因此增加此大小将允许您使用 Ampache 界面在您的音乐收藏中上传更大的文件。
/etc/php/7.2/apache2/php.ini
使用以下命令打开:
- sudo nano /etc/php/7.2/apache2/php.ini
并更改以下几行:
. . .
upload_max_filesize = 2M
. . .
post_max_size = 8M
. . .
至:
. . .
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。指定您希望 Certbot 为其创建证书的域名。-d your_domain
当您运行该certbot
命令时,您会被问到一系列问题。系统会提示您输入电子邮件地址并同意服务条款。
如果certbot
成功确认您控制了您的域,它会要求您配置 HTTPS 设置:
Output Please 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)
通过输入退出 MySQL shell exit;
。
最后,通过尝试使用 .sql 文件登录 MySQL shell 来测试数据库、用户名和密码database_user
。
输入以下命令以新用户身份登录MySQL shell:
- mysql --user=database_user --password ampache_database
您现在已经创建了 Ampache 将使用的数据库。您已完成服务器配置,并准备使用 Web 安装程序完成安装。
步骤 5 — 使用 Web 安装程序
在这一步中,您将使用 Ampache 的 Web 安装程序通过向 Ampache 提供运行所需的信息来完成安装,例如 Web 界面管理员用户、数据库详细信息和其他设置。
进入浏览器开始网络安装。https://your_domain
选择安装语言
选择 Ampache 的界面语言,然后单击“开始配置”按钮继续。
要求
此页面是 Ampache 检查服务器是否满足其要求的地方。此页面上的每一行都代表安装程序执行的一项测试,以确保例如所有必需的 PHP 模块都存在并正常工作。您会看到每个测试都有一个绿色的复选标记,表明您的服务器已准备好使用 Ampache。
单击“继续”按钮移至下一页。
插入 Ampache 数据库
如果 Ampache 的数据库不存在,此页面会创建它并对其进行格式化。填写以下字段:
- 所需的数据库名称:
ampache_database
- MySQL主机名:
localhost
- MySQL 端口(可选):<EMPTY>
- MySQL 管理用户名:
database_user
- MySQL 管理密码:
database_password
- 创建数据库:<UNCHECKED>
- 创建表 (ampache.sql) : <CHECKED>
- 创建数据库用户:<UNCHECKED>
单击插入数据库按钮继续。
生成配置文件
此页面创建 Ampache 将用于运行的配置文件。填写以下字段:
-
网页路径:<EMPTY>
-
数据库名称:
ampache_database
-
MySQL主机名:
localhost
-
MySQL 端口(可选):<EMPTY>
-
MySQL用户名:
database_user
-
MySQL 密码:
database_password
-
安装类型
保留默认设置。 -
允许转码从下拉列表中
选择ffmpeg。 -
玩家将
这些保留为默认设置。
单击创建配置按钮继续。
创建管理员帐户
此页面创建第一个 Web 界面用户。该用户创建时具有完整的管理权限,并且是您第一次用于登录和配置 Ampache 的用户。
选择用户名和安全密码,然后将其输入到密码和确认密码字段中。
单击创建帐户按钮继续。
安培更新
此页面将对 Ampache 的数据库执行任何需要进行的管理更改。这些更改是在版本升级期间进行的,但由于这是新安装,因此安装程序不会进行任何更改。
点击立即更新!按钮继续。
安培更新
此页面打印并解释安装程序在上一步中所做的任何更新。您不应看到列出的任何更新。
点击【返回主页面】链接继续登录页面。输入您设置的用于登录 Ampache 服务器的用户名和密码。
Ampache 还没有完全设置好并可以使用。您现在将通过添加音乐来完成设置,以便您可以开始使用新的 Ampache 服务器。
第 6 步 — 将您的音乐添加到 Ampache
没有一些音乐播放,音乐服务器是没有用的。在这一步中,您将配置音乐目录并上传一些音乐。“目录”是 Ampache 为音乐集取的名称。Ampache 能够从服务器内外的许多来源读取音乐,但在本教程中,您将上传您的音乐并将其存储在服务器上的本地目录中,正如 Ampache 所指的那样。
首先,在您登录 Ampache 时看到的第一页上的以下行中单击添加目录链接:
尚未配置目录。要开始流式传输媒体,您现在需要添加目录。
这将带您进入添加目录页面。填写以下字段:
- 目录名称:
Give this catalog a short, memorable name.
- 目录类型:
local
- 文件名模式: <EMPTY>
- 文件夹模式:保留默认值。
- 收集艺术品: <已检查>
- 从播放列表文件构建播放列表。(m3u, m3u8, asx, pls, xspf): <未检查>
- 小路:
/data/Music
单击添加目录按钮以完成此页面。
在随后出现的页面上单击继续按钮。这将带您进入“显示目录”页面,该页面将打印您创建的目录的详细信息。您可以在以后随时更改目录设置。
现在,通过单击第三个导航图标打开扩展设置来启用 Ampache 的网络上传工具:
向下滚动到服务器配置部分,然后单击系统链接以打开系统设置页面。
找到允许用户上传行并从值列的下拉菜单中选择启用。
您还可以选择能够上传音乐文件的用户级别。默认级别是Catalog Manager,这允许Catalog Manager和所有具有更高权限的用户上传音乐。在这种情况下,就是管理员。
您还需要设置音乐将被添加到的目录。使用目标目录行设置此项。在值下拉列表中选择您创建的目录。
单击页面底部的更新首选项按钮以完成配置。您现在可以上传一些音乐了。
首先,点击第一个设置图标:
然后单击“音乐”部分中的“上传”链接。
在上传页面上,单击浏览按钮并在您的计算机上找到您的音乐文件并上传它们。
如果您将艺术家和专辑标签留空,则 Ampache 将读取音乐文件的ID3标签以自动发现艺术家和专辑。上传一些音乐后,您现在可以通过单击左侧导航面板音乐部分中的歌曲、专辑或艺术家链接来找到它。
您的 Ampache 音乐服务器现在已准备好开始流式传输您的音乐。
结论
在本文中,您安装并配置了 Ampache 音乐流媒体服务器并上传了您的一些音乐。现在,您可以随时随地在任何设备上聆听音乐。Ampache 的文档将帮助您使用和扩展您的流媒体服务器。这些Android 应用程序和此iOS 应用程序会将您的音乐流式传输到您的手机。Ampache 使用音乐文件中的 ID3 标签在服务器上组织您的音乐。该MusicMrainz计划将帮助您管理您的音乐文件的ID3标签。