springboot+vue部署上云
部署准备
腾讯云服务器
购买腾讯云轻量级服务器CPU: 2核 内存: 4GB,便宜基本满足开发条件,新人和双十一都有优惠,服务器地址选择临近城市。得到公网ip地址。直接使用系统CentOS 7.9 64bit
重置密码
购买后默认是无密码的,需要设置密码:腾讯云登录-->云产品-->轻量服务器,点击重置密码即可设置密码。


安装java jdk
安装jdk用于运行springboot的jar包。
安装1.8.0_352:
查看版本:
yum search java|grep jdk   //查询jdk版本
yum list java*  //查询java版本




yum install -y java-1.8.0-openjdk.x86_64  //安装

测试jdk安装
命令:
java -version
javac Demo.java
java Demo
附带Demo.java文件代码:
public class Demo {
public static void main(String[] args) {
System.out.println("hello java!");
}
}


在/data/file/java目录下上传Demo.java代码并运行javac命令:




下载解压安装nginx
安装nginx1.23.2,用于vue前端部署。
nginx官网地址:http://nginx.org/
本人选择的是1.22.1稳定版(一般选择稳定版),复制下载链接,然后用wget命令下载:


下载并解压nginx



安装nginx:
执行make命令和make install命令:


安装好后讲解目录
回到/usr/local/nginx目录下,conf html logs sbin四个目录是安装好后生成的,其中:conf是配置文件目录,里面有nginx.conf文件;html中存放静态html文件,vue项目就直接存放打包好的html静态资源(dist文件夹下所有文件直接复制过来);logs存放nginx运行时日志;sbin存放nginx启动程序:nginx。




nginx启动命令
切换到/usr/local/nginx/sbin目录,执行./nginx:

修改nginx配置文件
修改端口、服务器名、资源路径和跨域





上面404报错原因是8080端口被墙了:
打开8080端口访问
打开防火墙(首次开启需要打开防火墙然后关闭,才能进行防火墙端口开启):

查看所有防火墙打开端口:发现无8080,证实上述被墙猜测。

添加8080端口(公共网路):firewall-cmd --permanent --zone=public --add-port=8080/tcp

一定要关机重启,然后启动防火墙,查看当前防火墙开放端口。
即可直接打开ip:8080(不修改下图root静态资源地址,会有默认页面index.html)

附:重启防火墙命令:
firewall-cmd --reload

解压rar文件安装rar、unrar命令
参考链接:https://blog.51cto.com/u_11812862/3010023
本地安装ssh工具如xshell和xftp进行本地连接和文件传输(可选)
xshell用于操作云主机,xftp用于传输文件。
安装mysql作为数据库
下载mysql yum源
wget https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
安装yum源
yum localinstall mysql80-community-release-el7-1.noarch.rpm
更新yum源
yum clean all
yum makecache
安装mysql(默认安装最新版本,本人的为8.0.31)
yum install mysql-community-server
开启myslq服务
systemctl  start  mysqld
查看mysql进程
ps -ef|grep mysql





首次登录并强制修改密码
开启mysql访问后可查看默认密码:
grep "password" /var/log/mysqld.log

用默认密码登陆后,必须重置密码,否则输入任何命令都会报错:error 18020

修改密码命令:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
设置密码过于简单会报错

密码必须有大小写+数字+符号

创建数据库
查看数据库:
show databases;
创建数据库:
create database yourDatabaseName;

配置云主机防火墙
放开防火墙端口
选择8080作为前端端口,8889作为后端端口。



vue前端打包部署
完成这一步就可以访问vue前端。
npm run build打包:



将打包文件membership.rar(dist.rar)上传到nginx配置的静态资源目录root   html/membership中,即:/usr/local/nginx/html/membership目录中,然后将membership.rar解压(用xftp可直接复制不压缩),下图为解压后的membership目录:

(如果上次的压缩包,需要安装unrar命令,然后解压,参考:https://www.lxlinux.net/3191.html)


springboot后端用maven打包
有连接数据库必须先安装数据库,否则会执行失败。
主要命令:java -jar xxxx.jar
先检查properties文件:查看数据库连接

idea直接用maven工具打包:(优秀的人可以在dos界面上打包)

打包成功后控制台run窗口输出:

项目根目录生成文件夹target:

上传xxx-0.0.1-SNAPSHOT.jar文件到云主机,切换到jar包所在目录然后执行命令:
java -jar xxx-0.0.1-SNAPSHOT.jar &
也可用nohup java -jar xxx-0.0.1-SNAPSHOT.jar &
可以将日志输出到某某文件xxx.log
nohup java -jar xxx-0.0.1-SNAPSHOT.jar >catalina.out 2>&1 &

curl命令发送请求到ip:8889以验证
curl 127.0.0.1:8889/classify/getAll

也可在本地用postman发送请求。

后续还需要将数据库基础数据搬过去,很简单,执行sql就行,如果用反射机制生成数据库表结构,可以忽略。
走过的坑


后端用外网ip:8889连接失败,报拒绝连接,n次检查防火墙之后和跨域后,在本地部署一套一样的系统仍然查不到原因,最后本地postman用ipv4的ip连接都失败,而内网成功,锁定错误在properties配置:server.address配置错误。问题记录链接:networkError正确配置如下:

vue前端跨域请求拒绝访问:
Vue2跨域报错net::ERR_CONNECTION_REFUSED、AxiosError net::ERR_FAILED、 Network Error、ERR_NETWORK等,有可能会出现相应200但是返回无发显示数据等稀奇古怪的问题,配置nginx跨域add_header允许所有请求头即可。

防火墙端口问题
由于改过一次端口,从8888端口到8889,防火墙修改必须关机重启,然后重新启动防火墙,firewall-cmd --list-ports命令显示目前端口开放中有8889才算成功。

防火墙端口放开失败,请求路由会报错,请求超时。

最终终于出结果了

贴一个请求头:

参考链接:
SpringBoot项目部署到腾讯云的实现步骤
在Linux环境下部署springboot项目
Linux环境部署war包流程及tomcat配置 
linux安装rar解压程序
解决Vue2跨域报错AxiosError net::ERR_FAILED、 Network Error、ERR_NETWORK
Linux常用命令—unrar命令

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