如何在Fedora 33上安装Ampache Music Streaming Server

如何在Fedora 33上安装Ampache Music Streaming Server

Ampache是​​一个用PHP编写的基于Web的开源个人音频流应用程序。您可以在服务器上托管和管理您的数字音乐收藏,并将其流式传输到计算机,智能手机,平板电脑或智能电视。可以多种方式使用 安卓的iOS 一种将音乐从Ampache音乐服务器流式传输到您的个人设备的应用程序。

本教程将向您展示如何在基于Fedora 33的服务器上安装Ampache应用程序,以及如何上传音乐以进行流式传输。

先决条件

  • 运行Fedora 33的服务器。

  • 非root用户sudo用户。

  • 确保所有内容都已更新。

    $ sudo dnf upgrade
    
  • 该系统几乎不需要软件包。

    $ sudo dnf install wget curl nano zip -y
    
  • 禁用SELinux。

    $ sudo setenforce 0
    

配置防火墙

第一步是配置防火墙。 Firewalld已预安装在Fedora服务器上。

检查防火墙是否正在运行。

$ sudo firewall-cmd --state

您应该获得以下输出:

running

将防火墙默认区域设置为public。

$ sudo firewall-cmd --set-default-zone=public

检查当前允许的服务/端口。

$ sudo firewall-cmd --zone=public --permanent --list-services

您应该看到以下输出:

dhcpv6-client mdns ssh

允许HTTP和HTTPS端口。

$ sudo firewall-cmd --zone=public --permanent --add-service=http
$ sudo firewall-cmd --zone=public --permanent --add-service=https

请再次检查防火墙状态。

$ sudo firewall-cmd --zone=public --permanent --list-services

您应该看到类似的输出。

dhcpv6-client http https mdns ssh

重新加载防火墙。

$ sudo systemctl reload firewalld

安装Git

您需要先安装Git,然后才能继续。

$ sudo dnf install git

然后使用您的个人信息配置Git。

$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"

安装MariaDB

MariaDB是MySQL的替代品。换句话说,运行和操作MariaDB的命令与MySQL中的命令相同。

MariaDB 10.5是最新的稳定版本,因此Fedora 33默认带有MariaDB 10.4 bur。为此,我们将使用官方的MariaDB存储库。

建立档案 /etc/yum.repos.d/MariaDB.repo 打开它进行编辑。

$ sudo nano /etc/yum.repos.d/MariaDB.repo

粘贴以下代码。

# MariaDB 10.5 Fedora repository list
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.5/fedora33-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

按下以保存并关闭文件 Ctrl + X 进入 ÿ 提示时。

要安装MariaDB,请发出以下命令: 广告

$ sudo dnf install MariaDB-server -y

请确保输入 MariaDB-server 不是以上命令 mariadb-server 前者用于从官方存储库安装,后者用于从Fedora存储库安装旧版本。

确保正确安装MariaDB。

$ mysql --version

您应该看到以下输出:

mysql  Ver 15.1 Distrib 10.5.9-MariaDB, for Linux (x86_64) using  EditLine wrapper

启用并启动MariaDB服务。

$ sudo systemctl enable mariadb
$ sudo systemctl start mariadb

运行以下命令以执行默认设置,例如分配root密码,删除匿名用户,远程禁止root登录以及删除测试表。

$ sudo mysql_secure_installation

MariaDB 10.4使用root密码或 unix_socket 插入。该插件使您可以使用Linux用户凭据登录MariaDB。 要使用诸如phpMyAdmin之类的第三方应用程序,需要使用传统的用户名/密码,但它被认为更安全。在本教程中,我们将坚持使用插件。您可以通过为数据库创建的特定用户继续使用phpMyAdmin。

按Enter键选择默认选项(大写选项,在这种情况下为Y)。

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none): [PRESS ENTER]
OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n] [PRESS ENTER]
Enabled successfully!
Reloading privilege tables..
 ... Success!

You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n] [ANSWER n]
... skipping.

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] [PRESS ENTER]
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] [PRESS ENTER]
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] [PRESS ENTER]
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] [PRESS ENTER]
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

就是这样。下次登录MySQL时,请使用以下命令

$ sudo mysql

出现提示时输入root密码。

为Ampache配置MariaDB

接下来,您需要设置数据库以用于您的Ampache应用程序。为此,请登录到MySQL提示符。

$ sudo mysql

出现提示时,输入以下命令来建立一个名为的数据库。 安帕什 数据库用户名为和 ampuser 允许访问数据库。

mysql> CREATE DATABASE ampache;
mysql> CREATE USER 'ampuser'@'localhost' IDENTIFIED BY 'yourpassword';
mysql> GRANT ALL PRIVILEGES ON ampache.* TO 'ampuser'@'localhost';
mysql> exit

安装PHP

Fedora33默认情况下随PHP 7.4一起提供,但是我们将添加一个REMI存储库以使用更新的PHP存储库。

安装REMI存储库,这是用于安装PHP软件包的官方Fedora存储库。

$ sudo dnf -y install https://rpms.remirepo.net/fedora/remi-release-33.rpm

将PHP 7.4作为模块安装。

$ sudo dnf module install php:remi-7.4

检查PHP是否正常运行。

$ php --version

您应该看到类似的输出。

PHP 7.4.16 (cli) (built: Mar  2 2021 10:35:17) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies

安装PHP扩展

Ampache需要一些PHP扩展。使用以下命令进行安装:

sudo dnf install php-curl php-gd php-intl php-mysql

配置PHP-FPM

打开文件 /etc/php-fpm.d/www.conf..

$ sudo nano /etc/php-fpm.d/www.conf

Unix用户/ PHP进程组必须设置为 Nginx的..找出 user=apachegroup=apache 将文件中的行更改为nginx。

...
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
; RPM: apache user chosen to provide access to the same directories as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx
...

按下以保存文件 Ctrl + X 进入 ÿ 提示时。

然后,您需要增加用于上传音乐的文件大小 /etc/php.ini 文件。打开文件进行编辑。

$ sudo nano /etc/php.ini

更改以下行

. . .
post_max_size = 8M
. . .
upload_max_filesize = 2M

. . .
post_max_size = 110M
. . .
upload_max_filesize = 100M
. . .

现在,您可以上传最大100MB的文件。您可以根据需要更改值。提醒一句, post_max_size 更大的 upload_max_filesize 多变的。

按下以保存文件 Ctrl + X 进入 ÿ 提示时。

重新启动PHP-fpm进程。

$ sudo systemctl restart php-fpm

安装Nginx

Fedora 33默认带有Nginx的最新稳定版本。 (1.18.0)。

安装Nginx。

$ sudo dnf install nginx -y

确保其正常工作。

$ nginx -v

根据您选择安装的Nginx的版本,您将看到以下输出:

nginx version: nginx/1.18.0

启动Nginx并启用它。

$ sudo systemctl start nginx
$ sudo systemctl enable nginx

在浏览器中打开服务器的IP地址,然后转到下一页。这意味着Nginx正常工作。

配置Nginx

设置服务器块所在的目录。

$ sudo mkdir /etc/nginx/sites-available
$ sudo mkdir /etc/nginx/sites-enabled

打开 /etc/nginx/nginx.conf 用于编辑的文件。

$ sudo nano /etc/nginx/nginx.conf	

将以下行粘贴到该行之后 include /etc/nginx/conf.d/*.conf

include /etc/nginx/sites-enabled/*.conf;
server_names_hash_bucket_size 64;

Ctrl + X 关闭编辑器,然后按 ÿ 如果要求您保存文件。

运行以下命令以添加Ampache配置文件。

$ sudo nano /etc/nginx/sites-available/ampache.conf

将以下代码粘贴到编辑器中。

server {

    # listen to
    listen  [::]:80;
    listen       80;

    server_name ampache.example.com;
    charset utf-8;

    # Logging, error_log mode [notice] is necessary for rewrite_log on,
    # (very usefull if rewrite rules do not work as expected)

    error_log       /var/log/nginx/ampache.error.log; # notice;
    access_log      /var/log/nginx/ampache.access.log;
    # rewrite_log     on;

    # Use secure headers to avoid XSS and many other things
    add_header X-Content-Type-Options nosniff;
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Robots-Tag none;
    add_header X-Download-Options noopen;
    add_header X-Permitted-Cross-Domain-Policies none;
    add_header X-Frame-Options "SAMEORIGIN" always;
    add_header Referrer-Policy "no-referrer";
    add_header Content-Security-Policy "script-src 'self' 'unsafe-inline' 'unsafe-eval'; frame-src 'self'; object-src 'self'";

    # Avoid information leak
    server_tokens off;
    fastcgi_hide_header X-Powered-By;

    root /var/www/html/ampache;
    index index.php;
    client_max_body_size 100m;

    # Somebody said this helps, in my setup it doesn't prevent temporary saving in files
    proxy_max_temp_file_size 0;

    # Rewrite rule for Subsonic backend
    if ( !-d $request_filename ) {
        rewrite ^/rest/(.*).view$ /rest/index.php?action=$1 last;
        rewrite ^/rest/fake/(.+)$ /play/$1 last;
    }

    # Rewrite rule for Channels
    if (!-d $request_filename){
      rewrite ^/channel/([0-9]+)/(.*)$ /channel/index.php?channel=$1&target=$2 last;
    }

    # Beautiful URL Rewriting
    rewrite ^/play/ssid/(w+)/type/(w+)/oid/([0-9]+)/uid/([0-9]+)/name/(.*)$ /play/index.php?ssid=$1&type=$2&oid=$3&uid=$4&name=$5 last;
    rewrite ^/play/ssid/(w+)/type/(w+)/oid/([0-9]+)/uid/([0-9]+)/client/(.*)/name/(.*)$ /play/index.php?ssid=$1&type=$2&oid=$3&uid=$4&client=$5&name=$6 last;
    rewrite ^/play/ssid/(w+)/type/(w+)/oid/([0-9]+)/uid/([0-9]+)/client/(.*)/player/(.*)/name/(.*)$ /play/index.php?ssid=$1&type=$2&oid=$3&uid=$4&client=$5&player=$6&name=$7 last;
    rewrite ^/play/ssid/(w+)/type/(w+)/oid/([0-9]+)/uid/([0-9]+)/client/(.*)/bitrate/([0-9]+)/player/(.*)/name/(.*)$ /play/index.php?ssid=$1&type=$2&oid=$3&uid=$4&client=$5&bitrate=$6player=$7&name=$8 last;
    rewrite ^/play/ssid/(w+)/type/(w+)/oid/([0-9]+)/uid/([0-9]+)/client/(.*)/transcode_to/(w+)/bitrate/([0-9]+)/player/(.*)/name/(.*)$ /play/index.php?ssid=$1&type=$2&oid=$3&uid=$4&client=$5&transcode_to=$6&bitrate=$7&player=$8&name=$9 last;
    rewrite ^/play/ssid/(w+)/type/(w+)/oid/([0-9]+)/uid/([0-9]+)/client/(.*)/noscrobble/([0-1])/name/(.*)$ /play/index.php?ssid=$1&type=$2&oid=$3&uid=$4&client=$5&noscrobble=$6&name=$7 last;
    rewrite ^/play/ssid/(w+)/type/(w+)/oid/([0-9]+)/uid/([0-9]+)/client/(.*)/noscrobble/([0-1])/player/(.*)/name/(.*)$ /play/index.php?ssid=$1&type=$2&oid=$3&uid=$4&client=$5&noscrobble=$6&player=$7&name=$8 last;
    rewrite ^/play/ssid/(w+)/type/(w+)/oid/([0-9]+)/uid/([0-9]+)/client/(.*)/noscrobble/([0-1])/bitrate/([0-9]+)/player/(.*)/name/(.*)$ /play/index.php?ssid=$1&type=$2&oid=$3&uid=$4&client=$5&noscrobble=$6&bitrate=$7player=$8&name=$9 last;
    rewrite ^/play/ssid/(w+)/type/(w+)/oid/([0-9]+)/uid/([0-9]+)/client/(.*)/noscrobble/([0-1])/transcode_to/(w+)/bitrate/([0-9]+)/player/(.*)/name/(.*)$ /play/index.php?ssid=$1&type=$2&oid=$3&uid=$4&client=$5&noscrobble=$6&transcode_to=$7&bitrate=$8&player=$9&name=$10 last;

    # the following line was needed for me to get downloads of single songs to work
    rewrite ^/play/ssid/(.*)/type/(.*)/oid/([0-9]+)/uid/([0-9]+)/action/(.*)/name/(.*)$ /play/index.php?ssid=$1&type=$2&oid=$3&uid=$4action=$5&name=$6 last;
    location /play {
        if (!-e $request_filename) {
			rewrite ^/play/art/([^/]+)/([^/]+)/([0-9]+)/thumb([0-9]*).([a-z]+)$ /image.php?object_type=$2&object_id=$3&auth=$1 last;
        }

		rewrite ^/([^/]+)/([^/]+)(/.*)?$ /play/$3?$1=$2;
		rewrite ^/(/[^/]+|[^/]+/|/?)$ /play/index.php last;
		break;
    }

   location /rest {
      limit_except GET POST {
         deny all;
      }
   }

   location ^~ /bin/ {
      deny all;
      return 403;
   }

   location ^~ /config/ {
      deny all;
      return 403;
   }

   location / {
      limit_except GET POST HEAD{
         deny all;
      }
   }

   location ~ ^/.*.php {
        fastcgi_index index.php;

        # sets the timeout for requests in [s] , 60s are normally enough
        fastcgi_read_timeout 600s;

        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

        # Mitigate HTTPOXY https://httpoxy.org/
        fastcgi_param HTTP_PROXY "";

        # has to be set to on if encryption (https) is used:
        fastcgi_param HTTPS on;

        fastcgi_split_path_info ^(.+?.php)(/.*)$;

        # chose as your php-fpm is configured to listen on
        fastcgi_pass unix:/run/php-fpm/www.sock;
   }

   # Rewrite rule for WebSocket
   location /ws {
        rewrite ^/ws/(.*) /$1 break;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_pass http://127.0.0.1:8100/;
   }
}

该文件假定您在域中安装了Apache ampache.example.com 并在目录中 /var/www/html/ampache..推 Ctrl + X 关闭编辑器,然后按 ÿ 如果要求您保存文件。

将此配置文件链接到并激活它 sites-enabled 目录。

$ sudo ln -s /etc/nginx/sites-available/ampache.conf /etc/nginx/sites-enabled/

测试您的Nginx配置。

$ sudo nginx -t

您应该看到以下输出,表明配置正确:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

重新加载Nginx服务。

$ sudo systemctl reload nginx

使用“让我们加密”进行HTTPS设置

要使用“让我们加密”,您需要安装 Certbot 包裹。

安装Certbot。

$ sudo dnf install certbot certbot-nginx -y

安装证书。

$ sudo certbot --nginx -d ampache.example.com

首次在此服务器上使用此工具时,必须接受使用条款并输入您的电子邮件地址。说 数字 当询问您是否要与EFF基金会共享电子邮件。

如果成功 certbot 系统将询问您如何配置HTTPS设置。

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):

选择2并 ENTER..证书现已安装并激活。

运行以下命令来设置自动更新。

$ echo "0 0,12 * * * root python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew" | sudo tee -a /etc/crontab > /dev/null

安装Ampache

为Ampache创建一个空的文档根文件夹。

$ sudo mkdir -p /var/www/html/ampache

这· -p 该参数保证父目录 varwww 如果不存在,它将自动创建。

然后下载最新版本的Ampache的ZIP存档。最新版本的链接是 Github发布页面..在编写本教程时,最新版本为4.4.1,因此请下载它。

$ wget https://github.com/ampache/ampache/releases/download/4.4.1/ampache-4.4.1_all.zip

然后将ZIP文件解压缩到您之前创建的目录中。

$ sudo unzip ampache-4.4.1_all.zip -d /var/www/html/ampache/

然后设置权限 /var/www/html/ampache Nginx Web服务器目录。

$ sudo chown --recursive  nginx:nginx /var/www/html/ampache/

创建另一个目录来存储您的音乐。您不需要sudo,因为您是在自己的用户目录中创建的。

$ sudo mkdir -p /data/Music

更改所有权 /home/user/musicnginx 允许服务器从存储音乐的目录中读取和写入。

$ sudo chown -R nginx:nginx /data/Music

要完成Ampache设置,请安装FFmpeg,该实用程序可将音频和视频文件从一种格式转换为另一种格式。 Ampache使用FFmpeg将音频文件从上传的格式转换为可以在侦听设备上即时播放的格式。

Fedora默认情况下不随FFmpeg一起提供,因此您需要首先添加RPM Fusion存储库。

$ sudo dnf install https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm

然后安装FFmpeg。

$ sudo dnf install ffmpeg

使用Ampache安装程序

Ampache网站随时可以使用,可以从您的浏览器访问https://example.com。第一次打开它时,您将看到Ampache Web安装程序。

Ampache安装程序主页

选择一种语言,然后转到下一页,该页面将向您显示服务器是否满足Ampache的要求。

Ampache安装程序要求

如果正确运行了本教程,则应该能够转到下一页,系统将提示您输入数据库详细信息。数据库已经创建,因此您可以取消选中该复选框。数据库用户也是如此。输入您创建的数据库名称,用户和密码,然后进入下一页。

Ampache数据库设置

接下来,您将看到Ampache的配置选项。大多数信息是预先填写的,不需要更改。

Ampache安装程序配置

由于某些原因,Apache Web安装程序无法检测到Fedora中安装的FFmpeg二进制文件。您稍后将通过手动编辑配置文件来启用它。

然后输入Apache管理员帐户的详细信息。

设置一个Ampache管理员帐户

现在,您将被重定向到Ampache登录页面。

Ampache登录

输入用户详细信息,您将可以访问Ampache播放器。

Ampash主页

您必须先启用FFmpeg以进行转码,然后才能开始使用它。您需要打开以启用此功能 /var/www/html/ampache/config/ampache.cfg.php 用于编辑的文件。

$ sudo nano /var/www/html/ampache/config/ampache.cfg.php

替换以下行

;transcode_cmd = "ffmpeg"

在下一行之前删除与符号。

transcode_cmd = "ffmpeg"

Ctrl + X 关闭编辑器,然后按 ÿ 如果要求您保存文件。您可以使用此文件进行更多更改。 Ampache安装已准备就绪,但要使其正常工作,您首先需要添加一些音乐。

新增音乐

要将音乐添加到Ampache,您需要在播放器中创建目录,然后从Web界面上传文件。

第一的, 添加目录 主页选项。

添加了Ampache目录

选择 当地的 输入路径作为目录类型 /home/user/music..如果要导入播放列表,则可以选择一个选项 从播放列表文件创建播放列表..为您的目录命名并单击 添加目录 我会继续。

现在已经创建了目录,您需要启用该选项以允许您上载音乐文件。为此,请单击左上方工具栏上的第4个导航按钮以对其进行访问 行政人员 环境。

Ampache管理按钮

向下滚动 服务器配置 点击该部分 系统..

Ampache服务器配置部分

找出 允许用户上传 行和选择 从下拉菜单。您还可以选择要允许添加文件的用户类型。在我们的情况下是 目录经理 我碰巧也是一名管理员。

您还需要设置用户上传文件的目的地。可以使用 目标目录 线。从下拉菜单中,选择您刚刚创建的目录。

Ampache上传设置

点击 更新设定 等结束了。您现在可以将音乐添加到您的Ampache安装中。为此,请单击 耳机图标 它在左上方的导航菜单中。

Ampache工具栏

然后点击 上载 音乐部分链接。

取消音乐部分

上载 单击页面,浏览以从本地PC选择音乐文件,然后将其上传。[アーティスト]随着领域[アルバム]如果将该字段保留为空白,则Ampache将自动尝试使用文件本身的ID3标签对其进行标识。

Ampache上传页面

完成后,您可以在左窗格的任何部分中找到文件,然后就可以流式播放音乐了。

结论

这结束了有关如何在Fedora 33上安装和使用Ampache Music流服务器的教程。如果您有任何问题或反馈,请在下面的评论中发布。

Sidebar