解决springboot项目部署到centos7下的tomcat中获取系统时间异常问题

本文探讨了SpringBoot应用部署到CentOS 7服务器Tomcat后,系统时间与实际时间不一致的问题。通过排查系统时间并调整Tomcat时区配置,解决了程序获取错误时间的问题。

一、问题描述:
springboot项目部署到服务器(centos7)tomcat之后,当程序中有需要获取系统时间时,发现获取到的系统时间与真实时间不准。

出现的问题图片举例:
1 dljsapp dljsapp 121 Jan  4 10:36 BOSSNM_0_3002_0001_50_M1_2022-01-03_851_0000002022-01-03 21:36:21_000.json
根据图片,出现的问题是Linux的系统时间是1月4号的早上10点,但是我的web程序获取到的系统时间是1月3号的晚上9点,两者的时间差了13个小时。

二、问题的解决思路:
<1>、首先排查Linux的系统时间是否正确;
排查结果如下图所示:
在这里插入图片描述
由上图可以,Linux的系统时间是正常的,其中CST是上海的时间位于东八区,UTC是标准东0区,两者的差距为8个小时才正常。
在排除不是Linux系统时间造成的影响之后,进行如下步骤。

<2>、因为web程序是部署在Tomcat下的,所以考虑是Tomcat未设置标准时区造成的。

进入Tomcat的bin目录的catalina.sh文件
在首行添加如下配置:

JAVA_OPTS="${JAVA_OPTS} -Duser.timezone=GMT+08"

添加位置如图所示:
在这里插入图片描述
添加完成之后测试结果:
在这里插入图片描述
由图可知两个结果一致,则结论为修改Tomcat的时区设置则可解决springboot程序部署在Linux下获取到异常时间的问题

<think>嗯,用户想知道如何在Linux服务器上部署Spring Boot应用并配置负载均衡。我需要根据提供的引用内容来组织回答。首先,部署Spring Boot应用的话,应该包括打包、上传、运行这些步骤。引用1提到需要将Spring Boot项目打包成JAR,可能需要Maven配置,比如引用5中的packaging和finalName设置。然后部署到服务器上,可能还要考虑Tomcat的支持,引用2中的依赖项需要添加,这样打包时包含Tomcat。 接下来是负载均衡部分,用户可能想用Nginx作为反向代理,引用4提到使用Nginx进行均衡负载测试,所以应该配置Nginx的upstream和server块,指向不同的Spring Boot实例端口。比如配置两个后端服务8080和8081,然后在Nginx里设置负载均衡策略,默认轮询,或者可以加权重。 另外,引用3和引用4中的application.yml配置可能涉及端口设置,所以需要修改每个实例的server.port。同时,要确保数据库连接正确,引用1提到数据库的准备,可能需要运行SQL文件创建数据库,所以在部署应用前要确保数据库环境已经配置好。 用户可能还关心如何保持应用在后台运行,比如使用nohup命令,或者配置systemd服务。此外,防火墙设置也是必要的,开放相关端口如80、8080、8081等。 总结一下,步骤应该是: 1. 打包Spring Boot应用,添加Tomcat依赖。 2. 上传JAR到服务器,运行多个实例不同端口。 3. 配置Nginx负载均衡,指向这些实例。 4. 测试访问Nginx端口,确认请求分发到不同实例。 可能的问题包括依赖项配置错误,端口冲突,或者Nginx配置不正确。需要检查日志,比如Spring Boot的启动日志和Nginx的error.log。另外,负载均衡策略的选择和健康检查也是需要考虑的,但引用里没有提到,可能需要简要说明常见的策略。 最后,生成相关问题,比如如何优化负载均衡,或者如何结合Vue部署,保持前后端分离的结构。引用4和5都提到Vue和Spring Boot的联合部署,但用户当前问题可能只需要Spring Boot部分,不过相关问题可以引导到其他方面。</think>### 分步指南:部署Spring Boot项目并配置负载均衡 #### 一、Spring Boot项目部署准备 1. **项目打包配置** - 在`pom.xml`中添加Tomcat外部支持(适用于War包部署): ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> ``` 确保打包方式为`<packaging>jar</packaging>`(默认)或`war`[^2][^5]。 - 使用Maven命令打包: ```bash mvn clean package ``` 2. **上传文件到服务器** - 将生成的`JAR/WAR`文件(如`myapp.jar`)通过`scp`或SFTP工具上传至Linux服务器目标目录(如`/opt/app`)。 3. **运行Spring Boot实例** - 启动多个实例(不同端口实现负载均衡): ```bash # 实例1(端口8080) nohup java -jar myapp.jar --server.port=8080 & # 实例2(端口8081) nohup java -jar myapp.jar --server.port=8081 & ``` 通过`--server.port`指定端口,`nohup`保持后台运行[^4]。 --- #### 二、Nginx负载均衡配置 1. **安装Nginx** ```bash # Ubuntu/Debian sudo apt install nginx # CentOS sudo yum install nginx ``` 2. **配置反向代理与负载均衡** - 编辑Nginx配置文件(`/etc/nginx/nginx.conf`或`/etc/nginx/conf.d/load-balancer.conf`): ```nginx http { upstream springboot_servers { server 127.0.0.1:8080 weight=2; # 权重2 server 127.0.0.1:8081; # 默认权重1 # 可添加更多实例 } server { listen 80; server_name your_domain.com; location / { proxy_pass http://springboot_servers; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } } ``` - **负载均衡策略**:默认轮询,可选`weight`(权重)、`ip_hash`(会话保持)等[^4]。 3. **重启Nginx生效** ```bash sudo nginx -t # 检查配置语法 sudo systemctl restart nginx ``` --- #### 三、验证与测试 1. **检查服务状态** - 确认Spring Boot实例日志无报错: ```bash tail -f /opt/app/nohup.out ``` - 检查Nginx状态: ```bash systemctl status nginx ``` 2. **负载均衡测试** - 多次访问`http://your_domain.com`,观察后端实例日志是否交替处理请求: ```bash # 查看8080端口实例日志 tail -f /opt/app/logs/8080.log # 查看8081端口实例日志 tail -f /opt/app/logs/8081.log ``` --- #### 四、常见问题与优化 1. **防火墙配置** - 开放端口: ```bash sudo ufw allow 80/tcp # Nginx sudo ufw allow 8080/tcp # Spring Boot实例 sudo ufw allow 8081/tcp ``` 2. **进程守护** - 使用`systemd`管理Spring Boot服务(示例单元文件`myapp.service`): ```ini [Unit] Description=My Spring Boot App After=syslog.target [Service] ExecStart=/usr/bin/java -jar /opt/app/myapp.jar --server.port=8080 User=appuser Restart=always [Install] WantedBy=multi-user.target ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值