一、前置准备:安装Java运行环境(JRE/JDK)
在Linux环境下部署Java程序的基础是安装匹配的Java运行环境。若仅需运行Java程序,安装JRE(Java Runtime Environment)即可;若需编译或调试Java程序,则需安装JDK(Java Development Kit)。
以Ubuntu/Debian系统为例,使用apt包管理器安装OpenJDK 11的命令如下:
sudo apt update && sudo apt install openjdk-11-jdk # 安装JDK(包含JRE) 安装完成后,通过java -version命令验证安装是否成功,输出应包含Java版本信息(如openjdk version "11.0.xx")。
二、编译与打包Java项目
Java源代码需编译为字节码(.class文件)并打包为可执行文件(如JAR/WAR),才能在Linux上运行。常见方式有两种:
mvn clean package,生成的JAR文件位于target/目录(含Main-Class的MANIFEST.MF文件);gradle clean build,生成的JAR文件位于build/libs/目录。javac -d bin src/*.java(将src/目录下的所有.java文件编译到bin/目录);Main-Class: com.example.Main),内容如下:Main-Class: com.example.Main jar cvfm app.jar MANIFEST.MF -C bin/ .(将bin/目录下的所有文件打包为app.jar)。三、传输程序文件至Linux服务器
将打包好的JAR/WAR文件从本地传输到Linux服务器,常用**SCP(安全拷贝)**命令:
scp -i /path/to/private_key target/app.jar username@server_ip:/home/username/deploy/ 其中:-i指定私钥文件路径(若使用密码登录可省略);username为服务器用户名;server_ip为服务器IP地址;/home/username/deploy/为目标目录。
四、配置Linux环境变量(可选但推荐)
为方便全局使用Java命令,可将Java路径添加到系统环境变量中:
~/.bashrc或~/.zshrc):nano ~/.bashrc export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 # JDK安装路径 export PATH=$JAVA_HOME/bin:$PATH # 添加Java到PATH source ~/.bashrc 验证环境变量是否配置成功:echo $JAVA_HOME应输出Java安装路径。
五、启动Java程序
根据程序类型(JAR/WAR)选择不同的启动方式:
nohup命令在后台运行JAR文件,并将日志输出到指定文件(避免终端关闭后进程终止):nohup java -jar /home/username/deploy/app.jar > /home/username/deploy/app.log 2>&1 & 其中:-jar指定JAR文件路径;>将标准输出重定向到app.log;2>&1将错误输出合并到标准输出;&表示后台运行。sudo apt install tomcat9(Ubuntu/Debian);webapps/目录:sudo cp /home/username/deploy/app.war /var/lib/tomcat9/webapps/;sudo systemctl start tomcat9(Ubuntu/Debian)。六、监控与维护
ps命令查找Java进程:ps -ef | grep java;top或htop命令查看CPU/内存占用。nohup启动,可通过tail -f /home/username/deploy/app.log实时查看日志;/var/log/tomcat9/目录(如catalina.out)。nohup启动,可通过kill命令停止进程(先通过ps -ef | grep java找到进程ID):kill -9 <process_id> 若使用Tomcat,可通过sudo systemctl stop tomcat9停止。七、可选优化:配置反向代理(提升访问体验)
若需通过域名访问Java应用(如HTTP/HTTPS),可配置Nginx作为反向代理:
sudo apt install nginx(Ubuntu/Debian);/etc/nginx/sites-available/default),添加以下内容:server { listen 80; server_name your_domain.com; # 替换为实际域名或IP location / { proxy_pass http://localhost:8080; # 转发到Tomcat默认端口 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } sudo systemctl restart nginx。