尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

宝塔面板部署前后端分离项目:SpringBoot+Vue+MySQL实战教程

宝塔面板部署前后端分离项目:SpringBoot+Vue+MySQL实战教程 第一次给项目做云服务器部署的时候我对着黑乎乎的Linux终端发了好一阵呆。代码在本地跑得好好的一到服务器就各种报错环境不对、端口不通、数据库连不上——最离谱的一次光一个Tomcat启动失败就折腾了一整晚。后来我所有带新人的部署教学统一改用宝塔面板来做效果立竿见影。原因很简单宝塔把Tomcat、SpringBoot、MySQL这一整套部署流程从“敲命令”变成了“点点点”对0基础的人来说门槛直接降了一个量级。这篇教程只做一件事带你在自己的云服务器上用宝塔面板把一个前后端分离项目完整跑起来。后端SpringBoot打成war包部署到Tomcat前端Vue打包后同样放进TomcatMySQL负责存数据。全程以鼠标操作为主只有个别地方需要复制一条命令。你不用懂Linux不用记一堆冷门指令跟着流程走完就能把项目挂到公网。1. 部署前先弄明白前后端分离项目部署到服务器到底在做什么很多新手一上来就急着装环境结果装了一堆用不上的东西。正确的做法是先搞清楚这个项目在服务器上是由哪些部分组成的、彼此怎么配合再动手操作。1.1 一台服务器上的三个角色一个前后端分离项目跑起来之后服务器上至少有三个角色缺一个都不行后端服务SpringBoot项目启动后对外提供接口。比如登录接口、列表接口、下单接口全都是它处理的。前端页面Vue之类的项目打包后生成一堆静态文件HTML、CSS、JS。用户在浏览器里看到的页面就是这些文件渲染出来的。数据库MySQL存放业务数据。用户注册信息、商品列表、订单记录全都存在这里。你可以用一个生活化的场景来理解这三者的关系前端是餐厅的大堂用户只跟大堂打交道后端是后厨大堂把用户的需求告诉后厨数据库是后面的仓库后厨做菜时要去仓库取食材。用户不需要知道后厨和仓库是什么样但餐厅要正常运转这三层缺一不可。1.2 “前后端分离”和“分开部署”不是一回事我发现很多刚接触部署的人容易误解“前后端分离”这四个字以为需要买两台服务器一台跑前端、一台跑后端。真不是这样。前后端分离指的是代码层面的分离前端项目和后端项目是独立的工程团队可以各自开发、独立部署、通过接口通信。但在服务器资源层面完全可以跑在同一台机器上。咱们这个教程就用一台云服务器前端静态文件放进Tomcat后端war包也部署到同一个Tomcat数据库也在这台机器上。登录公网IP能看到页面页面能正常调接口这个项目就算部署成功了。1.3 为什么选宝塔面板如果你是老手用命令行逐项部署完全没问题可读性好、可控性强。但0基础的同学用纯命令行折腾这套环境光是把JDK、Tomcat、MySQL、Maven这几样东西装好、配好、跑通就够喝一壶的。宝塔面板的价值在于把绝大部分运维操作封装成了可视化界面软件商店里一键安装Tomcat、MySQL、Nginx等环境文件管理器直接上传war包、编辑配置文件可视化查看Tomcat运行状态和日志自带数据库管理界面建库导数据不用敲SQL不过我得提醒一句宝塔面板装对版本很重要。网上有些来路不明的“开心版”“破解版”听起来能免费用付费功能实际上有人在这类版本里塞过后门脚本。我见过不止一个人图省事装了个来路不明的版本最后面板里被写入了恶意计划任务得不偿失。老老实实从官网装官方版免费功能够你折腾很久了。2. 云服务器环境初始化选系统、开端口、装宝塔面板这一步是0基础最容易卡住的地方。很多人在本地把项目跑得飞起一到服务器就懵了其实原因就两个系统选错、端口没放行。先把这两个问题解决后面就顺了。2.1 云服务器选购建议配置和系统选型先说配置。如果你只是部署个人项目、课程设计、毕业设计或者练手学习2核4G是起步配置跑Tomcat加MySQL够用。预算允许的话直接上4核8GTomcat的JVM给到2G跑起来更从容。带宽方面1M就能用如果前端资源比较大或者并发不小可以选3M以上。系统本身更要重视。宝塔面板对不同系统的兼容性不一样我个人建议优先选CentOS 7.9、Ubuntu 20.04/22.04、Debian 11/12。CentOS 7.9老归老但网上的踩坑资料最多新手上路不容易被问题卡死。一些云厂商默认推荐的自研系统比如openEuler生产上可能很优秀但你在宝塔里遇到问题想搜解决方案搜出来的很多命令可能不通用新手建议别选。2.2 端口放行第一道安全组第二道系统防火墙这里是新手踩坑扎堆的地方。云服务器上有两层防火墙你必须两层都放行端口才真正通第一层是云厂商控制台里的安全组。你需要在网页控制台找到“安全组”或“防火墙”菜单添加放行规则。第二层是服务器系统内部的防火墙比如CentOS的firewalld、Ubuntu的ufw。用宝塔面板的话第二层系统防火墙可以在宝塔的“安全”菜单里配置直观很多。需要放行的端口按照你的实际需要来端口用途是否需要放行22SSH远程连接必须否则连不上服务器8888宝塔面板入口必须否则打不开面板80HTTP网站访问建议放行以后绑域名要用443HTTPS访问建议放行8080Tomcat默认端口必须项目要在这个端口上跑3306MySQL远程连接看需求本地连服务器数据库才需要特别提醒3306端口能不放行就不放行。MySQL裸露在公网上风险很高很多人就因为这个被扫描器爆破过密码。如果你只是想在本地Navicat连服务器数据库调试用完就把这条规则删掉。2.3 安装宝塔面板与运行环境服务器买好、端口规划好了接下来装宝塔。操作其实很简单用SSH工具连上服务器在宝塔官网找到对应系统的安装命令复制粘贴到终端执行等几分钟就装好了。安装完成后终端会输出面板的访问地址、初始账号和初始密码。浏览器里打开地址登录面板。第一次进入时宝塔会推荐你安装一套环境这里不要乱选组件我记得面板一般会有一个“推荐安装套件”。咱们这个场景手动按需装就够了进入宝塔的“软件商店”页面搜索并安装这几个Tomcat推荐选择Tomcat 8.5或9.x对应JDK 8。这个搭配最经典网上资料多踩坑好解决。MySQL选择5.7或8.0都可以代码里用的什么版本就装什么版本。如果本地是8.0服务器也装8.0避免驱动或认证方式差异带来的问题。另外确认Tomcat自带的Java环境版本如果软件商店里没有单独JDK选项Tomcat安装时会一起搞定。装完环境之后别急着部署先做一件事打开面板左侧的“安全”菜单确认22、8888、8080这几个端口在系统防火墙层面已放行。云厂商控制台的安全组也要同步确认两层都通了后面就不会出现半天打不开页面的情况。3. SpringBoot后端改造与war包部署到Tomcat的实操环境准备好接下来把后端项目弄到服务器上。SpringBoot默认打的是jar包用内置Tomcat就能启动但咱们这个场景要部署到外部Tomcat所以得把项目改成war包形式。别担心改起来很简单。3.1 为什么这次选war包而不是jar包SpringBoot项目有两种部署思路jar包方式java -jar xxx.jar直接启动自带Tomcat不需要额外装容器。这其实是SpringBoot最推荐的常规方式。war包方式把项目打成war包丢到服务器上Tomcat的webapps目录里由外部Tomcat加载运行。既然标题明确用了Tomcat而且我们希望前端静态文件也能放在同一个Tomcat里统一管理那就用war包。好处是只维护一套Tomcat进程对0基础用户来说少了一个需要操心的服务。以后哪怕你想把war和jar两种方式都掌握也不亏核心区别就一条内置容器还是外部容器。3.2 改造SpringBoot项目三处必改打开你的SpringBoot工程三处地方需要调整第一处pom.xml里的打包方式改成wargroupIdcom.example/groupId artifactIddemo/artifactId version0.0.1-SNAPSHOT/version packagingwar/packaging第二处把内置Tomcat的依赖排除掉让它在外部Tomcat环境里不打架dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-tomcat/artifactId scopeprovided/scope /dependencyprovided的意思就是这个依赖打包时不需要打进去因为部署环境也就是外部Tomcat已经提供了。老手看这一行就明白新手只要照着改就行。第三处启动类要继承SpringBootServletInitializer并重写configure方法SpringBootApplication public class DemoApplication extends SpringBootServletInitializer { Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(DemoApplication.class); } public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }这样改的原因很简单外部Tomcat启动应用时不会执行main方法它要通过SpringBootServletInitializer这个入口来加载Spring Boot应用。很多新手忘了这一步部署到Tomcat后访问项目发现404一查日志发现Spring容器根本没起来就是没做第三处修改。3.3 本地打包与常见错误改造完成后在本地项目根目录执行打包命令mvn clean package打包成功的话target目录下会生成一个war包名字一般是artifactId-version.war比如demo-0.0.1-SNAPSHOT.war。这里有个容易踩的坑本地JDK版本与服务器JDK版本不一致。你本地用JDK 17编译服务器上Tomcat用的还是JDK 8跑起来大概率报UnsupportedClassVersionError原因是编译字节码版本比运行时JVM的版本高。最稳妥的做法是本地和服务器统一用JDK 8或者统一用JDK 17别一串。我自己吃过亏本地默认JDK 17编译完服务器JDK 8直接起不来折腾半天才反应过来版本问题。3.4 上传war包到Tomcat并完成启动进入宝塔面板打开“文件”菜单进到这个目录/www/server/tomcat/webapps这就是Tomcat的项目部署目录。把刚才打包出来的war包拖进去上传。上传完成后有两种处理方式方式一也是最省事的把war包改名为ROOT.war全大写。这样部署后直接访问http://服务器IP:8080/就是你的项目不用带项目名。方式二保持原名demo.war访问路径就是http://服务器IP:8080/demo/。对0基础用户我强烈建议用方式一访问路径短少一个出错环节。改名之后刷新一下Tomcat页面。首次部署时Tomcat会自动解压war包生成一个同名的文件夹。如果手动改了名需要等待自动解压完成。解压没问题的话去“软件商店”里的Tomcat管理页或者直接在命令行里重启Tomcat/etc/init.d/tomcat restart重启后看日志。在宝塔的Tomcat设置里可以直接“查看日志”重点看catalina.out和localhost.2025-xx-xx.log。看到Deployment of web application archive ... has finished说明启动成功。3.5 顺手调整Tomcat的端口和JVM参数Tomcat默认端口是8080如果之前的安全组和系统防火墙都放行了8080直接用就行。但如果你希望访问项目时不带端口也就是用80端口直接访问可以在Tomcat的conf/server.xml里改Connector的port80。注意80端口不能被Nginx等程序占用否则Tomcat起不来。JVM参数的调整也建议顺手做了。打开Tomcat的bin/catalina.sh文件找到JAVA_OPTS位置设置堆内存大小JAVA_OPTS-Xms512M -Xmx1024M -Dfile.encodingUTF-8 -Duser.timezoneAsia/Shanghai-Xms是初始堆内存-Xmx是最大堆内存。2核4G的服务器给到1024M就差不多了4核8G可以给到2048M。刚开始跑个人项目不用调太大内存不够再去改也行。改完记得重启Tomcat才会生效。4. MySQL数据库准备建库、导数据、让项目连得上后端项目和Tomcat都跑起来了接下来处理数据库。这步看着简单但错一步项目就连不上库所以每个细节都要走一遍。4.1 安装MySQL后的初始化环境如果你在宝塔软件商店里安装的是MySQL 5.7或8.0安装完成后宝塔会提示你设置或自动生成root密码。这一步很重要很多人后续连接失败就是因为用了本地开发时的密码直接连服务器的库两边密码不匹配。在宝塔“数据库”菜单里可以看到已安装的MySQL实例。建议在命令行里重置一次root密码更可控mysql -uroot -p登录后如果需要修改root密码执行ALTER USER rootlocalhost IDENTIFIED BY 你的新密码; FLUSH PRIVILEGES;注意MySQL 8.0和5.7改密码的语法稍有差异8.0下用上面的ALTER USER就行。改完后记得同步更新后端项目里的数据库密码。4.2 创建数据库并导入SQL数据在宝塔“数据库”菜单点击“添加数据库”。名称建议跟你本地的数据库名保持一致比如demo编码选择utf8mb4不要选latin1。排序规则选utf8mb4_general_ci或者utf8mb4_unicode_ci都可以做中文项目要特别注意编码选错会导致中文乱码。数据库建好之后需要导入数据。你有两种办法一是用宝塔的“导入”功能选择SQL文件直接导。二是用命令行方式项目SQL文件比较大的时候命令行更稳定mysql -uroot -p demo /path/to/demo.sql实测下来SQL文件超过几十MB时宝塔网页导入界面容易超时命令行反而没那么多事。导入成功后可以用mysql命令行验证一下USE demo; SHOW TABLES;能看到业务表就说明导入成功。4.3 项目数据库配置URL、驱动、时区、SSL数据库就绪后配置文件要更新。回到你的SpringBoot项目找到application.yml或application.properties改成这样以spring boot 2.x MySQL 8.0为例spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/demo?useUnicodetruecharacterEncodingutf8useSSLfalseserverTimezoneAsia/ShanghaiallowPublicKeyRetrievaltrue username: root password: 你的数据库密码这里几个参数是怎么来的我逐个说清楚serverTimezoneAsia/Shanghai不指定时区MySQL驱动会拿服务器默认时区去解析可能导致时间字段差8小时。useSSLfalse本地开发时连接不走SSL免得证书校验报错。allowPublicKeyRetrievaltrueMySQL 8.0在非SSL连接下访问默认不允许客户端从服务器获取公钥不加上这个参数连接时会直接报公共密钥检索错误。localhost是服务器本地地址项目和数据库在同一台机器上用localhost和127.0.0.1效果一样别写成你的公网IP那样反而多走一条网络链路还有防火墙拦截风险。如果项目是老SpringBoot 1.x项目驱动类是com.mysql.jdbc.Driver新版用com.mysql.cj.jdbc.Driver别照抄旧配置否则启动会报ClassNotFoundException。4.4 远程连接MySQL的授权方法如果你是本地开发需要在Navicat之类的工具里连接服务器的MySQL那就得在服务器这边做两个操作。第一安全组放行3306端口。第二给一个允许远程登录的MySQL账号。建议不要直接用root远程连单独建一个账号权限只给当前业务库CREATE USER appuser% IDENTIFIED BY 你的密码; GRANT ALL PRIVILEGES ON demo.* TO appuser%; FLUSH PRIVILEGES;其中%表示允许任意IP连接。测试完远程连接之后如果暂时不需要了把安全组里的3306放行规则删掉减少暴露面。个人项目可以图方便生产环境千万别这么干。5. 前端项目打包上线从dist目录到Tomcat root后端和数据库都通了最后把前端页面部署上去。这也是“前后端分离”项目里最有迷惑性的一步——前端跑起来不是靠什么“前端服务器”它本质就是一堆静态文件放到能提供HTTP访问的目录里就行了。咱们直接放进Tomcat的webapps目录。5.1 打包前先改前端接口地址这一步是前端部署的重中之重。本地开发时前端通常走代理比如vue.config.js里的devServer配置了proxy接口请求全部转发到localhost:8080。打包上线后代理是不生效的必须把接口请求地址改成服务器上后端的实际地址。具体位置取决于你的项目封装。Vue项目一般会有一个request.js或api.js文件里面配置axios的baseURL。把本地开发地址改成// 原来可能是 http://localhost:8080 const BASE_URL http://你的服务器公网IP:8080如果你不想在每个请求文件里硬编码IP也可以专门抽一个config文件统一管理。这个小习惯对后期维护很重要不然上线后每次改接口地址要翻一堆文件。这里要强调一个常踩的坑很多人改了BASE_URL之后忘了检查是不是有多个文件也在定义接口地址结果只改了一处另外几处还是localhost。部署后一打开页面控制台里全是跨域或404请求。搜项目里所有localhost能改的全改掉比肉眼翻文件靠谱。5.2 执行build并检查dist产物代码确认没问题后在本地前端项目根目录执行打包命令npm install npm run build打包完成后项目根目录会生成一个dist文件夹里面是index.html和静态资源目录。这里有个检查技巧用编辑器打开dist/index.html看看引用的JS、CSS路径是/static/xxx.js还是./static/xxx.js。如果你只打算部署到Tomcat root用/开头的绝对路径没问题。如果你想部署到某个子路径下比如localhost:8080/admin/那相对路径更保险。这个细节让人容易卡住因为本地dev时通常不会有问题页面能打开但部署到Tomcat后一堆资源404页面白屏多半就是路径问题。5.3 将前端文件部署到Tomcat的ROOT目录现在把整个dist目录里的所有文件上传到Tomcat的webapps里。上一步我们已经把后端war包改名成了ROOT.warTomcat会自动解压出一个ROOT目录里面放的是后端项目的内容。现在要做的是把这个ROOT目录替换成前端文件。操作流程如下在/www/server/tomcat/webapps下找到ROOT目录先备份或者直接删掉其中内容。如果后端有需要对外访问的接口文档之类的文件备份到别处再清空。把dist目录里的所有文件上传进ROOT目录。重启Tomcat。这里有一个容易被忽略的细节ROOT目录里不要多套一层dist目录要把dist里面的内容直接放在ROOT根下。也就是说访问http://IP:8080/时Tomcat直接返回ROOT/index.html而不是/ROOT/dist/index.html。上传的时候注意层级我就见过有人把整个dist文件夹拖进去结果访问URL还要多加一层/dist才能看到页面。5.4 前端history路由刷新404的一个处理办法如果你的前端路由用的是history模式部署到Tomcat后会出现一个现象首页能打开但在非首页地址刷新页面时Tomcat返回404。原因很简单前端路由的路径在后端服务器上并不存在真实文件刷新时浏览器向Tomcat请求/detail/1这个路径Tomcat去找对应的物理资源找不着就404了。新手最快的解决方案是切换成hash模式把Vue Router的createWebHistory()改成createWebHashHistory()。这个方案最省事URL会多一个#符号但刷新不会再404。如果你坚持要用history模式也可以改Tomcat配置做错误页跳转把404重写到index.html但涉及配置文件改动和通配符映射对0基础来说成本稍高。先把项目跑通验证完功能之后再考虑美化URL也不迟。6. 踩了无数次的坑部署排查思路与解决方案就算照着教程一步步走也难免遇到意外。这一章把我自己以及带过的同学在部署过程中真真切切遇到过的坑整理出来每个问题都给出完整的排查思路而不是只扔一个答案。你会慢慢发现部署出问题不可怕可怕的是不知道从哪里查起。6.1 端口占用Tomcat启动失败的经典开场准备启动Tomcat日志里突然出现Address already in use说明端口被别的进程占用了。大概率是你不小心启动了多个Tomcat或者之前部署的另一个服务占用了8080。排查链路很简单先查端口被谁占用杀掉对应进程再重试启动。netstat -tlnp | grep 8080执行后会列出占用8080的进程PID然后kill -9 PID之后重启Tomcat即可。如果日志里显示Port 8080 required by Tomcat v8.5 Server at localhost is already in use这种字样排查思路完全一样。别急着卸载重装先查端口、杀进程。6.2 MySQL SSL连接报错与驱动类找不到后端启动时如果报SSL connection error相关错误最常见的原因就是JDBC连接串里没有关闭SSL或者没有指定时区。单独把这个异常拎出来说是因为它在MySQL 8.0 SpringBoot的新版本组合下特别频繁。解决方案已经有现成的在连接串里补上三个参数即可useSSLfalseserverTimezoneAsia/ShanghaiallowPublicKeyRetrievaltrue如果你的项目本来就配置了useSSLfalse却还是报Public Key Retrieval is not allowed那是因为MySQL 8.0默认使用caching_sha2_password认证插件客户端在非SSL连接下无法直接获取公钥。除了加参数也可以把账号的认证插件改成mysql_native_passwordALTER USER rootlocalhost IDENTIFIED WITH mysql_native_password BY 你的密码;注意MySQL 8.0之后官方已经不太推荐mysql_native_password这只是兼容旧客户端的临时方案能正常跑项目后优先保持allowPublicKeyRetrievaltrue的参数方案。6.3 三层定位数据库连接失败项目启动后报Cannot create PoolableConnectionFactory或Access denied for user数据库连不上。每次遇到这类问题我都建议按三层思路来查顺序不要乱第一层验证账号密码是否正确。在服务器命令行手动登录数据库mysql -u用户名 -p密码 -h127.0.0.1 -P3306 数据库名能进说明账号密码没问题继续下一层进不去检查是不是密码被宝塔重置过或者账号权限不足。第二层验证远程授权是否生效。如果项目里配置的数据库地址是127.0.0.1但账号只授权了localhost也会拒绝连接。用下面这条SQL检查授权范围SELECT user, host FROM mysql.user;确认你的业务账号host列包含%或具体IP否则就单独授权GRANT ALL PRIVILEGES ON demo.* TO appuser%; FLUSH PRIVILEGES;第三层验证端口通不通。本地命令行执行telnet 服务器公网IP 3306如果telnet不通去云厂商安全组和宝塔“安全”里检查3306放行规则。这三层查完之后90%的数据库连接问题都能定位出来。6.4 SpringBoot版本太高与Tomcat版本不匹配这个坑近年来出现频率非常高因为SpringBoot 3.x开始包的命名空间从javax.servlet换成了jakarta.servlet。如果你的SpringBoot是3.x打成war包丢到Tomcat 9及以下版本启动时极大概率报ClassNotFoundException: javax.servlet.Filter之类的问题因为老Tomcat根本不认识jakarta命名空间。版本对应关系心里要有个数SpringBoot版本Servlet API配套Tomcat2.xjavax.servletTomcat 8.5 / 9.x3.xjakarta.servletTomcat 10.x及以上宝塔软件商店里默认装的Tomcat版本是固定的如果你用的SpringBoot版本太高但面板里的Tomcat是老版本就选其中一个方向做统一要么降SpringBoot到2.x要么换新Tomcat。对0基础来说降SpringBoot版本比在宝塔里装新Tomcat更可控毕竟改动只发生在工程内部。6.5 宝塔面板打不开怎么办面板地址在终端里输出的那一刻还能打开过段时间再访问怎么也打不开。大多数情况不是面板坏了而是端口不通或进程停了。第一步确认面板服务还活着。在服务器终端执行/etc/init.d/bt status看到running就说明进程正常。这时还是打不开基本就是端口不通。检查云厂商安全组有没有放行8888端口宝塔“安全”里的系统防火墙是否也放行了8888。这两个地方是新手最容易漏掉的。如果bt status显示服务未启动执行/etc/init.d/bt start启动后再刷新页面。还有个常见场景云服务器到期续费后IP变了你还在用旧IP访问面板也会打不开。去控制台查看当前公网IP用新的IP登录就行。6.6 前端白屏和接口404的检查顺序页面部署完访问首页一片白或者能打开首页但接口全是404。这个问题的排查顺序很有讲究。第一先用浏览器的F12控制台看报错。如果是JS资源404重点检查index.html里的资源路径。如果是接口404重点检查axios的baseURL指向的是不是http://IP:8080以及后端war包部署后访问路径是否匹配。第二检查接口请求是否带对了项目上下文。比如后端war包没改名为ROOT.war时部署后项目路径是http://IP:8080/demo/如果前端baseURL还是http://IP:8080/自然404。要么把war包改成ROOT.war消掉上下文路径要么在baseURL后面补上/demo二选一。第三排查跨域。前端和后端虽然在同一个Tomcat下但端口和路径可能不同浏览器仍可能报跨域错误。最简单的解法是在后端加全局CORS配置允许前端来源跨域。这块代码网上能找到很多方案搜索“SpringBoot 全局 CORS 配置”即可。这三种情况的排查顺序我建议固定下来先看浏览器控制台再查war包路径最后才考虑跨域。新手往往一上来就怀疑跨域结果调了半天发现是baseURL写错了。最后再分享一点实际操作中的体会我第一次用宝塔部署前后端分离项目从买服务器到线上跑通用了将近一个晚上其中一半时间花在查端口和猜密码上。后来带过不少同学走这个流程能明显感觉到越早把“排查思路”建立起来后面部署任何项目都越快。你遇到报错时别急着东改一下西改一下先去看日志Tomcat看catalina.outMySQL看宝塔的数据库日志前端看浏览器控制台日志会告诉你真正的方向。这套流程熟练之后你可以进一步去了解Nginx反向代理、域名绑定、HTTPS证书、Docker容器化这些进阶玩法。但在此之前把Tomcat SpringBoot MySQL这套最经典的组合手工走通一次医院对你理解整个Web项目的运行机制帮助极大。哪怕以后全都用自动化部署了你也知道每一步到底在做什么。
返回列表