宝塔部署上线项目

宝塔部署上线项目

服务器初始化安装宝塔面板

服务器防火墙放开宝塔端口号 8888

进入宝塔(应用管理复制命令)

初始化宝塔环境就选择 LNMP 即可


地址规划

前端和后端的地址,建议就直接 http://{域名} (前端)

​ 后端 :http://{域名}/api,实际运行在后端配置文件中设定好的端口号,通过 Nginx进行转发

前后端域名一致就会保证不会出现跨域问题。


服务器开放数据库端口3306、Nginx端口80、Redis端口6379


安装依赖.

需要什么就添加什么,比如数据库,在宝塔面板创建数据库即可;Nginx,在php创建站点;Java的jdk环境,下载,可以把jdk 8、11、17、21都下载下来。

创建数据库的时候,访问权限要改为 '所有人',这样自己的电脑才能连接到远程的数据库进行调试以及其他操作。在本地编辑器中连接远程数据库进行sql创建。

  • redis:安装完毕之后进入设置 => 性能调整 => 'bind' -> "0.0.0.0" 表示所有ip都可以访问 => 'requirepass' -> 填一个密码,因为所有ip都可以访问之后redis就不再安全了 => 保存 => 重载配置。
    • 同样的,在本地的开发工具中连接远程的redis
  • 网站 =》Java项目 =》Java环境管理 =》下载需要的jdk
  • 将其他依赖解决妥当,比如项目中用到了某大厂提供的api服务之类的。

安装完依赖,就可以进行项目部署了,尽量按照先后端再前端的顺序部署。

  • 后端创建 -prod.yml 配置文件设置生产环境的配置,其中,将密码和路径之类的配置都改为线上的;然后将mybatis plus的日志关闭,不然接口就全都暴露了;给接口文档设置用户名和密码,不然随便被人访问也全都暴露了。

  • 后端打包之前去 pom.xml 文件中将主类路径设置的那里把 <skip>true</skip> 删掉或者注释掉,因为一开始项目是用模板创建的,并不是一个空项目从0开始搭建,所以默认会开启忽略主类打包,这样的话打完包是无法运行的,因为根本没有启动类。

  • 在用maven打包之前,选项上有一个忽略测试环节。

  • 得到 jar包之后上传到宝塔面板 =》文件,为了方便直接放到根目录就可以了。

  • 网站 =》Java项目 =》添加Java项目 =》选择刚刚上传的jar包路径 即可。(如果有多个jdk的话选择一下项目使用的jdk;项目启动命令处 添加参数 --spring.profiles.active=prod 指明项目启动要加载prod配置。其他不用改直接确定。(如果项目没有部署成功,一定要去设置里的日志中排查,可以全部复制然后丢给ai分析即可)

  • 添加php站点,在配置文件中实现Nginx转发前端请求到后端。(反向代理)

    • Nginx 转发请求到后端
      location /api {
            proxy_pass http://127.0.0.1:8123;
            proxy_set_header Host $proxy_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_buffering off;
            proxy_set_header Connection "";
          }
      
    • # 代理 WebSocket 连接 专门用于 WebSocket 请求
          location /api/ws {
            proxy_pass http://127.0.0.1:8123;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Host $proxy_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_buffering off;
            proxy_set_header Connection "upgrade";
          }
      
    • 注释掉Nginx默认指定的的静态资源缓存配置(不然无法加载项目资源)

      •     # 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;
            # }
        
posted @ 2025-04-03 10:39  sevenShaw  阅读(160)  评论(0)    收藏  举报