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