说在前面

网易云Api的项目地址:
image.png
我之前图方便,就把它部署在vercel上(毕竟vercel部署一分钟就搞定了),但是vercel有点慢,不用科学上网的话总有点卡顿,开发的时候一直用的mock,后来实在忍不了,还是放放在自己服务器上快点。

部署完才发现,实际上部署到服务器上也就多花个克隆项目和安装依赖的时间而已

部署前准备

服务器配置:Ubuntu 18.04 server 64bit with ARM
环境配置:

  • node:16.7.0
  • npm:8.18.0
  • nginx:1.15.0/linux

可以直接用宝塔安装nginx和pm2

开始部署

克隆项目

可以直接克隆原项目,也可以先fork到自己的仓库,然后克隆自己fork的项目

image.png
在服务器 /www/wwwroot/项目名称 目录下克隆该项目:

git clone https://github.com/Binaryify/NeteaseCloudMusicApi.git
image.png

安装依赖

进入项目并安装依赖

cd NeteaseCloudMusic
npm install

如果这个时候提醒 npm 需要更新就执行 npm i -g npm 更新npm到最新

image.png

防火墙、安全组中开放服务端口

  1. 安全组开放:找到服务器厂商的控制台,开放3000端口

不知道为什么,我是华为的服务器,在宝塔放通了3000端口,但是华为云这边安全组没有放通就是不行。

image.png
image.png

  1. 防火墙开放3000端口,依次输入以下命令:
systemctl start firewalld.service 
firewall-cmd --zone=public --add-port=3000/tcp --permanent
systemctl restart firewalld.service
firewall-cmd --reload

nginx做映射

  1. 首先添加一个站点

image.png
image.png

  1. 配置该网站的 nginx,使其映射到 api 项目。

image.png
image.png
在nginx的server配置中增加一个代理地址:

location / {
    proxy_pass http://127.0.0.1:3000;
    proxy_set_header Host 127.0.0.1;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header REMOTE-HOST $remote_addr;

    add_header X-Cache $upstream_cache_status;
    #Set Nginx Cache
    add_header Cache-Control no-cache;
}

运行项目

  1. 安装forever(一个可以后台运行node项目的工具,类似nodemon)

基础命令

  • forever start -a app.js / forever start -a bin/www 开启服务
  • forever stop -a app.js / forever stop -a bin/www 关闭服务
npm i forever -g
  1. 启动项目
cd /www/wwwroot/项目地址
forever start -a app.js

不出意外的话应该会看到以下内容:
image.png
只要没报错,应该就问题不大,但有时可能这个项目的端口被其他服务占用了,或者说这个项目你已经开过一遍了,可以通过 lsof -i:端口号 去查询以下占用的程序,然后将其kill掉,或者换一个端口号(别忘了开安全组和防火墙)。
image.png

检查部署情况

  1. 浏览器输入刚刚配置的站点信息,不出意外的话就可以看到如下界面:
    image.png

  2. 通过 postman 测试接口:
    image.png

结束

到这儿就部署成功啦,可以开始写一个属于自己的网易云音乐了!