执拙 發表於 2025-7-24 00:00:00

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

<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li>1. 更新系统</li><li>2. 安装 OpenJDK 1.8<ul class="second_class_ul"><li>安装命令</li><li>验证安装</li></ul></li><li>3. 配置 Java 环境变量<ul class="second_class_ul"><li>验证环境变量</li></ul></li><li>4. 下载并安装 Tomcat<ul class="second_class_ul"><li>创建 Tomcat 安装目录</li><li>下载 Tomcat</li><li>解压 Tomcat</li><li>删除安装包</li></ul></li><li>5. 配置 Tomcat 环境变量<ul class="second_class_ul"><li>验证环境变量</li></ul></li><li>6. 启动 Tomcat<ul class="second_class_ul"><li>赋予执行权限</li><li>启动 Tomcat</li></ul></li><li>7. 验证 Tomcat 是否启动成功<ul class="second_class_ul"><li>检查日志</li><li>检查端口</li><li>访问 Tomcat</li></ul></li><li>8. 配置防火墙(如果需要)<ul class="second_class_ul"></ul></li><li>9. 设置 Tomcat 开机自启(可选)<ul class="second_class_ul"></ul></li><li>总结<ul class="second_class_ul"></ul></li><li>CentOS服务器中如何解决内存泄漏问题<ul class="second_class_ul"></ul></li></ul></div><p>作为一个喜欢折腾服务器和后端开发的技术爱好者,我一直觉得自己动手搭建一个稳定的服务器是件特别有成就感的事情。最近,我在自己的服务器上安装了Tomcat,用来部署一些小型的Java Web应用。虽然网上有很多教程,但大部分都太过官方,缺乏实际操作中的细节和坑点,所以我想结合自己的经验,写一篇更贴近实际的安装指南。</p>
<p>这篇文章将从环境配置开始,一步步讲解如何安装Java、配置环境变量、下载并启动Tomcat,甚至包括一些常见问题的解决办法。如果你也想自己动手搭建一个Tomcat服务器,希望这篇文章能帮到你!</p>
<p class="maodian"></p><h2>1. 更新系统</h2>
<p>在开始之前,更新系统以确保安装的包是最新的:</p>
<div class="dxycode"><pre class="brush:bash;">yum update -y</pre></div>
<p class="maodian"></p><h2>2. 安装 OpenJDK 1.8</h2>
<p class="maodian"></p><h3>安装命令</h3>
<p>使用以下命令安装 OpenJDK 1.8:</p>
<div class="dxycode"><pre class="brush:bash;">yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel</pre></div>
<p class="maodian"></p><h3>验证安装</h3>
<p>安装完成后,验证 Java 是否安装成功:</p>
<div class="dxycode"><pre class="brush:bash;">java -version</pre></div>
<p>输出应类似于:</p>
<div class="dxycode"><pre class="brush:bash;">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)</pre></div>
<p class="maodian"></p><h2>3. 配置 Java 环境变量</h2>
<p>编辑系统环境变量配置文件 /etc/profile:</p>
<div class="dxycode"><pre class="brush:bash;">vim /etc/profile</pre></div>
<p>在文件末尾添加以下内容:</p>
<div class="dxycode"><pre class="brush:bash;"># 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</pre></div>
<p>保存并退出后,使配置生效:</p>
<div class="dxycode"><pre class="brush:bash;">source /etc/profile</pre></div>
<p class="maodian"></p><p class="maodian"></p><h3>验证环境变量</h3>
<p>检查环境变量是否配置正确:</p>
<div class="dxycode"><pre class="brush:bash;">echo $JAVA_HOME
echo $JRE_HOME</pre></div>
<p>输出应分别为:</p>
<p style="text-align:center"><img style="max-width:100%!important;height:auto!important;"alt="" height="489" src="https://zhuji.jb51.net/uploads/allimg/20250724/2-250H4140KW41.png" width="1046" /></p>
<div class="dxycode"><pre class="brush:bash;">/usr/lib/jvm/java-1.8.0-openjdk
/usr/lib/jvm/java-1.8.0-openjdk/jre</pre></div>
<p class="maodian"></p><h2>4. 下载并安装 Tomcat</h2>
<p class="maodian"></p><h3>创建 Tomcat 安装目录</h3>
<p>创建一个目录用于存放 Tomcat:</p>
<div class="dxycode"><pre class="brush:bash;">mkdir -p /usr/local/tomcat
cd /usr/local/tomcat</pre></div>
<p class="maodian"></p><h3>下载 Tomcat</h3>
<p>使用 curl 下载 Tomcat 9.0.84 的安装包:</p>
<div class="dxycode"><pre class="brush:bash;">curl -O https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.84/bin/apache-tomcat-9.0.84.tar.gz</pre></div>
<p style="text-align:center"><img style="max-width:100%!important;height:auto!important;"alt="" height="231" src="https://zhuji.jb51.net/uploads/allimg/20250724/2-250H4140K9649.png" width="1309" /></p>
<p>耐心等待下载</p>
<p class="maodian"></p><h3>解压 Tomcat</h3>
<p>解压下载的安装包:</p>
<div class="dxycode"><pre class="brush:bash;">tar -zxvf apache-tomcat-9.0.84.tar.gz</pre></div>
<p>解压后,您会看到一个名为 apache-tomcat-9.0.84 的目录。</p>
<p class="maodian"></p><h3>删除安装包</h3>
<p>(可选)删除下载的压缩包:</p>
<div class="dxycode"><pre class="brush:bash;">rm -f apache-tomcat-9.0.84.tar.gz</pre></div>
<p class="maodian"></p><h2>5. 配置 Tomcat 环境变量</h2>
<p>为了方便管理,可以配置 Tomcat 的环境变量。</p>
<p>编辑 /etc/profile 文件:</p>
<div class="dxycode"><pre class="brush:bash;">vim /etc/profile</pre></div>
<p>在文件末尾添加以下内容:</p>
<div class="dxycode"><pre class="brush:bash;"># Tomcat 环境变量
export CATALINA_HOME=/usr/local/tomcat/apache-tomcat-9.0.84
export PATH=$CATALINA_HOME/bin:$PATH</pre></div>
<p>保存并退出后,使配置生效:</p>
<div class="dxycode"><pre class="brush:bash;">source /etc/profile</pre></div>
<p class="maodian"></p><p class="maodian"></p><h3>验证环境变量</h3>
<p>检查&nbsp;<code>CATALINA_HOME</code>&nbsp;是否配置正确:</p>
<div class="dxycode"><pre class="brush:bash;">echo $CATALINA_HOME</pre></div>
<p>输出应为:</p>
<div class="dxycode"><pre class="brush:bash;">/usr/local/tomcat/apache-tomcat-9.0.84</pre></div>
<p class="maodian"></p><h2>6. 启动 Tomcat</h2>
<p class="maodian"></p><h3>赋予执行权限</h3>
<p>确保 Tomcat 的启动脚本具有执行权限:</p>
<div class="dxycode"><pre class="brush:bash;">chmod +x /usr/local/tomcat/apache-tomcat-9.0.84/bin/*.sh</pre></div>
<p class="maodian"></p><h3>启动 Tomcat</h3>
<p>运行以下命令启动 Tomcat:</p>
<div class="dxycode"><pre class="brush:bash;">cd /usr/local/tomcat/apache-tomcat-9.0.84/bin
./startup.sh</pre></div>
<p>如果启动成功,您会看到类似以下的输出:</p>
<div class="dxycode"><pre class="brush:bash;">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.</pre></div>
<p class="maodian"></p><h2>7. 验证 Tomcat 是否启动成功</h2>
<p class="maodian"></p><h3>检查日志</h3>
<p>查看 Tomcat 启动日志,确保没有报错:</p>
<div class="dxycode"><pre class="brush:bash;">tail -f /usr/local/tomcat/apache-tomcat-9.0.84/logs/catalina.out</pre></div>
<p class="maodian"></p><h3>检查端口</h3>
<p>确认 Tomcat 是否在监听 8080 端口:</p>
<div class="dxycode"><pre class="brush:bash;">ss -tunlp | grep 8080</pre></div>
<p>如果看到类似以下输出,说明 Tomcat 已经成功启动:</p>
<div class="dxycode"><pre class="brush:bash;">tcp    LISTEN   0      100    0.0.0.0:8080         0.0.0.0:*</pre></div>
<p></p>
<p style="text-align:center"><img style="max-width:100%!important;height:auto!important;"alt="" height="647" src="https://zhuji.jb51.net/uploads/allimg/20250724/2-250H4140KcF.png" width="1675" /></p>
<p class="maodian"></p><h3>访问 Tomcat</h3>
<p>在浏览器中访问以下地址:</p>
<div class="dxycode"><pre class="brush:bash;">http://&lt;服务器IP&gt;:8080</pre></div>
<p>如果看到 Tomcat 的默认主页,说明安装成功。</p>
<p class="maodian"></p><h2>8. 配置防火墙(如果需要)</h2>
<p>如果您无法访问 Tomcat 主页,可能是防火墙阻止了 8080 端口。使用以下命令开放 8080 端口:</p>
<div class="dxycode"><pre class="brush:bash;">firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload</pre></div>
<p class="maodian"></p><h2>9. 设置 Tomcat 开机自启(可选)</h2>
<p>创建一个 Systemd 服务文件:</p>
<div class="dxycode"><pre class="brush:bash;">vim /etc/systemd/system/tomcat.service</pre></div>
<p>在文件中添加以下内容:</p>
<div class="dxycode"><pre class="brush:bash;">
Description=Apache Tomcat 9
After=network.target

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

WantedBy=multi-user.target</pre></div>
<p>保存并退出后,重新加载 Systemd 配置:</p>
<div class="dxycode"><pre class="brush:bash;">systemctl enable tomcat</pre></div>
<p>设置 Tomcat 开机自启:</p>
<div class="dxycode"><pre class="brush:bash;">systemctl enable tomcat</pre></div>
<p>手动启动 Tomcat:</p>
<div class="dxycode"><pre class="brush:bash;"> systemctl start tomcat</pre></div>
<p class="maodian"></p><h2>总结</h2>
<p>通过这次安装,我对Tomcat的搭建过程有了更深的理解。从安装Java环境到配置Tomcat,再到解决防火墙和端口问题,整个过程看似简单,但实际上有很多细节需要注意,比如环境变量的配置、权限问题以及防火墙的设置。</p>
<p class="maodian"></p><h2>CentOS服务器中如何解决内存泄漏问题</h2>
<p>内存泄漏并不是&ldquo;爆炸性内存飙升&rdquo;,而是程序申请了内存但没有释放,造成系统可用内存逐渐减少,直到用光。</p>
<p>表现形式:</p>
<ul><li>系统空闲内存越来越少;</li><li>swap频繁被占用;</li><li>某些服务响应变慢甚至挂掉;</li><li>重启服务后内存才释放。</li></ul>
<p><strong>内存泄漏的根源在哪里?</strong></p>
<p>应用代码问题:编写程序时未释放 malloc/new 等分配的内存</p>
<p>守护进程缺陷:nginx、php-fpm、java 等长期运行服务的bug</p>
<p>长时间运行的脚本:python、node、shell等后台脚本未释放变量</p>
<p>第三方库问题:依赖库内部泄漏,难以直接发现</p>
<p>系统内核模块或驱动:较罕见,可能是内核升级或驱动兼容性问题</p>
<p><strong>如何排查内存泄漏问题?(最关键的一步)</strong></p>
<p>第1步:查看系统内存使用情况</p>
<div class="dxycode"><pre class="brush:bash;">free -m</pre></div>
<p>重点观察:</p>
<p>available 是否长期趋近 0;</p>
<p>swap 是否大量使用;</p>
<p>buffers/cache 是否偏高。</p>
<p>第2步:定位占用内存的&ldquo;元凶进程&rdquo;</p>
<div class="dxycode"><pre class="brush:bash;">top -o %MEM</pre></div>
<p>或使用更强大的命令:</p>
<div class="dxycode"><pre class="brush:bash;">ps aux --sort=-%mem | head -n 10</pre></div>
<p>输出示例:</p>
<div class="dxycode"><pre class="brush:bash;">USER    PID%MEM   COMMAND
root    214542.3   java
www   317223.5   php-fpm</pre></div>
<p>这时要重点盯住那些常驻内存、占比异常的进程。</p>
<p>第3步:深入分析进程内存使用情况</p>
<p>3.1 smem 工具(安装后用法超简洁)</p>
<div class="dxycode"><pre class="brush:bash;">yum install -y smem
smem -r -k</pre></div>
<p>它能看到真实使用的物理内存(不被 cache 虚化)。</p>
<p>3.2 pmap 工具(进程内存映射)</p>
<div class="dxycode"><pre class="brush:bash;">pmap -x | sort -k3 -n | tail -n 20</pre></div>
<p>查看哪个模块(库/文件)占了大量内存。</p>
<p>第4步:使用 valgrind 定位代码层内存泄漏(适合C/C++程序)</p>
<div class="dxycode"><pre class="brush:bash;">valgrind --leak-check=full ./your_program</pre></div>
<p>输出示例:</p>
<div class="dxycode"><pre class="brush:bash;">==1234== 40 bytes in 2 blocks are definitely lost in loss record 1 of 1
==1234==    at 0x4C2FB55: malloc (vg_replace_malloc.c:299)</pre></div>
<p>可以精准告诉你哪一行没有释放内存。</p>
<p>第5步:检查日志和历史增长趋势</p>
<p>长期运行的服务可能出现&ldquo;缓慢型内存泄漏&rdquo;,可使用:</p>
<div class="dxycode"><pre class="brush:bash;">sar -r -f /var/log/sa/saXX</pre></div>
<p>查看历史内存使用情况。saXX 是日期编号。</p>
<p><strong>如何解决内存泄漏问题?</strong></p>
<p>方法1:重启相关服务,释放内存(临时措施)</p>
<div class="dxycode"><pre class="brush:bash;">systemctl restart php-fpm
systemctl restart nginx
systemctl restart your_custom_app</pre></div>
<p>这属于&ldquo;治标不治本&rdquo;,适用于紧急止血。</p>
<p>方法2:升级服务组件或更换依赖库</p>
<p>举例:</p>
<p>PHP-fpm 内存泄漏,尝试升级到更新的版本;</p>
<p>Java 程序泄漏,尝试升级 JDK 版本或 GC 参数优化;</p>
<p>nginx 模块引起的,尝试重新编译或精简模块。</p>
<p>方法3:限制内存占用,防止&ldquo;拖垮系统&rdquo;</p>
<p>使用 systemd 中的内存限制功能:</p>
<p>编辑服务配置:</p>
<div class="dxycode"><pre class="brush:bash;">
MemoryLimit=512M</pre></div>
<p>然后:</p>
<div class="dxycode"><pre class="brush:bash;">systemctl daemon-reexec
systemctl restart your-service</pre></div>
<p>或者使用 ulimit 限制:</p>
<div class="dxycode"><pre class="brush:bash;">ulimit -v 524288 # 最大虚拟内存限制</pre></div>
<p>方法4:定期监控 + 脚本自动检测</p>
<p>编写脚本检测进程内存暴涨,超过阈值就重启服务:</p>
<div class="dxycode"><pre class="brush:bash;">#!/bin/bash
PID=$(pidof php-fpm)
MEM=$(pmap $PID | tail -n 1 | awk '/K/{print $2}' | sed 's/K//')
if [ "$MEM" -gt 1048576 ]; then
echo "php-fpm memory leak suspected, restarting..."
systemctl restart php-fpm
fi</pre></div>
<p>可写入 crontab 每小时执行一次。</p>
<p>结语:内存泄漏不可怕,排查有套路。内存泄漏是&ldquo;慢性病&rdquo;,不会一夜爆炸,却能一点点拖垮系统。掌握&ldquo;发现 &rarr; 定位 &rarr; 优化&rdquo;三步法能帮助你&ldquo;提前防火&rdquo;</p>
<p>以上就是Centos搭建Tomcat服务器:我的实战经验分享(成功版本 详细!)的详细内容,更多相关资料请阅读琼殿技术社区其它文章!</p>
頁: [1]
查看完整版本: Centos搭建Tomcat服务器的实战分享