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, 转载需著名原文链接。谢谢!
Using Super Post 2.0.5 is there any way to configure in home content to show results in 3 columns? Gayle Meyer Colman
Wat een prachtige jurk! En die open rug is een beetje als de kers op de taart, hij maakt de jurk af. Maisey Trueman Lisette
usually posts some pretty fascinating stuff like this. If youre new to this site Waneta Tomaso Birecree
wanna input on few general things, The website style and design is perfect, the subject1
Merely wanna admit that this is very useful , Thanks for taking your time to write this. Bianka Bryn Publia
bonjour je voudrais bien connaitre le prix d une seance et par zone merci Mersey Rocky Crispin
please visit the web sites we stick to, like this one, as it represents our picks in the web Lynne Gavan Nady
here are some hyperlinks to web sites that we link to because we consider they may be really worth visiting Wanids Jess Sherburn