Ubuntu部署飞讯应用
前言:已经将
webPortals-0.0.1-SNAPSHOT.jarjar包上传到目标机器上了。该应用程序的目标端口使用9090
1.安装Java(推荐OpenJDK8或11)
# 更新软件源
sudo apt update
# 安装 OpenJDK 8(如果你项目要求 8)
sudo apt install openjdk-8-jdk -y
# 或者安装 OpenJDK 11(推荐版本)
sudo apt install openjdk-11-jdk -y
# 验证安装
java -version
2.安装Nginx
第一步:安装Nginx
sudo apt update
sudo apt install nginx -y
第二步:配置Nginx转发
编辑默认站点配置文件(或新建一个):
sudo vim /etc/nginx/sites-available/default
将文件内容替换或添加为如下内容(注意保留 server 结构):
server {
    listen 80;
    server_name www.flyx-logistics.com.cn;
    location / {
        proxy_pass http://127.0.0.1:9090;
        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;
    }
}
整体作用:
这段配置定义了一个监听在 HTTP(80端口) 的 Nginx 服务器,将来自
https://www.flyx-logistics.com.cn/的访问请求反向代理到本地的 Spring Boot 程序(9090端口)。
- server_name www.flyx-logistics.com.cn; 指定服务器匹配的域名,当请求是这个域名时才会使用这个配置块。
- 定义根路径
/的反向代理规则。
proxy_pass表示将所有请求转发到本地的9090端口,即你的 Spring Boot 应用。
Host:原请求的主机名。
X-Real-IP:客户端真实 IP 地址,Spring Boot 就可以通过这些头部识别客户端信息。
第三步:测试并重启 Nginx
sudo nginx -t         # 测试配置是否正确
sudo systemctl restart nginx
第四步:检查防火墙(可选)
如果你启用了 ufw 防火墙,需要放行 80 端口:
sudo ufw allow 80
第五步:确认域名解析
确保你的域名 flyx-logistics.com.cn 已解析到该服务器的公网 IP。你可以使用:
ping flyx-logistics.com.cn
来确认是否指向了你的服务器 IP。
启用Nginx开机自启动:
sudo systemctl enable nginx查看 Nginx 状态:
sudo systemctl status nginx
📌 常见位置
- Nginx 默认网站目录:/var/www/html/
- 配置文件:/etc/nginx/nginx.conf
- 站点配置:/etc/nginx/sites-available/和/etc/nginx/sites-enabled/
3.创建启停脚本
vim webPortals.sh
写入下面的内容:
#!/bin/bash
APP_NAME="webPortals-0.0.1-SNAPSHOT.jar"
PID_FILE="webPortals.pid"
LOG_FILE="webPortals.log"
PORT=9090
start() {
    if [ -f "$PID_FILE" ]; then
        PID=$(cat "$PID_FILE")
        if ps -p $PID > /dev/null 2>&1; then
            echo "⚠️ 应用已在运行 (PID=$PID)"
            exit 1
        fi
    fi
    echo "🚀 启动应用..."
    nohup java -jar $APP_NAME --server.port=$PORT > $LOG_FILE 2>&1 &
    echo $! > $PID_FILE
    echo "✅ 应用已启动 (PID=$!)"
}
stop() {
    if [ ! -f "$PID_FILE" ]; then
        echo "⚠️ 未找到 PID 文件,应用可能未运行。"
        exit 1
    fi
    PID=$(cat "$PID_FILE")
    if ps -p $PID > /dev/null 2>&1; then
        echo "🛑 正在停止应用 (PID=$PID)..."
        kill $PID
        rm -f "$PID_FILE"
        echo "✅ 应用已停止。"
    else
        echo "⚠️ PID $PID 的进程不存在。"
        rm -f "$PID_FILE"
    fi
}
status() {
    if [ -f "$PID_FILE" ]; then
        PID=$(cat "$PID_FILE")
        if ps -p $PID > /dev/null 2>&1; then
            echo "✅ 应用正在运行 (PID=$PID)"
        else
            echo "⚠️ 应用未运行,但 PID 文件存在。"
        fi
    else
        echo "ℹ️ 应用未运行。"
    fi
}
restart() {
    echo "🔁 重启应用..."
    stop
    sleep 2
    start
}
case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        restart
        ;;
    status)
        status
        ;;
    *)
        echo "用法: $0 {start|stop|restart|status}"
        exit 1
esac
添加执行权限:
chmod +x webPortals.sh
./webPortals.sh start     # 启动
./webPortals.sh stop      # 停止
./webPortals.sh restart   # 重启
./webPortals.sh status    # 查看状态
补充
那假设,我本地有两个springboot的程序,我都希望通过 flyx-logistics.com.cn 来访问呢?这种的话有办法么?
是的,你完全可以通过一个域名(如 flyx-logistics.com.cn)访问多个 Spring Boot 应用,只需要根据 路径(location) 或 子域名 做区分。以下是两种常见方式:
✅ 方案一:按路径区分
比如:
- flyx-logistics.com.cn/app1→ 映射到第一个应用(端口9090)
- flyx-logistics.com.cn/app2→ 映射到第二个应用(端口9091)
示例配置:
server {
    listen 443 ssl;
    server_name flyx-logistics.com.cn;
    ssl_certificate /path/to/fullchain.pem;
    ssl_certificate_key /path/to/privkey.pem;
    location /app1/ {
        proxy_pass http://127.0.0.1:9090/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
    location /app2/ {
        proxy_pass http://127.0.0.1:9091/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}
注意事项:Spring Boot 应用需支持以
/app1或/app2为前缀的访问路径,或做 URL 前缀适配(比如加server.servlet.context-path=/app1)。
✅ 方案二:按子域名区分
比如:
- app1.flyx-logistics.com.cn→ 第一个应用
- app2.flyx-logistics.com.cn→ 第二个应用
前提:你要能控制 DNS 配置,添加 app1. 和 app2. 的子域名解析。
Nginx 配置示例:
server {
    listen 443 ssl;
    server_name app1.flyx-logistics.com.cn;
    ssl_certificate /path/to/app1.pem;
    ssl_certificate_key /path/to/app1.key;
    location / {
        proxy_pass http://127.0.0.1:9090;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}
server {
    listen 443 ssl;
    server_name app2.flyx-logistics.com.cn;
    ssl_certificate /path/to/app2.pem;
    ssl_certificate_key /path/to/app2.key;
    location / {
        proxy_pass http://127.0.0.1:9091;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}
本文来自博客园,作者:LoremMoon,转载请注明原文链接:https://www.cnblogs.com/hello-cnblogs/p/18873426

 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号