1.云服务器安装宝塔

# 安装基础依赖
sudo apt install -y wget curl sudo

# 下载宝塔安装脚本
wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh

# 执行安装
sudo bash install.sh

2.云服务器配置(Docker 部署后端)

#进入 root 用户,并输入密码

su root

# 进入docker:cd /usr/local/docker/ (可用 ls 查看文件列表, ll )

# 创建文件:mkdir new_project_name

mkdir new_project_name

# 上传前端压缩文件,并上传后端jar包,确保数据库存在腾讯云地址:11.111.111:3306

  • 前端:上传到 /usr/local/docker/nginx/html/(Nginx 默认静态文件目录)

  • 后端:上传 springboot-webhook-starter-7.10.0.jar(Java Spring Boot 应用)

# 前端上传  cd /usr/local/docker/nginx/html/

# 上传指令  rz

# .rar解压指令

rar x progject_name.rar

# 创建Dockerfile: 

  • 基于 openjdk:17 镜像构建容器

  • 复制 JAR 文件到容器内

  • 运行 Spring Boot 应用(监听8085端口)

# 创建文件

nano Dockerfile

# 写入(该项目使用的是17,端口是8085)

        # 使用 JDK 17 的官方镜像作为基础镜像

        FROM openjdk:17-jdk-slim   

         # 设置工作目录

        WORKDIR /app    

        # 将本地打包好的 Spring Boot jar 文件复制到容器中

        COPY ./springboot-webhook-starter-7.10.0.jar /app/springboot-webhook-starter.jar

        # 暴露应用的端口,假设 Spring Boot 使用默认的 8085 端口

        EXPOSE 8085

        # 启动 Spring Boot 应用

        CMD ["java", "-jar", "springboot-webhook-starter.jar"]

# 保存退出指令

Ctrl+o/O 回车 Ctrl+x/X

# 创建容器脚本start.sh(自动化脚本)

nano start.sh

# 写入

         #!/bin/bash

        # 设置一些变量

         IMAGE_NAME="springboot-webhook-starter"

        IMAGE_TAG="7.10.0"

        CONTAINER_NAME="bots-app"

        JAR_FILE="springboot-webhook-starter-7.10.0.jar"

        JAR_PATH="/usr/local/docker/dog-play/$JAR_FILE"

        # 检查是否上传了 JAR 文件

         if [ ! -f "$JAR_PATH" ]; then

                echo "JAR 文件不存在,请确保已上传 JAR 文件到正确的目录。"

                exit 1

        fi

        # 构建 Docker 镜像

        echo "正在构建 Docker 镜像..."

        docker build -t $IMAGE_NAME:$IMAGE_TAG .

        # 检查 Docker 镜像是否成功构建

         if [ $? -ne 0 ]; then

                echo "Docker 镜像构建失败!"

        exit 1

        fi

        # 检查容器是否已经存在

        EXISTING_CONTAINER=$(docker ps -a -q -f name=$CONTAINER_NAME)

        if [ ! -z "$EXISTING_CONTAINER" ]; then

                echo "容器已存在,正在停止并删除现有容器..."

                docker stop $CONTAINER_NAME

                docker rm $CONTAINER_NAME

        fi

        # 启动新的 Docker 容器

        echo "正在启动 Docker 容器..."

        docker run -d -p 8085:8085 --name $CONTAINER_NAME $IMAGE_NAME:$IMAGE_TAG

        # 检查容器是否成功启动

        if [ $? -eq 0 ]; then

                echo "容器启动成功,应用已在 http://localhost:8085 运行。"

        else

                echo "容器启动失败!"

        exit 1

        fi

        # 让容器保持运行

        echo "保持容器运行..."

        docker exec -d $CONTAINER_NAME tail -f /dev/null

        # 显示容器的日志

        echo "查看容器日志..."

        docker logs -f $CONTAINER_NAME

# Docker 镜像构建

# . 是指当前目录,告诉 Docker 使用当前目录下的 Dockerfile 和相关文件来构建镜像。 docker build -t springboot-webhook-starter:7.10.0 .

# 启动Docker容器

sh start.sh

# 查看运行状态 docker ps -a

3.云服务器通过宝塔部署Nginx( 宝塔部署 Nginx(前端 + 反向代理))

server

{        

        listen 80;

        listen 443 ssl http2 ;  # 启用 HTTPS

        server_name 11.11.cn;  #你的域名

        index index.html index.htm default.htm default.html;

        root /www/wwwroot/default/dogplay_react/dist;  # 前端打包后的目录

        #CERT-APPLY-CHECK--START

        # 用于SSL证书申请时的文件验证相关配置 -- 请勿删除并保持这段设置在优先级高的位置 include /www/server/panel/vhost/nginx/well-known/11.11.cn.conf;

        #CERT-APPLY-CHECK--END

        #SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则

        #error_page 404/404.html;

        ssl_certificate  /www/server/panel/vhost/cert/11.11.cn/fullchain.pem;

        ssl_certificate_key  /www/server/panel/vhost/cert/11.11.cn/privkey.pem;

        ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;

        ssl_ciphers EECDH+CHACHA20; # 这个不完整,请自行甄别

        ssl_prefer_server_ciphers on;

        ssl_session_tickets on;

        ssl_session_cache shared:SSL:10m;

        ssl_session_timeout 10m; add_header Strict-Transport-Security "max-age=31536000";

        error_page 497 https://$host$request_uri;

        #SSL-END

        #ERROR-PAGE-START 错误页配置,可以注释、删除或修改

        #error_page 404 /404.html;

        #error_page 502 /502.html;

        #ERROR-PAGE-END

        #REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效

        include /www/server/panel/vhost/rewrite/html_11.11.cn.conf;

        #REWRITE-END

        #禁止访问的文件或目录

        location ~ ^/(\.user.ini|\.htaccess|\.git|\.env|\.svn|\.project|LICENSE|README.md)

        {

                return 404;

        }

        #一键申请SSL证书验证目录相关设置

        location ~ \.well-known

        {

                allow all;

        }

        #禁止在证书验证目录放入敏感文件

        if ( $uri ~ "^/\.well-known/.*\.(php|jsp|py|js|css|lua|ts|go|zip|tar\.gz|rar|7z|sql|bak)$" ) {

                return 403;

        }

        location ~ .*\\.(gif|jpg|jpeg|png|bmp|swf)$

        {

                expires 30d;

                 error_log /dev/null;

                access_log /dev/null;

        }

        location ~ .*\\.(js|css)?$

        {         

                expires 12h;

                error_log /dev/null;

                access_log /dev/null;

        }

        location /

        {

                try_files $uri /index.html;

        }

        # 处理 API 请求的代理

        location /api

        {

                proxy_pass http://11.111.111:3306:8080;  # 后端 API 地址

                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;

        }

        access_log /www/wwwlogs/11.11.cn.log; error_log         /www/wwwlogs/11.11.cn.error.log; }

}

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐