export PATH=
J
A
V
A
_
H
O
M
E
/
b
i
n
:
JAVA\_HOME/bin:
JAVA_HOME/bin:PATH
export CLASSPATH=.:
J
A
V
A
_
H
O
M
E
/
l
i
b
/
d
t
.
j
a
r
:
JAVA\_HOME/lib/dt.jar:
JAVA_HOME/lib/dt.jar:JAVA_HOME/lib/tools.jar
**刷新配置生效:`source /etc/profile`**
**再次查看JDK:`java -version`**
### 3.2 配置Tomcat
#### 3.2.1 安装Tomcat
**已配置Tomcat的可以跳过该步骤**
**没有安装Tomcat的,可以先到官方下载,再进行解压安装**
<https://archive.apache.org/dist/tomcat/tomcat-8/v8.0.24/bin/>
![在这里插入图片描述](https://img-blog.csdnimg.cn/41bf6f60962f4a808841ea1c263d1be3.png)
**我这里Tomcat解压并安装的示例路径如下:**
mkdir -p /usr/tomcat/
cd /usr/tomcat/
tar -xvf apache-tomcat-8.0.24.tar.gz
cd /usr/tomcat/apache-tomcat-8.0.24
**启动Tomcat**
cd /usr/tomcat/apache-tomcat-8.0.24/bin
./startup.sh
![在这里插入图片描述](https://img-blog.csdnimg.cn/7700bbedd8d64253bf31ce0174e747bd.png)
**查看Tomcat启动日志**
tail -f /usr/tomcat/apache-tomcat-8.0.24/logs/catalina.out
**查看Tomcat运行状态**
ps -ef|grep tomcat
ps -ef|grep java
**如果Tomcat正常启动,会出现如下相关进程**
![在这里插入图片描述](https://img-blog.csdnimg.cn/d5817a3c50f5453183effb3c84f9a8ed.png)
#### 3.2.2 配置Tomcat远程
##### 3.2.2.1 配置Tomcat远程(无密码)
**无密码的很简单,直接修改Tomcat的bin目录下的`catalina.sh`,在关键信息`Execute The Requested Command`上面添加如下内容:**
CATALINA_OPTS=“
C
A
T
A
L
I
N
A
_
O
P
T
S
−
D
j
a
v
a
.
r
m
i
.
s
e
r
v
e
r
.
h
o
s
t
n
a
m
e
=
192.168.
x
x
.
x
−
D
c
o
m
.
s
u
n
.
m
a
n
a
g
e
m
e
n
t
.
j
m
x
r
e
m
o
t
e
"
C
A
T
A
L
I
N
A
_
O
P
T
S
=
"
CATALINA\_OPTS -Djava.rmi.server.hostname=192.168.xx.x -Dcom.sun.management.jmxremote" CATALINA\_OPTS="
CATALINA_OPTS−Djava.rmi.server.hostname=192.168.xx.x−Dcom.sun.management.jmxremote"CATALINA_OPTS="CATALINA_OPTS -Dcom.sun.management.jmxremote.port=12345”
CATALINA_OPTS=“
C
A
T
A
L
I
N
A
_
O
P
T
S
−
D
c
o
m
.
s
u
n
.
m
a
n
a
g
e
m
e
n
t
.
j
m
x
r
e
m
o
t
e
.
r
m
i
.
p
o
r
t
=
12345
"
C
A
T
A
L
I
N
A
_
O
P
T
S
=
"
CATALINA\_OPTS -Dcom.sun.management.jmxremote.rmi.port=12345" CATALINA\_OPTS="
CATALINA_OPTS−Dcom.sun.management.jmxremote.rmi.port=12345"CATALINA_OPTS="CATALINA_OPTS -Dcom.sun.management.jmxremote.authenticate=false”
CATALINA_OPTS=“$CATALINA_OPTS -Dcom.sun.management.jmxremote.ssl=false”
**注意修改`***hostname`为自己服务器的`公网IP`,还有`***jmxremote.rmi.port`这行不能少,少了会无法远程连接,网上很多这里都没配置。**
![在这里插入图片描述](https://img-blog.csdnimg.cn/d646203e596642b8b0ca276e1f7b6c5f.png)
**网上有些地方发现catalina.sh中配置CATALINA\_OPTS 不生效,于是想通过`JAVA_OPTS`,如修改上面catalina.sh中为JAVA\_OPTS:**
JAVA_OPTS=“
J
A
V
A
_
O
P
T
S
−
D
j
a
v
a
.
r
m
i
.
s
e
r
v
e
r
.
h
o
s
t
n
a
m
e
=
192.168.
x
x
.
x
−
D
c
o
m
.
s
u
n
.
m
a
n
a
g
e
m
e
n
t
.
j
m
x
r
e
m
o
t
e
"
J
A
V
A
_
O
P
T
S
=
"
JAVA\_OPTS -Djava.rmi.server.hostname=192.168.xx.x -Dcom.sun.management.jmxremote" JAVA\_OPTS="
JAVA_OPTS−Djava.rmi.server.hostname=192.168.xx.x−Dcom.sun.management.jmxremote"JAVA_OPTS="JAVA_OPTS -Dcom.sun.management.jmxremote.port=12345”
JAVA_OPTS=“
J
A
V
A
_
O
P
T
S
−
D
c
o
m
.
s
u
n
.
m
a
n
a
g
e
m
e
n
t
.
j
m
x
r
e
m
o
t
e
.
r
m
i
.
p
o
r
t
=
12345
"
J
A
V
A
_
O
P
T
S
=
"
JAVA\_OPTS -Dcom.sun.management.jmxremote.rmi.port=12345" JAVA\_OPTS="
JAVA_OPTS−Dcom.sun.management.jmxremote.rmi.port=12345"JAVA_OPTS="JAVA_OPTS -Dcom.sun.management.jmxremote.authenticate=false”
JAVA_OPTS=“$JAVA_OPTS -Dcom.sun.management.jmxremote.ssl=false”
**能正常启动tomcat,但是这种会导致在执行`shutdown.sh`停止tomcat时报错,原因是`JAVA_OPTS`是任何命令的运行时选项,因此执行`shutdown.sh`命令时会报错,提示端口(如`12345`)被占用,而`CATALINA_OPTS`则只会在"开始"时的选项,不会影响停止操作。**
![在这里插入图片描述](https://img-blog.csdnimg.cn/755648ba9f394e6a9b87bfb7d353a36c.png)
**重启Tomcat**
cd /usr/tomcat/apache-tomcat-8.0.24/bin
./shutdown.sh
./startup.sh
tail -f /usr/tomcat/apache-tomcat-8.0.24/logs/catalina.out
**查看Tomcat进程**
`ps -ef|grep tomcat`
**看到Tomcat进程有远程hostname和port相关的信息,说明正常配置**
![在这里插入图片描述](https://img-blog.csdnimg.cn/673899e53a9b4c27bdf0616640df6c30.png)
**Windows下重新进行远程连接,不用输入密码,直接连接即可**
![在这里插入图片描述](https://img-blog.csdnimg.cn/8bf9d88299c84f878a1b764941b2142b.png)
**正常连接,可查看时间范围内的数据,可以对JVM的堆区内存进行监控,还可以监控线程数、类以及CPU使用率**
![在这里插入图片描述](https://img-blog.csdnimg.cn/14efc97cb59b4d359ff509ffdd76d598.png)
##### 3.2.2.2 配置Tomcat远程(有密码)
**第一步:同样,修改catalina.sh内容**
CATALINA_OPTS=“
C
A
T
A
L
I
N
A
_
O
P
T
S
−
D
j
a
v
a
.
r
m
i
.
s
e
r
v
e
r
.
h
o
s
t
n
a
m
e
=
192.168.
x
x
.
x
−
D
c
o
m
.
s
u
n
.
m
a
n
a
g
e
m
e
n
t
.
j
m
x
r
e
m
o
t
e
"
C
A
T
A
L
I
N
A
_
O
P
T
S
=
"
CATALINA\_OPTS -Djava.rmi.server.hostname=192.168.xx.x -Dcom.sun.management.jmxremote" CATALINA\_OPTS="
CATALINA_OPTS−Djava.rmi.server.hostname=192.168.xx.x−Dcom.sun.management.jmxremote"CATALINA_OPTS="CATALINA_OPTS -Dcom.sun.management.jmxremote.port=12345”
CATALINA_OPTS=“
C
A
T
A
L
I
N
A
_
O
P
T
S
−
D
c
o
m
.
s
u
n
.
m
a
n
a
g
e
m
e
n
t
.
j
m
x
r
e
m
o
t
e
.
r
m
i
.
p
o
r
t
=
12345
"
C
A
T
A
L
I
N
A
_
O
P
T
S
=
"
CATALINA\_OPTS -Dcom.sun.management.jmxremote.rmi.port=12345" CATALINA\_OPTS="
CATALINA_OPTS−Dcom.sun.management.jmxremote.rmi.port=12345"CATALINA_OPTS="CATALINA_OPTS -Dcom.sun.management.jmxremote.authenticate=true”
CATALINA_OPTS=“$CATALINA_OPTS -Dcom.sun.management.jmxremote.ssl=false”
**与无密码的区别在于,这里`***authenticate`的值配置为`true`,表示需要开启密码进行鉴权**
**第二步:配置远程用户密码**
cd /usr/java/jdk1.8.0_202/jre/lib/management/
cp jmxremote.password.template jmxremote.password
chmod 600 jmxremote.password
修改`jmxremote.password`,快捷键`Shift + G`定位到最后,添加一个远程连接`用户 用户密码`,如:
tomcat abc@123456
![在这里插入图片描述](https://img-blog.csdnimg.cn/8b37d076b6a944dd811a67787748d705.png)
也可以放开现有的`monitorRole/controlRole`两个用户的注解,用来做远程连接也可以
![在这里插入图片描述](https://img-blog.csdnimg.cn/2cf5e689f66046988ac1f9ace1278e21.png)
**第三步:配置远程用户权限**
同样,当前目录下,修改`jmxremote.access`,快捷键`Shift + G`定位到最后,给新加的tomcat用户读写的权限:
tomcat readwrite
**保存:wq并退出**
![在这里插入图片描述](https://img-blog.csdnimg.cn/c903192bef884a5381076df1fc1996a7.png)
**重启Tomcat**
cd /usr/tomcat/apache-tomcat-8.0.24/bin
./shutdown.sh
./startup.sh
**查看Tomcat**
tail -f /usr/tomcat/apache-tomcat-8.0.24/logs/catalina.out
ps -ef|grep tomcat
**启动无报错,并且查看tomcat进程也有如下看关键信息`***authenticate=true`表明配置正常**
![在这里插入图片描述](https://img-blog.csdnimg.cn/e459b06fdbfa45b8b000890a35219214.png)
**Windows下重新进行远程连接,输入用户密码进行连接即可**
![在这里插入图片描述](https://img-blog.csdnimg.cn/ca4da78bf7044c4d98e0967b32ab5211.png)
**正常连接,监听堆区内存、线程数、类以及CPU占用率如下:**
![在这里插入图片描述](https://img-blog.csdnimg.cn/64b81044db384dc8a5cf0311db5547cd.png)
## 附录:如开启防火墙则需先放开端口
**本文使用的示例远程端口是`12345`,如果服务器已开启防火墙,需要配置防火墙添加该端口,才可以正常远程连接**
**查看防火墙的状态**
`systemctl status firewalld.service`
![在这里插入图片描述](https://img-blog.csdnimg.cn/f243b15a336b4046b425f24a61809c1b.png)
## 一线互联网大厂Java核心面试题库
![image](https://img-blog.csdnimg.cn/img_convert/774575ac0f8f1472f8ea74f72de735aa.webp?x-oss-process=image/format,png)
正逢面试跳槽季,给大家整理了大厂问到的一些面试真题,由于文章长度限制,只给大家展示了部分题目,更多Java基础、异常、集合、并发编程、JVM、Spring全家桶、MyBatis、Redis、数据库、中间件MQ、Dubbo、Linux、Tomcat、ZooKeeper、Netty等等已整理上传,感兴趣的朋友可以看看支持一波!
## 一线互联网大厂Java核心面试题库
[外链图片转存中...(img-uDxsrFRd-1714320563040)]
正逢面试跳槽季,给大家整理了大厂问到的一些面试真题,由于文章长度限制,只给大家展示了部分题目,更多Java基础、异常、集合、并发编程、JVM、Spring全家桶、MyBatis、Redis、数据库、中间件MQ、Dubbo、Linux、Tomcat、ZooKeeper、Netty等等已整理上传,感兴趣的朋友可以看看支持一波!
> **本文已被[CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】](https://bbs.csdn.net/topics/618154847)收录**