Java在Linux下的高效部署指南
apt、CentOS的yum)安装OpenJDK,避免手动编译的复杂性。例如,Ubuntu系统执行sudo apt update && sudo apt install openjdk-11-jdk -y,CentOS系统执行sudo yum install java-11-openjdk-devel -y,安装完成后通过java -version验证是否成功。setenforce 0,永久修改/etc/selinux/config文件)、精简开机启动服务(systemctl disable <service-name>)、设置时间同步(timedatectl set-ntp true),减少不必要的资源消耗。Dockerfile(示例:FROM openjdk:11-jre-slim、COPY target/app.jar /app.jar、CMD ["java", "-jar", "/app.jar"]),通过docker build -t java-app .构建镜像,docker run -d -p 8080:8080 --name java-container java-app运行容器。容器化部署简化了环境依赖问题,提升了部署一致性。scp命令),放置到对应目录(Tomcat的webapps目录或Spring Boot应用的根目录),启动应用(java -jar app.jar或Tomcat的startup.sh脚本)。-Xms4g -Xmx4g,避免动态扩容的性能抖动)、限制元空间大小(-XX:MaxMetaspaceSize=512m,防止元空间溢出)、设置堆外内存上限(-XX:MaxDirectMemorySize=1g,适用于Netty等NIO框架)。-XX:+UseG1GC),设置目标暂停时间(-XX:MaxGCPauseMillis=200,根据业务调整),禁止手动Full GC(-XX:+DisableExplicitGC),开启堆转储(-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path/to/dumps,便于排查OOM问题)。-Xss512k,减少高并发场景的内存占用)、增加文件描述符限制(临时ulimit -n 65535,永久修改/etc/security/limits.conf,避免“Too many open files”错误)。mvn clean package)、“Deploy”(将JAR文件复制到服务器并重启服务)步骤;GitLab CI通过.gitlab-ci.yml文件定义流水线(示例:stages: [build, test, deploy],build阶段执行mvn package,deploy阶段执行ssh命令部署)。systemd创建java-app.service文件,内容包含ExecStart=/usr/bin/java -jar /path/to/app.jar),通过systemctl enable java-app设置开机自启动,确保服务器重启后应用自动运行。logs/app.log),并设置日志滚动策略(如按天分割),避免日志文件过大占用磁盘空间。