引前几天在开往上找别人的博客玩耍的时候，翻着翻着就找到了一位朋友的博客，看到他的博客上面有一个音乐功能，不是APlayer的那个，是独立的页面，感觉还蛮好看的，于是想着在自己服务器上也部署一个，然而我看了一下他用的应该不是开源的，所以我准备自己动手，丰衣足食，自已整一个。首先是前端，我本人前端水平有限，仅限于会点js和框架，至于写CSS那简直是比登天还难，所以先是去codepen上面看了一下，找到一个比较心仪的前端，而且我在找的时候，甚至在codepen上找到了我上面提到的那个前端。然后因为是网易云的接口，再加上以后想加点别的功能，所以还是使用了后端，用的是Laravel。演示站点：UtopiaXC's Music Player部署其实吧，我觉得部署用不着我单独出一篇文章，因为本来就是个小项目，而且README文档已经写的非常详细了，但是一想到基本没人能看到那个项目，而且还能水一篇博客（这才是主要目的吧啊喂），所以还是图文详解一下怎么部署吧。所以，在这里，我强烈建议如果感兴趣的话先去我的GitLab或GitHub看一下文档。创建网站首先在Nginx或者Apache中创建一个网站目录用于保存和运行项目，这里我为了方便就在我自家服务器上用宝塔演示一下。首先，来创建一个站点，php版本设置在7.4以上就可以，不需要数据库。下载然后进入这个网站的根目录，我这里就是cd /www/wwwroot/192.168.1.4然后，按照文档上说的，以下两个指令选一个执行。# 如果你的服务器不在中国大陆，请使用本条 wget https://github.com/UtopiaXC/My-Music-Player/archive/refs/tags/1.0.0.tar.gz && tar -zxvf 1.0.0.tar.gz && cp -r My-Music-Player-1.0.0/. ./ && sudo rm -rf 1.0.0.tar.gz My-Music-Player-1.0.0/ && sudo chmod -R 777 ./ # 如果你的服务器在中国大陆，请使用本条 wget https://git.utopiaxc.cn/UtopiaXC/my-music-player/-/archive/1.0.0/my-music-player-1.0.0.tar.gz && tar -zxvf my-music-player-1.0.0.tar.gz && cp -r my-music-player-1.0.0/. ./ && sudo rm -rf my-music-player-1.0.0.tar.gz my-music-player-1.0.0/ && sudo chmod -R 777 ./那么由于我家还是在国内的，所以我选择用下面这条。这条指令会自动下载发行版包并解压，然后移动到网站的根目录上，然后赋予权限。这有一点要注意，这条指令赋予的是777权限，也就是rwxrwxrwx最高权限，所以如果对安全有要求的建议自己切换到Web用户上改成755权限。执行命令如果你执行成功的话，结果应该是这样子的，.user.ini因为是宝塔用来防跨站的，所以权限改不掉，这点无所谓，随它去就行。ls一下，看到是这些文件就可以了。Composer然后是Composer，如果大家用宝塔的话就不用管了，会自动装的，如果不是宝塔的话，可以试试我文档里提到的。首先，检查一下是否安装了Composercomposer -V如果是以下这样就是安装好了，因为Composer不建议使用root账户，所以如果你是root的话注意在这输一下yes确认。如果没有装好的话，那么使用下面这两条进行安装# 方法一 curl -sS https://getcomposer.org/installer | php sudo mv composer.phar /usr/local/bin/composer # 方法二：如果您的设备上存在多个PHP环境，不同版本的Composer可能发生冲突，您可使用本方法 php -r "readfile('https://getcomposer.org/installer');" | php我个人建议你是用方法2，因为我服务器上就是装着7.4和8.0，如果用方法1会造成版本冲突，我就只演示2了，完成之后会显示下图这样子。最后呢，再执行以下Composer的安装，把需要的组件安装一下。# 通过方法一安装的Composer composer install # 通过方法二安装的Composer php composer.phar install开始安装安装成功Composer换源因为Composer官方下载源在国外，所以国内非常慢，而且动不动就挂了，所以我建议是大家换成国内的源。如果你采用的是系统的Composer可执行文件，也就是上面的方法1安装的话，那就是下面这几条，至于全不全局那就自己决定了。# 全局换为阿里云源 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ # 全局换为腾讯云源 composer config -g repos.packagist composer https://mirrors.cloud.tencent.com/composer/ # 全局换为中国全量镜像源 composer config -g repo.packagist composer https://packagist.phpcomposer.com # 仅本工程换为阿里云源 composer config repo.packagist composer https://mirrors.aliyun.com/composer/ # 仅本工程换为腾讯云源 composer config repo.packagist https://mirrors.cloud.tencent.com/composer/ # 仅本工程换为中国全量镜像源 composer config repo.packagist composerhttps://packagist.phpcomposer.com如果你采用的是phar，也就是方法二，那么执行下面这几个中的一个，其实区别就是把composer换成了php composer.phar，至于为什么，自己想去。# 全局换为阿里云源 php composer.phar config -g repo.packagist composer https://mirrors.aliyun.com/composer/ # 全局换为腾讯云源 php composer.phar config -g repos.packagist composer https://mirrors.cloud.tencent.com/composer/ # 全局换为中国全量镜像源 php composer.phar config -g repo.packagist composer https://packagist.phpcomposer.com # 仅本工程换为阿里云源 php composer.phar config repo.packagist composer https://mirrors.aliyun.com/composer/ # 仅本工程换为腾讯云源 php composer.phar config repo.packagist composer https://mirrors.cloud.tencent.com/composer/ # 仅本工程换为中国全量镜像源 php composer.phar config repo.packagist composer https://packagist.phpcomposer.com当然，最后你又想换回默认的，也可以，就放一条指令了，至于工程恢复和方法2的，自己动动你的小脑瓜。composer config -g --unset repos.packagist配置文件然后呢，你就得生成一个自己的Laravel配置文件了，很简单，复制一份example，基本就是Laravel项目的常规操作。cp .env.example .envAPP KEY现在配置文件有了，那么就该生成一个APP KEY了，这个得自己生成自己的，用来做加密用的。直接用php执行脚手架指令就可以了。你可以先看一下配置文件，看看APP_KEY是空的。vim .env执行前的配置文件然后执行一下生成指令，会提示成功。php artisan key:generate当然，如果你就是不想用php指令，你也可以去把配置文件里的DEBUG改成false，然后直接访问地址，会报错然后有个按钮让你生成app key，你点一下就行了。当然别忘了把DEBUG改回来。Nginx配置然后你需要简单地配置一下网站配置。首先是运行目录，因为是Laravel项目，你得把运行目录改成./public，别把根目录改了。然后是加一个伪静态，我也不知道为什么我之前的Laravel项目不用加，反正如果出现接口404的话，就把这个伪静态加上。location / { try_files $uri $uri/ /index.php$is_args$query_string; } 部署完毕现在，所有配置都结束了，我们可以访问一下地址看看能不能运行，默认歌单是我之前收藏地一个CityPop的歌单，如果大家喜欢CityPop，蒸汽波，那大家就是朋友。配置文件现在，我们可以通过该一些配置文件来实现自定义，因为最近忙，所以先用配置文件凑合着，以后再写管理后台。首先打开配置文件vim .env歌单我们可以看到里面有一个NETEASE_MUSIC_LIST_ID，这个就是歌单ID，我们找到我们网易云的歌单，把ID填进去就行，不要填空或者不存在的歌单，或者全是VIP音乐和云盘音乐的歌单，会放不出来。至于歌单ID怎么获取，你去你自己网易云的歌单上，点一下分享，通过链接分享，这里面id就是歌单ID，比如下面这个，7427674421就是歌单ID，这是我的网站上用的。https://music.163.com/playlist?id=7427674421&userid=117499087网易云Cookie至于为什么要网易云Cookie，因为网易云很讨厌，Web版歌单有音乐数量限制，不登录只能看10条，登录了能看20条，而且不登录不能看自己和别人喜欢的音乐歌单，登录了之后这个歌单不受个数限制。 至于网易云的Cookie，你去浏览器上登录你的网易云账户，然后按F12，刷新一下页面，在里面上边找到Network也就是网络标签，下面看一下请求，可以直接选Doc那个选项看一下请求的文档，量少看着方便，点一下下面的第一条，看右边的header，往下找Request Headers，里面有一个Cookie，把冒号后面的全都复制粘贴到NETEASE_MUSIC_COOKIES就成了，别忘了外面的双引号不能删。音乐数量限制NETEASE_MUSIC_MY_MUSIC_COUNT这个是为了让你在输入Cookie之后，想使用自己喜欢的音乐歌单，但是歌太多了，按照现在的设计会每有一首歌就会请求一次你的服务器，你有几百首就得几百次，所以还是限制一下的好，为了减轻负载，我还特意把请求变成了同步的。页脚这个不用说了，FOOTER_CONTENT，就是在你网站下面显示的版权备案号之类的。开发计划因为这两天一直在肝论文，所以其实这个项目到这里只是一个开头。总不能浪费了Laravel的性能（大家要是扒一下源码就知道这个玩意儿现在写得多简陋了）。所以等我写完论文，在七月份到公司报到之前，会继续补完一些功能，包括但不限于：列表展示，乱序播放，自定义歌曲，其他音乐来源，网易云会员音乐支持，搜索功能，音乐直链获取，优化移动端显示，优化请求逻辑，优化访问速度，使用数据库，管理端等等等等。如果大家感兴趣欢迎去GitHub给我小星星，如果大家有什么问题可以提Issue，至于开发计划已经放到了GitHub项目的Project里面，大家可以看一下。结语啊，又水了一篇博客，写这篇博客纯粹是为了推一下我写的这个小玩意儿，然后是写论文写的太累了，休息休息，写了一半了，有30多页一万多字了，现在进度写到了LSTM原理这块，果然算法还是我的老大难。然后，关于这个播放器，可以访问UtopiaXC's Music Player来感受一下至于这篇教程，我觉得已经详细得不能再详细了，就算是电脑小白来应该也知道咋回事了。就这样，大家晚安。 2022-05-12 00:31 UtopiaXC 于大连