部署工具:
Navicat Premium 16,连接mysql数据库,执行sql脚本
RedisDesktopManager,连接云服务器redis数据库
云服务器开放端口
8080,8091,8089(音乐播放平台的服务端,客户端,管理端)
9000,9001(MinIO)
6379(Redis)
3306(Mysql)
1.配置mysql数据库
1.1登录数据库,授权数据库root用户远程连接。
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '数据库密码' WITH GRANT OPTION;
FLUSH PRIVILEGES;
1.2导入数据库至云服务器中,并将代码服务端数据库的配置改为云服务器的数据库
由于本机采用的是mysql8.0.43,云服务器是MariaDB 10.6.20,于是修改原来sql脚本中的排序规则,使其适配云服务器版本。
将utf8mb4_0900_ai_ci全部替换为utf8mb4_general_ci,执行sql脚本。
服务端添加pom依赖,修改安排application.yml中mysql相关的配置。
<!-- 添加MariaDB驱动 -->
<dependency>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
<version>3.1.4</version>
</dependency>
spring:
# 配置数据源
datasource:
driver-class-name: org.mariadb.jdbc.Driver # 改为MariaDB驱动
url: jdbc:mariadb://你的云服务器IP:3306/vibe_music?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai # 修改为云服务器地址
username: vibe_user # 修改为云服务器上的用户名
password: 你的云服务器数据库密码 # 修改为云服务器上的密码
type: com.alibaba.druid.pool.DruidDataSource # 配置连接池
1.3 执行sql脚本,替换原有的url地址
UPDATE tb_artist
SET avatar = REPLACE(avatar, 'http://localhost:9000/', 'http://服务器ip:9000/')
WHERE avatar LIKE 'http://localhost:9000/%';
UPDATE tb_banner
SET banner_url = REPLACE(banner_url, 'http://localhost:9000/', 'http://服务器ip:9000/')
WHERE banner_url LIKE 'http://localhost:9000/%';
UPDATE tb_playlist
SET cover_url = REPLACE(cover_url, 'http://localhost:9000/', 'http://服务器ip:9000/')
WHERE cover_url LIKE 'http://localhost:9000/%';
UPDATE tb_song
SET cover_url = REPLACE(cover_url, 'http://localhost:9000/', 'http://服务器ip:9000/')
WHERE cover_url LIKE 'http://localhost:9000/%';
UPDATE tb_song
SET audio_url = REPLACE(audio_url, 'http://localhost:9000/', 'http://服务器ip:9000/')
WHERE audio_url LIKE 'http://localhost:9000/%';
2.配置redis
2.1宝塔面板安装redis6.2.21版本,设置密码,允许外部连接
将配置文件中的bind 127.0.0.1 改为bind 0.0.0.0,并设置密码
bind 0.0.0.0
requirepass 密码
2.2修改application.yml中redis相关配置
spring:
data:
redis:
database:
host:
port:
password:
3.配置minio
3.1宝塔面板安装minio(docker版),这里宝塔启动的minio不会启动9001端口,对此关闭当前minio容器,然后自己启动官方镜像。
docker stop dk_minio-minio-1
docker rm dk_minio-minio-1
docker run -d \
--name minio \
-p 9000:9000 \
-p 9001:9001 \
-e MINIO_ROOT_USER=用户名 \
-e MINIO_ROOT_PASSWORD=密码 \
-v /www/dk_project/dk_app/dk_minio/data:/data \
minio/minio server /data --console-address ":9001"
3.2登录minio后台,创建桶,把数据都传上去(数据上传时网络要稳定)
http://云服务器ip:9000
3.3安装mc工具,设置桶访问权限
# 下载 mc 客户端 (Linux 64位版本)
wget https://dl.min.io/client/mc/release/linux-amd64/mc
# 赋予执行权限
chmod +x mc
# 将其移动到系统可执行文件路径,方便全局调用
sudo mv mc /usr/local/bin/
# 验证安装是否成功
mc --version
#设置别名
mc alias set myminio http://服务器ip:9000 用户名 密码
#设置权限
mc anonymous set download myminio/vibe-music-data
#测试权限
mc anonymous get myminio/vibe-music-data
3.4后端服务端修改application.yml配置
minio:
endpoint: http://云服务器ip:9000 # 修改你的 MinIO 端点
accessKey: # 修改你的用户名
secretKey: # 修改你的密码
bucket: # 桶的名称
4.部署服务端
4.1maven命令构建jar包,打开宝塔面板,放到任意位置,点击网站—java项目,项目jdk选择jdk17,项目路径选择jar包所在位置
5.部署客户端
5.1宝塔面板—网站—php项目,域名填写云服务器ip:8091,php项目选择纯静态,创建网站。
5.2客户端输入pnpm build命令,生成dist文件夹,关闭网站后将其中内容拖放到该网站对应位置下。
5.3修改网站的配置文件,添加下面代码
# 核心配置:支持前端路由(Vue/React的history模式)
location / {
# 首先尝试访问实际文件,如果没有则返回index.html由前端路由处理
try_files $uri $uri/ /index.html;
}
# 反向代理到后端API(假设后端运行在8080端口)
location /api/ {
proxy_pass http://127.0.0.1:8080/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# 超时设置
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
}
5.4打开客户端部署包的地址,输入以下命令,修改环境变量为/api,使其通过nginx代理,重启nginx
sed -i 's|baseURL:"http://localhost:8080"|baseURL:"/api"|g' ./static/js/index-Di7SMdHA.js
5.5.访问客户端网址,测试是否部署成功
http://云服务器ip:8091/
6.部署管理端(类似客户端)
sed -i 's|baseURL:"http://localhost:8080"|baseURL:"/api"|g' ./static/js/index-BvJ3iHAf.js
