部署Java项目到新服务器需要系统化的配置和准备工作,以下是关键步骤和注意事项:
一、基础环境配置
-
操作系统选择
- 根据需求选择Linux(推荐CentOS/Ubuntu Server)或Windows Server,确保系统更新至最新稳定版。
-
用户与权限
- 创建专用用户(如
appuser)运行Java服务,避免使用root。sudo useradd -m appuser sudo passwd appuser
- 创建专用用户(如
-
防火墙与安全组
- 开放必要端口(如8080、443)并限制访问IP(生产环境建议仅允许内网或X_X访问)。
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent sudo firewall-cmd --reload
- 开放必要端口(如8080、443)并限制访问IP(生产环境建议仅允许内网或X_X访问)。
二、Java环境部署
-
JDK安装
- 推荐OpenJDK 11/17(LTS版本)或Oracle JDK(需授权):
# Ubuntu/Debian sudo apt update && sudo apt install openjdk-17-jdk
CentOS/RHEL
sudo yum install java-17-openjdk-devel
- 验证安装: ```bash java -version - 推荐OpenJDK 11/17(LTS版本)或Oracle JDK(需授权):
-
环境变量配置
- 设置
JAVA_HOME(示例路径):echo 'export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64' >> ~/.bashrc echo 'export PATH=$JAVA_HOME/bin:$PATH' >> ~/.bashrc source ~/.bashrc
- 设置
三、项目依赖服务
-
数据库
- MySQL/PostgreSQL:安装并创建数据库用户。
# MySQL示例 sudo apt install mysql-server sudo mysql_secure_installation - Redis(如需要):
sudo apt install redis-server
- MySQL/PostgreSQL:安装并创建数据库用户。
-
应用服务器(可选)
- Tomcat/Nginx:
# Tomcat sudo apt install tomcat9
Nginx(反向X_X)
sudo apt install nginx
- Tomcat/Nginx:
四、项目部署
-
文件传输
- 使用SCP/RSync上传JAR/WAR包或源码:
scp target/myapp.jar appuser@server_ip:/home/appuser/
- 使用SCP/RSync上传JAR/WAR包或源码:
-
启动脚本
- 编写启动脚本(示例):
#!/bin/bash nohup java -Xms512m -Xmx2g -jar /home/appuser/myapp.jar --spring.profiles.active=prod > app.log 2>&1 & - 赋予执行权限:
chmod +x start.sh
- 编写启动脚本(示例):
-
日志管理
- 配置日志轮转(如
logrotate)或接入ELK栈。
- 配置日志轮转(如
五、网络与X_X
-
域名与SSL
- 配置Nginx反向X_X并启用HTTPS(Certbot免费证书):
server { listen 443 ssl; server_name example.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; location / { proxy_pass http://localhost:8080; } }
- 配置Nginx反向X_X并启用HTTPS(Certbot免费证书):
-
负载均衡(可选)
- 使用Nginx/Haproxy实现多实例负载。
六、监控与维护
-
进程管理
- 使用
systemd托管服务(示例单元文件/etc/systemd/system/myapp.service):[Unit] Description=My Java App After=network.target
[Service]
User=appuser
ExecStart=/usr/bin/java -jar /home/appuser/myapp.jar
Restart=always[Install]
WantedBy=multi-user.target- 启用服务: ```bash sudo systemctl daemon-reload sudo systemctl start myapp - 使用
-
监控工具
- Prometheus + Grafana监控JVM指标。
- 日志报警(如Sentry或阿里云日志服务)。
七、备份与安全
-
定期备份
- 数据库(
mysqldump)和应用程序日志。 - 使用
cron定时任务自动化。
- 数据库(
-
安全加固
- 禁用SSH密码登录,改用密钥认证。
- 定期更新系统和Java依赖。
常见问题排查
- 端口冲突:
netstat -tulnp | grep 8080 - 内存不足:调整JVM参数(
-Xmx)。 - 依赖缺失:检查
ldd或项目lib目录。
通过以上步骤,可完成从零开始的高效Java项目部署。根据实际需求调整配置(如容器化部署需使用Docker+K8s)。
云服务器