很多朋友买完腾讯云服务器后,最头疼的就是项目到底怎么上线。尤其是用Spring Boot做后端、Vue做前端这种常见组合,本地跑得好好的,一到云上就打不开页面、接口404、跨域报错一堆。别急,下面咱们就一步步把这个流程走通,从买服务器开始到前后端都能通过公网正常访问,全部讲清楚。
先确认你的项目结构和打包方式
在动手部署前,得先知道自己手里有什么。假设你本地的项目是这样的:
- 后端:Spring Boot项目,使用Maven或Gradle构建,最终可以打包成一个可运行的
jar文件。 - 前端:Vue项目,通过
npm run build命令生成静态资源文件(通常在dist目录下)。 - 通信方式:前端通过
axios或其他方式请求后端API,比如http://localhost:8080/api/login。
这种架构是最常见的分离式部署方案,后端独立运行,前端作为静态页面由Web服务器(如Nginx)托管。
第一步:买一台合适的腾讯云服务器
要部署项目,首先得有台服务器。如果你还没买,建议选轻量应用服务器,管理更简单,适合新手。系统推荐选CentOS 7.6或更高版本,或者Ubuntu 20.04,这类系统社区支持好,教程多。
配置方面,起步用2核2G内存、50GB系统盘、3Mbps带宽基本够用。记住,你买的这台机器会有一个公网IP,后面所有访问都靠它。
第二步:连接上你的云服务器
买完服务器后,需要通过SSH工具登录进去操作。Windows用户可以用MobaXterm、Xshell,Mac或Linux用户直接用终端就行。
- 在腾讯云控制台找到你的实例,复制公网IP地址。
- 打开SSH工具,新建连接,输入IP、端口22、用户名
root。 - 第一次登录会提示设置密码,去控制台重置一个符合要求的密码(大小写+数字+特殊符号,12位以上)。
- 连接成功后,你会看到命令行界面变成
[root@xxx ~],说明已经进去了。
第三步:在服务器上安装必要的运行环境
你的项目要跑起来,服务器上得有对应的环境。Spring Boot需要Java,Vue打包后的静态文件需要Web服务器来托管。
安装Java环境(JDK)
Spring Boot项目依赖Java运行。我们以JDK 11为例,它是目前比较稳定且广泛支持的版本。
执行下面命令安装:
yum install -y java-11-openjdk-devel
安装完后验证是否成功:
java -version
如果看到类似openjdk version "11.0.xx"的输出,说明JDK安装没问题了。
安装Nginx作为前端静态服务器
Vue打包后是、CSS、JS这些静态文件,需要用Web服务器来提供访问。Nginx轻量、高效,是首选。
安装Nginx:
yum install -y nginx
启动Nginx并设置开机自启:
systemctl start nginx
systemctl enable nginx
现在你在浏览器输入服务器的公网IP,应该能看到Nginx的欢迎页面,说明Web服务已经跑起来了。
第四步:把项目上传到服务器
接下来要把你本地打包好的文件传到服务器上。
上传Spring Boot的jar包
在你本地项目根目录执行:
mvn clean package
打包完成后,会在target目录下生成一个.jar文件,比如myapp-0.0.1-SNAPSHOT.jar。
使用SCP、WinSCP或MobaXterm的拖拽功能,把这个jar文件上传到服务器的/root/myapp/目录下(你可以自己创建这个目录)。
mkdir -p /root/myapp
上传Vue的dist文件
在Vue项目目录执行:
npm run build
生成的dist文件夹里就是所有前端资源。把整个dist文件夹上传到服务器的/usr/share/nginx/目录下,替换默认内容。
rm -rf /usr/share/nginx//
然后把本地dist里的所有文件传进去
第五步:处理前后端分离的跨域问题
本地开发时,前端启动一个开发服务器(比如localhost:8080),后端在localhost:9090,浏览器因为同源策略会阻止跨域请求。
上线后我们不再让前端直接访问后端IP+端口,而是统一通过域名或IP访问,由Nginx来做反向代理,这样就能避免跨域。
修改前端请求地址为相对路径
在Vue项目中,把所有API请求地址从http://localhost:8080/api改成/api。
例如在main.js中设置axios默认baseURL:
axios.defaults.baseURL = '/api';
配置Nginx反向代理后端接口
编辑Nginx配置文件:
vim /etc/nginx/nginx.conf
找到server块,在location /后面添加一个新的location规则:
location /api {
proxy_pass http://localhost: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;
}
保存后重启Nginx:
systemctl restart nginx
这样一来,当浏览器访问http://你的IP/api/login时,Nginx会自动把请求转发到本机8080端口的Spring Boot应用。
第六步:启动Spring Boot后端服务
现在回到你上传jar包的目录:
cd /root/myapp
使用nohup命令后台运行jar包,避免关闭SSH后进程终止:
nohup java -jar myapp-0.0.1-SNAPSHOT.jar --server.port=8080 > app.log 2>&1 &
这条命令的意思是:
java -jar:运行jar包。--server.port=8080:指定启动端口为8080。nohup:忽略挂起信号,保证后台运行。> app.log:把日志输出到app.log文件。2>&1:把错误流也重定向到输出流。&:放在后台执行。
可以用下面命令查看进程是否在跑:
ps aux | grep java
看到有java进程并且监听8080端口,就说明后端已经启动成功。
第七步:开放服务器端口让外网能访问
即使你服务启动了,Nginx也配好了,如果腾讯云的防火墙没开对应端口,外面还是访问不了。
你需要去腾讯云控制台配置安全组规则。
- 进入腾讯云控制台 → 云服务器 → 安全组。
- 找到你服务器关联的安全组,点击“配置规则”。
- 点击“添加规则”,开放以下端口:
- 80端口:HTTP流量,前端页面和Nginx代理走这个。
- 443端口:HTTPS流量(如果后面要配SSL证书)。
- 8080端口:虽然Nginx做了代理,但有时调试需要直接访问后端,也可以先开放。
- 每条规则的“来源”设为
0.0.0.0/0,表示允许任何IP访问。
注意:Nginx默认监听80端口,Spring Boot监听8080端口,只有这些端口在安全组里放行了,公网才能访问到。
第八步:验证整个链路是否通了
所有配置做完后,最后一步是测试。
测试前端页面能否打开
在浏览器输入你的服务器公网IP,比如http://123.123.123.123,应该能看到你的Vue项目首页加载出来。
打开浏览器开发者工具(F12),看Network选项卡里有没有404或502错误。
测试API接口是否能调通
在页面上触发一个登录或获取数据的操作,观察请求的URL是不是/api/login这样的路径。
如果返回200,并且有正确数据,说明Nginx反向代理生效,后端接口也正常响应。
如果返回502 Bad Gateway,说明Nginx能收到请求但转发失败,常见原因是后端没启动或端口不对。
如果返回404,检查Nginx配置的proxy_pass地址是否正确,以及Spring Boot是否真的在监听8080端口。
第九步:一些常见的问题排查点
上线过程中总会遇到点小问题,下面列出几个高频坑,帮你快速定位。
| 现象 | 可能原因 | 解决办法 |
|---|---|---|
| 输入IP打不开页面 | Nginx没启动或端口未放行 | 检查systemctl status nginx,确认安全组开了80端口 |
| 页面能打开但接口404 | 前端请求路径没改,还在请求localhost:8080 | 确保axios的baseURL是/api而不是完整URL |
| 接口返回502 | 后端jar没启动或挂了 | 用ps aux | grep java查看,重启jar包 |
| 上传文件失败 | Nginx默认上传大小限制为1M | 在nginx.conf的http块中添加client_max_body_size 50m; |
| 页面出现空白 | dist文件没传全或路径错了 | 检查/usr/share/nginx/目录下是否有index.等文件 |
第十步:让项目更稳定的小建议
现在你的项目已经能跑了,但还可以做点优化让它更可靠。
- 使用进程管理工具:用
nohup虽然能后台运行,但一旦jar崩溃不会自动重启。建议安装supervisor来管理Java进程,实现自动拉起。 - 配置日志轮转:长时间运行的日志会越来越大,可以配置logrotate定期压缩归档。
- 考虑使用宝塔面板:如果你觉得命令行操作麻烦,可以在腾讯云服务器上安装宝塔面板,它提供图形化界面管理网站、数据库、防火墙等,对新手更友好。安装后通过
http://你的IP:8888访问,记得在安全组里开放8888端口。 - 域名绑定:如果你有域名,可以在DNS服务商那里做A记录指向服务器IP,然后在Nginx里配置
server_name,这样就能用www.yoursite.com访问了。
整个部署流程走下来,核心就是三点:环境装好、代码传上去、端口放行。只要这三步不出错,Spring Boot + Vue项目在腾讯云服务器上运行是完全没问题的。
如果你还没服务器,可以先去体验一下 腾讯云服务器,选个轻量应用服务器起步,按照上面步骤一步步来,很快就能看到自己的项目跑在公网上了。