配置运行 Java 项目的服务器需要从操作系统、Java 环境、项目部署方式、Web 服务器/应用服务器、数据库、安全与性能优化等多个方面综合考虑。以下是详细的配置步骤和建议:
一、选择服务器操作系统
推荐使用 Linux 系统(如 Ubuntu、CentOS、Debian),因为其稳定性高、资源占用低、适合生产环境。
- 推荐版本:Ubuntu 20.04 LTS / CentOS 7/8 / Rocky Linux 8+
- 可通过云服务商(阿里云、腾讯云、AWS、华为云等)购买云服务器(ECS)
二、安装 Java 运行环境(JRE/JDK)
1. 安装 JDK
Java 项目通常需要 JDK(Java Development Kit)来运行。
# Ubuntu/Debian
sudo apt update
sudo apt install openjdk-17-jdk -y
# CentOS/Rocky Linux
sudo yum install java-17-openjdk-devel -y
推荐使用 JDK 11 或 JDK 17(LTS 版本,长期支持)
2. 验证安装
java -version
javac -version
3. 配置 JAVA_HOME 环境变量(可选但推荐)
编辑 /etc/profile 或用户 .bashrc:
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
然后执行:
source /etc/profile
三、部署 Java 项目
情况1:Spring Boot 等内嵌 Tomcat 的 JAR 包
直接运行 JAR 文件:
java -jar your-app.jar
后台运行(推荐)
nohup java -jar your-app.jar > app.log 2>&1 &
或使用 screen / tmux:
screen -S myapp
java -jar your-app.jar
# 按 Ctrl+A, 再按 D 退出
使用 systemd 管理(推荐用于生产)
创建服务文件 /etc/systemd/system/myapp.service:
[Unit]
Description=My Java Application
After=network.target
[Service]
Type=simple
User=root
ExecStart=/usr/bin/java -jar /opt/myapp/your-app.jar
Restart=always
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
启用并启动服务:
sudo systemctl daemon-reexec
sudo systemctl enable myapp
sudo systemctl start myapp
查看日志:
sudo journalctl -u myapp -f
情况2:传统 WAR 包部署(使用 Tomcat)
-
安装 Tomcat
wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.86/bin/apache-tomcat-9.0.86.tar.gz tar -xzf apache-tomcat-9.0.86.tar.gz -C /opt/ -
启动 Tomcat
/opt/apache-tomcat-9.0.86/bin/startup.sh -
将 WAR 包放入
webapps目录,Tomcat 会自动部署。
四、配置反向X_X(Nginx)
为了提升性能、支持 HTTPS、负载均衡,推荐使用 Nginx 做反向X_X。
1. 安装 Nginx
# Ubuntu
sudo apt install nginx -y
# CentOS
sudo yum install nginx -y
2. 配置反向X_X
编辑配置文件 /etc/nginx/sites-available/myapp(Ubuntu)或 /etc/nginx/conf.d/myapp.conf(CentOS):
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://127.0.0.1:8080; # Java 项目端口
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
启用配置并重启 Nginx:
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
五、配置 HTTPS(使用 Let’s Encrypt)
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d your-domain.com
之后会自动配置 SSL 证书并更新 Nginx。
六、数据库配置(如 MySQL / PostgreSQL)
以 MySQL 为例:
sudo apt install mysql-server -y
sudo mysql_secure_installation
创建数据库和用户:
CREATE DATABASE myapp;
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'strongpassword';
GRANT ALL PRIVILEGES ON myapp.* TO 'myuser'@'localhost';
FLUSH PRIVILEGES;
在 Java 项目中配置 application.yml 或 application.properties:
spring:
datasource:
url: jdbc:mysql://localhost:3306/myapp?useSSL=false&serverTimezone=UTC
username: myuser
password: strongpassword
driver-class-name: com.mysql.cj.jdbc.Driver
七、防火墙与安全配置
1. 开放端口
# Ubuntu (ufw)
sudo ufw allow 80
sudo ufw allow 443
sudo ufw allow 22
sudo ufw enable
# CentOS (firewalld)
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
2. 禁用 root 登录 + 使用 SSH 密钥登录(安全建议)
八、性能优化建议
- JVM 参数调优(如堆内存设置):
java -Xms512m -Xmx2g -jar your-app.jar - 使用监控工具:Prometheus + Grafana、Spring Boot Actuator
- 日志轮转:使用
logrotate或日志框架(如 Logback)配置归档
九、自动化部署(可选)
- 使用 Jenkins、GitLab CI/CD、GitHub Actions 实现自动构建和部署
- 使用 Docker 容器化部署(推荐)
Docker 示例(Dockerfile)
FROM openjdk:17-jre-slim
COPY your-app.jar /app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "/app.jar"]
构建并运行:
docker build -t myapp .
docker run -d -p 8080:8080 myapp
总结:基本配置流程
| 步骤 | 内容 |
|---|---|
| 1 | 购买云服务器,安装 Linux |
| 2 | 安装 JDK 并配置环境变量 |
| 3 | 上传并运行 Java 项目(JAR/WAR) |
| 4 | 配置 Nginx 反向X_X |
| 5 | 配置 HTTPS(Let’s Encrypt) |
| 6 | 安装并配置数据库 |
| 7 | 防火墙、SSH 安全加固 |
| 8 | (可选)使用 systemd / Docker / CI/CD |
如果你提供具体的项目类型(如 Spring Boot、普通 Java Web、Maven 项目等),我可以给出更针对性的配置方案。
轻量云Cloud