1. 首页 > 服务器系统 > Centos

Centos搭建Tomcat服务器的实战分享

作为一个喜欢折腾服务器和后端开发的技术爱好者,我一直觉得自己动手搭建一个稳定的服务器是件特别有成就感的事情。最近,我在自己的服务器上安装了Tomcat,用来部署一些小型的Java Web应用。虽然网上有很多教程,但大部分都太过官方,缺乏实际操作中的细节和坑点,所以我想结合自己的经验,写一篇更贴近实际的安装指南。

这篇文章将从环境配置开始,一步步讲解如何安装Java、配置环境变量、下载并启动Tomcat,甚至包括一些常见问题的解决办法。如果你也想自己动手搭建一个Tomcat服务器,希望这篇文章能帮到你!

1. 更新系统

在开始之前,更新系统以确保安装的包是最新的:

yum update -y

2. 安装 OpenJDK 1.8

安装命令

使用以下命令安装 OpenJDK 1.8:

yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel

验证安装

安装完成后,验证 Java 是否安装成功:

java -version

输出应类似于:

openjdk version "1.8.0_262"
OpenJDK Runtime Environment (build 1.8.0_262-b10)
OpenJDK 64-Bit Server VM (build 25.262-b10, mixed mode)

3. 配置 Java 环境变量

编辑系统环境变量配置文件 /etc/profile:

vim /etc/profile

在文件末尾添加以下内容:

# Java 环境变量
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$PATH

保存并退出后,使配置生效:

source /etc/profile

验证环境变量

检查环境变量是否配置正确:

echo $JAVA_HOME
echo $JRE_HOME

输出应分别为:

/usr/lib/jvm/java-1.8.0-openjdk
/usr/lib/jvm/java-1.8.0-openjdk/jre

4. 下载并安装 Tomcat

创建 Tomcat 安装目录

创建一个目录用于存放 Tomcat:

mkdir -p /usr/local/tomcat
cd /usr/local/tomcat

下载 Tomcat

使用 curl 下载 Tomcat 9.0.84 的安装包:

curl -O https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.84/bin/apache-tomcat-9.0.84.tar.gz

耐心等待下载

解压 Tomcat

解压下载的安装包:

tar -zxvf apache-tomcat-9.0.84.tar.gz

解压后,您会看到一个名为 apache-tomcat-9.0.84 的目录。

删除安装包

(可选)删除下载的压缩包:

rm -f apache-tomcat-9.0.84.tar.gz

5. 配置 Tomcat 环境变量

为了方便管理,可以配置 Tomcat 的环境变量。

编辑 /etc/profile 文件:

vim /etc/profile

在文件末尾添加以下内容:

# Tomcat 环境变量
export CATALINA_HOME=/usr/local/tomcat/apache-tomcat-9.0.84
export PATH=$CATALINA_HOME/bin:$PATH

保存并退出后,使配置生效:

source /etc/profile

验证环境变量

检查 CATALINA_HOME 是否配置正确:

echo $CATALINA_HOME

输出应为:

/usr/local/tomcat/apache-tomcat-9.0.84

6. 启动 Tomcat

赋予执行权限

确保 Tomcat 的启动脚本具有执行权限:

chmod +x /usr/local/tomcat/apache-tomcat-9.0.84/bin/*.sh

启动 Tomcat

运行以下命令启动 Tomcat:

cd /usr/local/tomcat/apache-tomcat-9.0.84/bin
./startup.sh

如果启动成功,您会看到类似以下的输出:

Using CATALINA_BASE:   /usr/local/tomcat/apache-tomcat-9.0.84
Using CATALINA_HOME:   /usr/local/tomcat/apache-tomcat-9.0.84
Using CATALINA_TMPDIR: /usr/local/tomcat/apache-tomcat-9.0.84/temp
Using JRE_HOME:        /usr/lib/jvm/java-1.8.0-openjdk/jre
Using CLASSPATH:       /usr/local/tomcat/apache-tomcat-9.0.84/bin/bootstrap.jar:/usr/local/tomcat/apache-tomcat-9.0.84/bin/tomcat-juli.jar
Tomcat started.

7. 验证 Tomcat 是否启动成功

检查日志

查看 Tomcat 启动日志,确保没有报错:

tail -f /usr/local/tomcat/apache-tomcat-9.0.84/logs/catalina.out

检查端口

确认 Tomcat 是否在监听 8080 端口:

ss -tunlp | grep 8080

如果看到类似以下输出,说明 Tomcat 已经成功启动:

tcp    LISTEN     0      100    0.0.0.0:8080           0.0.0.0:*

访问 Tomcat

在浏览器中访问以下地址:

http://<服务器IP>:8080

如果看到 Tomcat 的默认主页,说明安装成功。

8. 配置防火墙(如果需要)

如果您无法访问 Tomcat 主页,可能是防火墙阻止了 8080 端口。使用以下命令开放 8080 端口:

firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload

9. 设置 Tomcat 开机自启(可选)

创建一个 Systemd 服务文件:

vim /etc/systemd/system/tomcat.service

在文件中添加以下内容:

[Unit]
Description=Apache Tomcat 9
After=network.target
[Service]
Type=forking
Environment=JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
Environment=CATALINA_HOME=/usr/local/tomcat/apache-tomcat-9.0.84
Environment=CATALINA_BASE=/usr/local/tomcat/apache-tomcat-9.0.84
ExecStart=/usr/local/tomcat/apache-tomcat-9.0.84/bin/startup.sh
ExecStop=/usr/local/tomcat/apache-tomcat-9.0.84/bin/shutdown.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target

保存并退出后,重新加载 Systemd 配置:

systemctl enable tomcat

设置 Tomcat 开机自启:

systemctl enable tomcat

手动启动 Tomcat:

 systemctl start tomcat

总结

通过这次安装,我对Tomcat的搭建过程有了更深的理解。从安装Java环境到配置Tomcat,再到解决防火墙和端口问题,整个过程看似简单,但实际上有很多细节需要注意,比如环境变量的配置、权限问题以及防火墙的设置。

CentOS服务器中如何解决内存泄漏问题

内存泄漏并不是“爆炸性内存飙升”,而是程序申请了内存但没有释放,造成系统可用内存逐渐减少,直到用光。

表现形式:

  • 系统空闲内存越来越少;
  • swap频繁被占用;
  • 某些服务响应变慢甚至挂掉;
  • 重启服务后内存才释放。

内存泄漏的根源在哪里?

应用代码问题:编写程序时未释放 malloc/new 等分配的内存

守护进程缺陷:nginx、php-fpm、java 等长期运行服务的bug

长时间运行的脚本:python、node、shell等后台脚本未释放变量

第三方库问题:依赖库内部泄漏,难以直接发现

系统内核模块或驱动:较罕见,可能是内核升级或驱动兼容性问题

如何排查内存泄漏问题?(最关键的一步)

第1步:查看系统内存使用情况

free -m

重点观察:

available 是否长期趋近 0;

swap 是否大量使用;

buffers/cache 是否偏高。

第2步:定位占用内存的“元凶进程”

top -o %MEM

或使用更强大的命令:

ps aux --sort=-%mem | head -n 10

输出示例:

USER    PID  %MEM   COMMAND
root    2145  42.3   java
www     3172  23.5   php-fpm

这时要重点盯住那些常驻内存、占比异常的进程。

第3步:深入分析进程内存使用情况

3.1 smem 工具(安装后用法超简洁)

yum install -y smem
smem -r -k

它能看到真实使用的物理内存(不被 cache 虚化)。

3.2 pmap 工具(进程内存映射)

pmap -x | sort -k3 -n | tail -n 20

查看哪个模块(库/文件)占了大量内存。

第4步:使用 valgrind 定位代码层内存泄漏(适合C/C++程序)

valgrind --leak-check=full ./your_program

输出示例:

==1234== 40 bytes in 2 blocks are definitely lost in loss record 1 of 1
==1234==    at 0x4C2FB55: malloc (vg_replace_malloc.c:299)

可以精准告诉你哪一行没有释放内存。

第5步:检查日志和历史增长趋势

长期运行的服务可能出现“缓慢型内存泄漏”,可使用:

sar -r -f /var/log/sa/saXX

查看历史内存使用情况。saXX 是日期编号。

如何解决内存泄漏问题?

方法1:重启相关服务,释放内存(临时措施)

systemctl restart php-fpm
systemctl restart nginx
systemctl restart your_custom_app

这属于“治标不治本”,适用于紧急止血。

方法2:升级服务组件或更换依赖库

举例:

PHP-fpm 内存泄漏,尝试升级到更新的版本;

Java 程序泄漏,尝试升级 JDK 版本或 GC 参数优化;

nginx 模块引起的,尝试重新编译或精简模块。

方法3:限制内存占用,防止“拖垮系统”

使用 systemd 中的内存限制功能:

编辑服务配置:

[Service]
MemoryLimit=512M

然后:

systemctl daemon-reexec
systemctl restart your-service

或者使用 ulimit 限制:

ulimit -v 524288 # 最大虚拟内存限制

方法4:定期监控 + 脚本自动检测

编写脚本检测进程内存暴涨,超过阈值就重启服务:

#!/bin/bash
PID=$(pidof php-fpm)
MEM=$(pmap $PID | tail -n 1 | awk '/[0-9]K/{print $2}' | sed 's/K//')
if [ "$MEM" -gt 1048576 ]; then
  echo "php-fpm memory leak suspected, restarting..."
  systemctl restart php-fpm
fi

可写入 crontab 每小时执行一次。

结语:内存泄漏不可怕,排查有套路。内存泄漏是“慢性病”,不会一夜爆炸,却能一点点拖垮系统。掌握“发现 → 定位 → 优化”三步法能帮助你“提前防火”

以上就是Centos搭建Tomcat服务器:我的实战经验分享(成功版本 详细!)的详细内容,更多相关资料请阅读主机测评网其它文章!

本文由主机测评网发布,不代表主机测评网立场,转载联系作者并注明出处:https://zhuji.jb51.net/centos/8660.html

联系我们

在线咨询:点击这里给我发消息

Q Q:2220678578