如何在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