Koel是著名的个人音乐在线播放与电台程序。在英文中,Koel是一种鸟类,它经常发出好听的叫声,该程序也因此得名。Koel完全免费开源,在Github上已经有一万多个Stars, 一千多次Forks. 今天我们将介绍如何在Ubuntu 20.04 LTS系统中搭建Koel私人音乐电台。
本文作者为香菇肥牛,原文链接为https://qing.su/article/personal-music-streaming-server-with-koel.html, 转载需著名原文链接。谢谢!
1, 基础系统环境
本文将以Ubuntu 20.04 LTS操作系统为例,介绍Koel音乐播放与电台系统的搭建。您需要将您的域名解析到服务器的IP地址上。下文中,我们将以域名koel.qing.su为例。
在开始之前,首先介绍一下该程序的架构。Koel的后端使用Laravel PHP框架,前端使用Vue JS框架。本文将使用基础的Nginx + MariaDB架构来实现Koel的搭建。由于需要用到两个框架,程序安装过程中,需要的组件较多,步骤较为繁杂,我们将提供图文教程和图文教程。
该程序需要至少1 GB的内存。Koel没有官方的Docker镜像,只有第三方开发的镜像,而且性能会弱于非Docker的安装方法。因此我们将不介绍Docker方式的安装。
下面,我就来详细介绍如何在Ubuntu 20.04 LTS操作系统中手动搭建Koel私人音乐电台。由于步骤较多,我们一并录制了SSH轻视频,您可以点击下方的播放键观看,视频上任意内容均可使用鼠标直接复制。若您的浏览器没有加载播放器,请刷新本页面。
2, 安装Nginx服务器与PHP
我们直接从包管理器安装Nginx. 执行:
1 2 | apt-get update && apt-get upgrade apt-get install nginx git |
继续从包管理器安装PHP. 这里,我们将安装默认的PHP7.4, 并安装一系列需要的PHP拓展。
1 | apt-get install php php-bcmath php-json php-mbstring php-xml php-common openssl libssl-dev php-mysql php-dev php-zip php-curl php-fpm |
需要注意的是,从包管理器安装PHP 7.4的时候,会一并安装上Apache2服务器。因此,安装PHP和各组件时会报错,如下图。您可以无视。
安装完毕后,执行下面的命令卸载Apache2.
1 | apt-get remove apache2 && apt-get autoremove |
Koel在播放音乐时需要较大的PHP内存,因此我们需要修改PHP的memory_limit参数。编辑文件/etc/php/7.4/cli/php.ini, 将memory_limit参数值修改为512M.
1 | memory_limit = 512M |
如下图:
修改完毕后,可以不用着急重新载入Nginx. 我们后面配置Nginx的时候可以一并操作。
3, 安装与配置MariaDB数据库
这一节,我们将安装MariaDB数据库。MariaDB是MySQL的替代产品,您也可以使用MySQL. 我们将直接从包管理器安装MariaDB. 执行:
1 | apt-get install mariadb-server |
这样就安装好了MariaDB. 首次安装,需要设置一些基础的安全选项。
1 | mysql_secure_installation |
然后,新建一个数据库,用来提供给Koel程序使用。首先,进入MariaDB命令行:
1 | mysql -u root -p |
然后,新建一个数据库。
1 2 3 | CREATE DATABASE koeldb; GRANT ALL ON koeldb.* TO 'koeluser' IDENTIFIED BY 'qing.su'; quit; |
这样,我们新建了一个名为koeldb的数据库,数据库用户名为koeluser, 密码为qing.su.
4, 安装Composer与Laravel
Koel使用Laravel PHP框架作为后端。因此,我们需要安装Laravel框架。这里我们使用Composer来安装。
首先,安装Composer.
1 2 3 | wget https://getcomposer.org/installer php installer mv composer.phar /usr/local/bin/composer |
然后,使用Composer安装Laravel.
1 | composer global require laravel/installer |
上面这一步的执行过程中可能会看到如下的警告,可以无视。
5, 安装NodeJS与Yarn
Koel的前端使用了Vue JS框架,因此我们需要安装NodeJS与yarn来编译生成前端JS文件。
首先,安装NodeJS. 请注意,Koel目前仅支持10.x版本的NodeJS. 新版本比如14.x版本的NodeJS无法正常运行Koel.
1 2 | curl -sL https://deb.nodesource.com/setup_10.x | bash - apt-get install nodejs |
然后,使用Node安装yarn.
1 | npm install -g yarn |
您也可以添加源然后使用包管理器安装yarn.
1 2 3 | curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list apt-get update && apt-get install yarn |
6, 安装Koel主程序
安装好所有这些组件之后,我们就可以开始部署Koel主程序了。我们将Koel主程序部署在/srv/www/koel/public_html/目录,您可以根据个人喜欢部署在其他目录。
1 2 3 | mkdir -p /srv/www/koel/public_html cd /srv/www/koel/public_html git clone --recurse-submodules https://github.com/phanan/koel.git . |
这里,您可以前往https://github.com/phanan/koel/releases查看最新的Koel版本号,然后安装对应的版本。我这里是4.4.0.
1 2 | git checkout v4.4.0 composer install |
此时,我们需要编辑文件.env, 配置数据库与管理员用户信息。在这个文件中,我们有三处需要修改。
首先,在下面几行中,填入我们在第三部分建立的数据库信息:
1 2 3 | DB_DATABASE=koeldb DB_USERNAME=user DB_PASSWORD=qing.su |
在下面几行中填入管理员用户信息:
1 2 3 | ADMIN_NAME="香菇肥牛" ADMIN_EMAIL=hi@example.com ADMIN_PASSWORD=qing.su |
更改APP_URL的值,将其修改为您的Koel域名:
1 | APP_URL=http://koel.qing.su |
如下图:
修改完毕后,保存退出。
最后,我们初始化Koel. 该步骤将初始化Koel数据库,并自动执行yarn install安装前端文件。这一步需要较长时间,且中途可能会遇到各种warning, 可以不予理会。
1 | php artisan koel:init |
执行完毕后,我们可以测试一下Koel是否正确安装。我们可以使用PHP自带的临时服务器,测试一下我们是否能够正常访问Koel. 执行:
1 | php artisan serve --host 0.0.0.0 |
然后,在浏览器中访问http://koel.qing.su:8000, 如果您的Koel正确安装,浏览器中将会出现Koel的登录界面了。
测试完毕后,执行CTRL + C结束这个临时服务器。我们将使用Nginx来实现浏览器访问,而不是用这个简易的临时服务器来提供访问。
7, 配置Nginx虚拟主机文件
Koel安装目录中提供了默认的Nginx虚拟主机配置文件,我们仅需稍微修改即可。请注意,您当前的操作目录应该是/srv/www/koel/public_html/.
1 | cp nginx.conf.example /etc/nginx/conf.d/koel.conf |
编辑文件/etc/nginx/conf.d/koel.conf:
将默认的程序路径/var/www/koel设置为我们安装的路径:
1 | root /srv/www/koel/public_html; |
找到server_name选项,将其值设置为您的域名:
1 | server_name koel.qing.su; |
找到fastcgi_pass选项。我们将其值设置为PHP-FPM的Unix Socket文件路径:
1 | fastcgi_pass unix:/run/php/php7.4-fpm.sock; |
编辑完毕后,退出该文件。然后,设置程序目录的访问权限,并重新载入Nginx配置文件,使得配置生效。
1 2 | chown -R www-data:www-data . service nginx reload |
此时,在浏览器中访问http://koel.qing.su, 将可以正确打开Koel登录界面了。
8, 配置Let’s Encrypt安全证书
配置好Nginx虚拟主机之后,我们还可以使用Let’s Encrypt免费TLS安全证书来提高安全性。Ubuntu 20.04 LTS系统的包管理器自带了certbot及配套的Nginx-certbot安装程序,我们直接从包管理器安装即可。
1 | apt-get install certbot python3-certbot-nginx |
然后,让certbot自动帮我们配置证书即可。
1 | certbot --nginx --redirect --staple-ocsp -d koel.qing.su |
证书安装好之后,Certbot会自动帮我们重新载入Nginx配置文件。
由于更改了网站URL, 我们需要重新编译一下前端js文件。修改文件.env, 将APP_URL=http://koel.qing.su修改为https地址:
1 | APP_URL=https://koel.qing.su |
然后重新编译前端文件。执行:
1 | php artisan koel:init |
此时,访问https://koel.qing.su, 即可看到Koel登录界面与安装好的安全证书了。我们使用之前设置的管理员账户即可登录并同步音乐文件。
9, 使用Koel
最后,我们简要介绍一下如何使用Koel. 首先,我们需要把所有的音乐文件与目录放在服务器的一个目录里面。比如,我这里放在目录/media中。
然后,我们登录Koel, 点击左侧Settings, 再Media Path中输入我们的音乐文件存储位置,比如这里的/media. 请注意,存储在该目录的子目录中的所有音乐文件都会被包括在Koel库中。输入完毕后,点击Scan, 系统将会自动索引您的音乐文件。
索引完毕后,就可以开始听歌啦。
至此,我们在Ubuntu 20.04 LTS服务器中安装并配置好了Koel个人音乐播放与电台程序。
如果有任何问题,您可以在这里留言,我将尽力解答。本文作者为香菇肥牛,原文链接为https://qing.su/article/personal-music-streaming-server-with-koel.html, 转载需著名原文链接。谢谢!
尝试安装最新版koel,失败了
有什么报错信息吗
curl -sL https://deb.nodesource.com/setup_10.x | bash – 到这里就报错了
贴一下报错信息