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个小时
不会是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个小时,刚起完服务时间是正常的,隔一天就变了的主要内容,如果未能解决你的问题,请参考以下文章
tomcat在windows上部署java项目可以运行,在liunx上部署了就报503错误
liunx系统虚拟机下安装tomcat9以及访问tomcat案例