记第一次部署前后端项目及遇到的问题
2025/10/2大约 3 分钟
记第一次部署前后端项目及遇到的问题
前端部署(vercel)
前端问题:前端未登录不能跳转到登陆界面
vercel部署,需要加入vercel.json指定跳转
{
"rewrites": [
{ "source": "/api/(.*)", "destination": "https://api.findcompanions.xyz/api/$1" },
{ "source": "/(.*)", "destination": "/index.html" }
]
}后端部署(京东轻量云主机提供MySQL和Redis服务+宝塔+Render后端部署
京东云主机可以选择预安装宝塔
Redis远程连接问题
宝塔直接安装的Redis无法进行远程连接,所以需要自己下载Redis
sudo yum install -y gcc make # CentOS/RHEL
# 或者
sudo apt update && sudo apt install -y gcc make # Ubuntu/Debian
# 下载 Redis 最新稳定版源码
curl -O https://download.redis.io/releases/redis-7.2.5.tar.gz
# 解压、编译、安装
tar xzf redis-7.2.5.tar.gz
cd redis-7.2.5
make
sudo make install然后使用nano修改redis配置
sudo nano /etc/redis/redis.conf将bind 127.0.0.1改为bind 0.0.0.0redis默认账号名是**default**, 并且在宝塔面板的安全选项加入6379端口,京东云也加入6379端口
Mysql远程连接问题(宝塔安装的mysql好像默认没有)
新建一个用户,给他远程连接的权限
CREATE USER 'remote_user'@'%' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;开放京东云3306端口还有宝塔安全的3306端口
跨域问题
前端绑定在主域名上,后端绑定在子域名上,这样是无法进行交互的,所以后端要进行跨域设置,需要设置全局跨域配置,将Controller上的跨域设置删除
@Configuration
public class CorsConfig {
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurer() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOriginPatterns("https://*.***.xyz", "https://***.xyz") // 允许的前端地址
.allowedMethods("*") // GET, POST, PUT, DELETE 等
.allowedHeaders("*") // 允许任何头部
.allowCredentials(true) // 允许携带 Cookie
.maxAge(3600);
}
};
}
}前后端能交互,但是涉及到HttpServletRequest request参数的方法无法正常加载数据
这个问题本质还是跨域问题,前端请求的不是直接运行在服务器上的后端Java应用,而是render反向代理的子域名在配置yaml文件加上
// 让spring boot项目支持通过代理访问
forward-headers-strategy: native
//线上环境需要将下面配置注释掉
//session: │
//cookie: │
//domain: localhostdocker
dockers-compose.yaml相当于本地的application.yaml,拉取镜像后配置镜像。制作镜像前需要先打jar包
mvn package -DskipTests制作镜像
# 构建阶段
FROM maven:3.9.4-eclipse-temurin-17 AS builder
WORKDIR /app
COPY . .
# 添加网络检测和Maven版本验证
RUN ping -c 3 repo.maven.apache.org || echo "网络连接存在问题"
RUN mvn -version
# 使用国内镜像源加速依赖下载
RUN mkdir -p ~/.m2 && echo '<settings><mirrors><mirror><id>aliyunmaven</id><mirrorOf>*</mirrorOf><name>阿里云公共仓库</name><url>https://maven.aliyun.com/repository/public</url></mirror></mirrors></settings>' > ~/.m2/settings.xml
# 执行Maven打包,添加详细输出
RUN mvn clean package -Dmaven.test.skip=true -X || { echo "Maven构建失败"; exit 1; }
# 运行阶段
FROM openjdk:17-jdk-slim
WORKDIR /app
COPY --from=builder /app/target/*.jar app.jar
EXPOSE 8080
CMD ["java", "-jar", "app.jar"]在dockerdesktop查看镜像ID打上标签然后再push
打标签
docker tag f650ec825382 dockerusername/projectName:tags
example:
docker tag f650ec82538 crazy/myapp:v1.0推送镜像
docker push crazy/myapp:latest