加油
努力

如何在腾讯云轻量服务器上安装JDK并部署Java程序?

下面按步骤说明如何在腾讯云轻量应用服务器(Lighthouse)上安装 JDK 并部署 Java 程序。示例以 Ubuntu 20.04/22.04 为例,CentOS 类似可参考对应包管理命令。


一、基础准备

  1. 登录轻量服务器

    • 在腾讯云控制台 → 轻量应用服务器 → 找到你的实例 → “连接” → 使用 SSH 客户端或网页终端登录。
    • 使用 root 或具有 sudo 权限的用户登录:
      ssh root@<你的公网IP>
      # 或使用普通用户
      ssh your_user@<你的公网IP>
  2. 更新系统软件源

    # Ubuntu / Debian
    sudo apt update && sudo apt upgrade -y
    
    # CentOS / Rocky / AlmaLinux
    sudo yum makecache
    sudo yum update -y

二、安装 JDK

方案 A:使用官方 OpenJDK(推荐)

1. Ubuntu / Debian

# 查看可用版本
apt list --upgradable | grep openjdk

# 安装默认版本(通常是 openjdk-17-jdk)
sudo apt install openjdk-17-jdk -y

# 或者指定版本,例如 openjdk-11-jdk
# sudo apt install openjdk-11-jdk -y

验证安装:

java -version
javac -version

2. CentOS / Rocky / AlmaLinux

# 安装默认 OpenJDK 17
sudo yum install java-17-openjdk-devel -y

# 或安装 OpenJDK 11
# sudo yum install java-11-openjdk-devel -y

验证:

java -version
javac -version

如果你需要特定版本(如 JDK 8、11、17),可以搜索对应包名或从官网下载 tar.gz 手动安装。


方案 B:从官网下载 Tarball 安装(更灵活)

  1. 访问 Oracle 或 Adoptium 官网下载对应版本的 Linux x64 tar.gz。
  2. 上传到服务器(可以用 scp 或直接在服务器上 wget)。

示例(Adoptium JDK 17):

cd /opt
sudo mkdir -p jdk
cd /opt/jdk

# 假设你已下载到当前目录 jdk-17_linux-x64.tar.gz
tar -xzf jdk-17_linux-x64.tar.gz
  1. 配置环境变量(以 bash 为例):
    
    export JAVA_HOME=/opt/jdk/jdk-17
    export PATH=$JAVA_HOME/bin:$PATH

永久生效

echo ‘export JAVA_HOME=/opt/jdk/jdk-17’ >> ~/.bashrc
echo ‘export PATH=$JAVA_HOME/bin:$PATH’ >> ~/.bashrc
source ~/.bashrc


验证:
```bash
java -version

三、将 Java 程序部署到服务器

假设你有一个打包好的 your-app.jar(Spring Boot 等可执行 jar)。

1. 上传 JAR 文件

本地机器上使用 scp 上传:

scp your-app.jar root@<你的公网IP>:/opt/app/

或在服务器上先创建目录再上传:

mkdir -p /opt/app

如果是 Maven 项目,也可以直接在服务器上编译后打包:

# 进入项目根目录
cd /path/to/project

# 安装 Maven(如果未安装)
sudo apt install maven -y   # Ubuntu
# 或 sudo yum install maven -y  # CentOS

# 打包
mvn clean package -DskipTests
# 生成的 jar 一般在 target/*.jar

2. 设置运行目录与权限

sudo mkdir -p /opt/app
sudo chown -R $USER:$USER /opt/app
# 确保当前用户有写权限

3. 启动方式选择

方式 A:简单后台运行(适合测试/开发)

cd /opt/app
nohup java -Xms512m -Xmx1G -jar your-app.jar > app.log 2>&1 &
  • -Xms / -Xmx 根据内存调整堆大小。
  • app.log 为日志文件。
  • 查看进程:
    ps aux | grep java
  • 停止进程:
    kill <PID>

方式 B:使用 systemd 管理服务(推荐生产环境)

  1. 创建服务文件:
    sudo nano /etc/systemd/system/myapp.service

内容示例(根据实际情况修改路径和参数):

[Unit]
Description=My Spring Boot Application
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=/opt/app
ExecStart=/usr/bin/java -Xms512m -Xmx1G -jar /opt/app/your-app.jar
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target
  1. 重载 systemd 配置并启用服务:

    sudo systemctl daemon-reload
    sudo systemctl enable myapp.service
    sudo systemctl start myapp.service
  2. 查看状态:

    sudo systemctl status myapp.service
  3. 查看日志:

    sudo journalctl -u myapp.service -f

如需自定义日志输出,可以在应用中使用 logback/log4j 配置,将日志写入 /opt/app/logs/ 等目录。


四、开放端口(防火墙与安全组)

Java 程序通常监听某个端口(如 8080)。

  1. 轻量服务器安全组
    在腾讯云控制台 → 轻量应用服务器 → 安全组规则中,添加入站规则:

    • 协议:TCP
    • 端口:8080(或你的实际端口)
    • 来源:0.0.0.0/0 或特定 IP
  2. 服务器内部防火墙(如有)

    • Ubuntu (ufw):
      sudo ufw allow 8080/tcp
      sudo ufw enable
    • CentOS (firewalld):
      sudo firewall-cmd --permanent --add-port=8080/tcp
      sudo firewall-cmd --reload

五、可选:使用 Nginx 反向X_X + HTTPS

如果需要域名访问、HTTPS:

  1. 安装 Nginx:

    # Ubuntu
    sudo apt install nginx -y
    # CentOS
    sudo yum install nginx -y
  2. 配置反向X_X(示例 /etc/nginx/sites-available/myapp):

    server {
       listen 80;
       server_name your-domain.com;
    
       location / {
           proxy_pass http://127.0.0.1:8080;
           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;
       }
    }
  3. 启用站点并重启 Nginx:

    sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
    sudo nginx -t
    sudo systemctl restart nginx
  4. 申请 SSL 证书(可使用 Let’s Encrypt + certbot):

    sudo apt install certbot python3-certbot-nginx -y
    sudo certbot --nginx -d your-domain.com

六、常见问题排查

  • 无法连接端口:检查安全组、服务器防火墙、应用是否监听 0.0.0.0 而不是 127.0.0.1。
  • Java 启动报错:查看 app.logjournalctl 日志,确认内存参数、类路径、配置文件是否正确。
  • JDK 版本不兼容:确认编译 JDK 版本与运行 JDK 版本一致或向下兼容。

如果你提供:

  • 操作系统类型及版本
  • Java 程序类型(Spring Boot、普通 Jar、Web 项目等)
  • 需要的端口/域名情况

我可以给出更贴合你场景的完整命令和配置文件示例。

云服务器