liunx tomcat(java new Date)服务时间比系统时间慢8个小时,刚起完服务时间是正常的,隔一天就变了

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了liunx tomcat(java new Date)服务时间比系统时间慢8个小时,刚起完服务时间是正常的,隔一天就变了相关的知识,希望对你有一定的参考价值。

调过jre和tomcat的启动参数都不行,每到凌晨就差8个小时了
系统时间:2017年 05月 25日 星期四 10:37:06 CST
硬件时间:2017年05月25日 星期四 10时37分06秒 -0.891177 seconds
# vi /etc/sysconfig/clock
ZONE="Asia/Shanghai"
UTC=false
ARC=false
Linux系统时间不变,只是部署在其上的tomcat(具体点就是java new Date()获取到的时间)服务时间变慢了8个小时

参考技术A

不会是ntpdate 同步时间自动修改了吧?

tomcat 的时间变化,那有可能是程序代码出问题了。

有代码误调用了 TimeZone.setDefault , 这个是比较常见的,特别是有格式化时间的代码处。格外小心,仔细查查吧,我以前被这个坑过。


import java.util.Date;
import java.util.TimeZone;

public class Test 

public static void main(String[] args) 

System.out.println(new Date().toString());
TimeZone.setDefault(TimeZone.getTimeZone("0"));
System.out.println(new Date().toString());



//Thu May 25 11:44:47 CST 2017
//Thu May 25 03:44:47 GMT 2017

Liunx安装Tomcat部署Java Web项目

安装JDK

因为Tomcat是依赖Java的,所以安装Java肯定是第一部

使用命令判断Linux是否安装Java

java -version

如果没有安装,请参考下面地址进行安装:http://www.cnblogs.com/hanyinglong/p/5025635.html

配置tomcat

如果是springboot可以选择打jar包,不需要安装tomcat,后边打包项目时会单独介绍

下载tomcat

下载tomcat linux的包,地址:http://tomcat.apache.org/download-80.cgi,下载的版本是8.0,下载方式如图

安装tomcat

使用 ssh 管理工具如:xshell等

在Xshell中使用命令跳转到local下面创建者自己的文件夹:kencery

cd /usr/local
mkdir kencery
cd kencery/

然后使用Xftp将tomcat复制到kencery文件夹下面

将上传的Tomcat8.0解压,解压之后重命名为tomcat

tar -zxv -f apache-tomcat-8.5.72.tar.gz 
mv apache-tomcat-8.5.72 tomcat
cd tomcat

解析完成后即可以启动Tomcat,检查是否安装成功

/usr/local/kencery/tomcat/bin/startup.sh

访问自己的8080端口(检查安全组和防火墙端口是否打开),查看服务是否启动,出现如下界面代表成功

如果没有启动以在tomcat安装目录下的bin下执行./catalina.sh run 让它debug运行,看看错误出在哪里

比如我启动的时候提示

/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.171-8.b10.el6_9.x86_64/bin/java: No such file or directory

查看tomcat启动使用的JRE_HOME发现不对,进行修改

问题处理

whereis java 

ls -lrt /usr/bin/java

ls -lrt /etc/alternatives/java

修改vim /etc/profile

JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-0.el8_2.x86_64
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME CLASSPATH PATH

之后就可以成功启动了

修改端口(可选)

如果8080端口被占用的话,可以修改conf目录下的server.xml文件

<Connector port="8081" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

https://help.fanruan.com/finereport/doc-view-770.html

Linux中设置tomcat的服务器启动和关闭

Linux的系统和重启我们每次都需要接路径并且执行命令,那么我们可以设置成service的形式来实现这个功能

执行命令:vim /etc/rc.d/init.d/tomcat,创建脚本文件,在文件中写入如下代码,保存并且退出

#!/bin/bash  
# /etc/rc.d/init.d/tomcat  
# init script for tomcat precesses  
# processname: tomcat  
# description: tomcat is a j2se server  
# chkconfig: 2345 86 16  
# description: Start up the Tomcat servlet engine.  

if [ -f /etc/init.d/functions ]; then  
. /etc/init.d/functions  
elif [ -f /etc/rc.d/init.d/functions ]; then  
. /etc/rc.d/init.d/functions  
else  
echo -e "\\atomcat: unable to locate functions lib. Cannot continue."  
exit -1  
fi  
RETVAL=$?  
CATALINA_HOME="/usr/local/kencery/tomcat"   #tomcat安装目录,你安装在什么目录下就复制什么目录  
case "$1" in  
start)  
if [ -f $CATALINA_HOME/bin/startup.sh ];  
then  
echo $"Starting Tomcat"  
$CATALINA_HOME/bin/startup.sh  
fi  
;;  
stop)  
if [ -f $CATALINA_HOME/bin/shutdown.sh ];  
then  
echo $"Stopping Tomcat"  
$CATALINA_HOME/bin/shutdown.sh  
fi  
;;  
*)  
echo $"Usage: $0 {start|stop}"  
exit 1  
;;  
esac  
exit $RETVAL

给文件添加权限,使得脚本文件可以执行,命令为

chmod 755 /etc/rc.d/init.d/tomcat

将其添加到服务中,命令如下:

chkconfig --add /etc/rc.d/init.d/tomcat

然后将下面的配置文件加到tomcat中的catalina.sh文件中的最后面,命令如下:

vim /usr/local/kencery/tomcat/bin/catalina.sh

添加的配置如下:

export JAVA_HOME=/usr/local/kencery/javajdk   #javajdk的安装路径,使用echo $JAVA_HOME命令可以读取  
export CATALINA_HOME=/usr/local/kencery/tomcat  
export CATALINA_BASE=/usr/local/kencery/tomcat  
export CATALINA_TMPDIR=/usr/local/kencery/tomcat/temp

以上所有工作顺利进行并没有报错,则配置完成,输入下面命令进行验证:

service tomcat start
service tomcat stop

给tomcat设置用户名和密码登录

在tomcat安装包下面的conf文件下含有一个tomcat-user.xml文件,修改此文件即可,命令为:

vim tomcat-users.xml

在打开的xml配置文件最后面写入下面这段配置文件之后保存并且退出即可

<role rolename="admin-gui"/>   
<role rolename="manager-gui"/>
<user username="tomcat" password="tomcat" roles="manager-gui,admin-gui"/>

不要用tomcat-users.xml里面有注释的用户,用文件提供的用户名和密码去访问的时候,会出现403错误,因为我们没有指定用户所拥有的权限的原因,如我们现在想访问tomcat中图形化管理应用的功能,也就是Manager App,就需要指定manager-gui的权限,如果想访问host manager就必须指定admin-gui权限,所以推荐直接在最后添加配置文件,并修改默认密码

重启服务之后,检测是否登录成功,如果登录进入系统,则说明登录成功

如果此时仍然出现403 Access Denied错误,那么就是访问的ip地受到了限制

打开**/webapps/manager/META-INF/目录下context.xml文件,不是conf/目录下的context.xml文件将里面的内容注释掉或者修改**为

<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\\.\\d+\\.\\d+\\.\\d+|::1|0:0:0:0:0:0:0:1|\\d+\\.\\d+\\.\\d+\\.\\d+" />

打包Java web项目

将打包的war包放到tomcat默认的发布web项目的目录webapps即可

普通web项目

普通的Javaweb项目由于没有使用maven,不能一键打包成war包

可以参考以下教程

https://blog.csdn.net/sandman_13/article/details/79060936

Springboot项目

jar包-不需要安装tomcat

jar包方式启动,也就是使用spring boot内置的tomcat运行,服务器上面只要配置了jdk1.8及以上,不需要外置tomcat

只要项目在本地可以成功运行都可以直接使用maven package打包的

会在target目录下生成jar包

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WLEdJ0nA-1637027344107)(https://gitee.com/q_one/oceanpic/raw/master/img2021-/202111160945323.png)]

也可以使用maven在控制台使用命令打包

运行也是很简单

nohup java -jar demo-0.0.1-SNAPSHOT.jar --server.port=8888 >temp.txt &

nohup 保证程序可以后台运行
>temp.txt & 会把日志文件输入到指定的文件中,没有则会自动创建

war包-需要安装tomcat

修改pom文件,添加以下这行

<packaging>war</packaging>

同样是点击maven package按钮打包,打包成功后会在targets目录下生成war包

需要把war报传到服务器tomcat的webapps目录下

启动tomcat

注意:

将项目打成war包,部署到外部的tomcat中,这个时候,不能直接访问 spring boot 项目中配置文件配置的端口。application.yml中配置的server.port配置的是spring boot内置的tomcat的端口号, 打成war包部署在独立的tomcat上之后, 你配置的server.port是不起作用的

参考:

https://www.cnblogs.com/hanyinglong/p/5024643.html

以上是关于liunx tomcat(java new Date)服务时间比系统时间慢8个小时,刚起完服务时间是正常的,隔一天就变了的主要内容,如果未能解决你的问题,请参考以下文章

liunx tomcat 运行模式apr

tomcat在windows上部署java项目可以运行,在liunx上部署了就报503错误

liunx系统虚拟机下安装tomcat9以及访问tomcat案例

liunx新装tomcat之后,tomcat不能识别新发布的项目

liunx中tomcat的下载,配置,与启动tomcat

liunx下部署tomcat