在服务器上运行 Java 程序,需要进行一系列的配置和准备工作。以下是详细的配置步骤和注意事项:
🧩 一、基本要求
1. 操作系统
Java 支持主流操作系统:
- Linux(推荐,如 CentOS、Ubuntu)
- Windows Server
- macOS(开发环境较多)
⚙️ 二、安装 Java 运行环境
1. 安装 JDK 或 JRE
- 如果你只是运行编译好的
.jar文件,可以只安装 JRE(Java Runtime Environment) - 如果你需要编译或调试代码,建议安装 JDK(Java Development Kit)
推荐使用 OpenJDK:
- Adoptium(原 AdoptOpenJDK)
常用版本:
- Java 8、Java 11、Java 17(长期支持 LTS 版本)
示例:Ubuntu 安装 OpenJDK 17
sudo apt update
sudo apt install openjdk-17-jdk
检查是否安装成功:
java -version
javac -version # 只有安装了JDK才会有
📁 三、上传 Java 程序
将你的 Java 编译后的程序(如 .jar 文件)上传到服务器,可以通过以下方式:
scprsync- FTP/SFTP
- 使用 CI/CD 工具部署(如 Jenkins、GitLab CI)
▶️ 四、运行 Java 程序
启动命令示例:
java -jar your-program.jar
设置 JVM 参数(可选):
java -Xms512m -Xmx2g -jar your-program.jar
-Xms初始堆大小-Xmx最大堆大小
🔧 五、后台运行(守护进程)
避免终端关闭后程序终止,可以使用以下方式让程序在后台运行:
方法一:nohup
nohup java -jar your-program.jar > app.log 2>&1 &
方法二:screen
screen -S java-app
java -jar your-program.jar
# 按 Ctrl+A+D 脱离会话
方法三:systemd 服务(推荐生产环境使用)
创建 /etc/systemd/system/my-java-app.service 文件:
[Unit]
Description=My Java Application
After=syslog.target
[Service]
User=youruser
ExecStart=/usr/bin/java -jar /path/to/your-program.jar
SuccessExitStatus=143
StandardOutput=file:/var/log/my-java-app.log
StandardError=file:/var/log/my-java-app.err
Restart=always
[Install]
WantedBy=multi-user.target
然后启用并启动服务:
sudo systemctl daemon-reload
sudo systemctl enable my-java-app
sudo systemctl start my-java-app
sudo systemctl status my-java-app
🔒 六、防火墙与端口开放
如果程序监听了某个端口(如 Web 应用监听 8080),需确保服务器防火墙允许访问该端口。
例如,在 Ubuntu 上使用 UFW 开放端口:
sudo ufw allow 8080/tcp
sudo ufw reload
🧪 七、日志与监控
- 将日志输出到文件便于排查问题。
- 使用
tail -f app.log实时查看日志。 - 配合监控工具如:
- Prometheus + Grafana
- ELK Stack(Elasticsearch, Logstash, Kibana)
- Zabbix
✅ 八、其他注意事项
| 项目 | 建议 |
|---|---|
| 内存分配 | 根据服务器配置合理设置 -Xms 和 -Xmx |
| GC 设置 | 大内存应用可指定垃圾回收器,如 G1GC |
| 数据库连接 | 确保数据库能从服务器访问,且配置正确 |
| 安全性 | 不以 root 用户运行 Java 应用,防止权限泄露 |
| 自动重启 | 使用 systemd、supervisord 或脚本实现自动重启 |
📌 示例总结
假设你要运行一个 Spring Boot 的 jar 包:
# 安装 JDK
sudo apt install openjdk-17-jdk
# 上传 jar 文件(通过 scp 或 sftp)
# 创建 systemd 服务
sudo nano /etc/systemd/system/app.service
# 启动服务
sudo systemctl enable app
sudo systemctl start app
如果你提供具体程序类型(比如 Spring Boot、普通 Java SE 程序等),我可以给出更详细的部署方案。欢迎继续提问!
CLOUD云知道