CentOS Java Web服务器配置技巧
选择合适的JDK版本(如OpenJDK 8/11或Oracle JDK),通过包管理器(yum install java-1.8.0-openjdk-devel)或手动下载解压安装。安装完成后,编辑/etc/profile文件添加环境变量:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk # 根据实际路径调整
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
执行source /etc/profile使配置生效,验证java -version显示正确版本。
从Apache官网下载Tomcat二进制包(如Tomcat 9),解压至/usr/local/tomcat目录。赋予启动脚本执行权限(chmod +x /usr/local/tomcat/bin/*.sh),启动服务(./startup.sh)。配置server.xml文件:
<Connector>端口号(默认8080,生产环境建议改用8081或其他高位端口);maxThreads(最大线程数,如500)和acceptCount(最大等待队列长度,如100)提升并发处理能力;<Connector protocol="AJP/1.3">)。使用firewalld开放Java Web应用所需端口(如8080、8443):
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --reload
若使用SELinux,临时设置为宽松模式(setenforce 0)或编辑/etc/selinux/config永久禁用(不推荐生产环境完全禁用)。
创建/usr/local/tomcat/bin/setenv.sh文件(若不存在则新建),添加以下参数:
export JAVA_OPTS="-Xms512m -Xmx2048m -XX:MaxPermSize=256m -XX:+UseG1GC -Djava.security.egd=file:/dev/./urandom -Dfile.encoding=UTF-8"
-Xms(初始堆大小)和-Xmx(最大堆大小)根据服务器内存调整(建议为物理内存的1/4-1/2);-XX:+UseG1GC启用G1垃圾回收器(适合大内存应用);-Djava.security.egd=file:/dev/./urandom加速随机数生成(提升Tomcat启动速度)。在server.xml中配置<Connector>时,启用NIO模型(默认已启用)并调整参数:
<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="500" acceptCount="100"
connectionTimeout="20000" redirectPort="8443" />
maxThreads:根据CPU核心数调整(如4核CPU可设为200-500);acceptCount:避免过多请求排队导致超时。编辑/etc/sysctl.conf文件,添加以下参数优化网络和内存性能:
net.ipv4.tcp_fin_timeout = 30 # TCP连接超时时间(秒)
net.ipv4.tcp_max_syn_backlog = 4096 # SYN队列长度
net.ipv4.tcp_tw_reuse = 1 # 允许TIME-WAIT套接字重用
vm.swappiness = 10 # 减少swap使用(值越低越优先使用物理内存)
执行sysctl -p使配置生效。
conf/web.xml,添加以下内容防止敏感信息泄露:<security-constraint>
<web-resource-collection>
<web-resource-name>Directory Listing</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>GET</http-method>
</web-resource-collection>
<auth-constraint/>
</security-constraint>
tomcat-users.xml,仅允许授权用户访问管理界面(如manager-gui),并设置强密码:<tomcat-users>
<role rolename="manager-gui"/>
<user username="admin" password="StrongPassword123!" roles="manager-gui"/>
</tomcat-users>
/usr/java/latest/jre/lib/security/controlpanel.jar文件,避免信息泄露。编辑/etc/ssh/sshd_config文件,限制SSH访问:
PermitRootLogin no # 禁止root直接登录
AllowUsers admin # 仅允许指定用户登录
ClientAliveInterval 600 # 空闲超时10分钟(秒)
ClientAliveCountMax 2 # 超时后断开连接
MaxAuthTries 4 # 最大登录尝试次数
重启SSH服务(systemctl restart sshd)使配置生效。
yum update java-1.8.0-openjdk-devel、/usr/local/tomcat/bin/version.sh查看版本);top、htop监控CPU和内存使用,vmstat 1监控系统整体性能,tail -f /usr/local/tomcat/logs/catalina.out查看Tomcat日志。