欢迎光临
我们一直在努力

springboot项目部署到云服务器上

1.1服务器准备

首先需要购买云服务器,我这里是白嫖的阿里云,所以就用阿里云做演示:
服务器上首先需要配置安全组规则,这里参考配置mysql
然后我们需要安装数据库(我这里用的是mysql)和jdk。这里可以使用宝塔进行安装,比较方便
配置完jdk后可以通过java -version查看是否安装成功,成功的可以看到如下图的格式
springboot项目部署到云服务器上

还需要在本地电脑上安装xshell和xftp,有免费版的。
springboot项目部署到云服务器上
输入用户名和密码进行配置。xftp也是一样 后者是为了快捷传输文件。

1.2本地准备

打包方式有两种,一种是打包成war包,这个时候需要在云服务器中部署tomcat才能够运行。第二种是打包成jar包,这种由于springboot内置了tomcat,所以只需要服务器上有jdk就可以了。需要注意的是springboot最低需要jdk1.8及以上版本。我们这里演示的是打包jar包。
首先我们最好在项目配置两个环境,一个dev环境,一个pro环境。
springboot项目部署到云服务器上
其中的配置文件大同小异,主要是数据库的连接配置需要修改,毕竟一般都是一个用的本地的数据库,一个用的云服务器上的数据库。可以先在发布环境中跑一遍项目。
然后再pom中加入依赖
springboot项目部署到云服务器上
这个是加入的依赖。

 <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> 

这个是配置静态资源

 <resources> <resource> <!-- 指定resources插件处理哪个目录下的资源文件 --> <directory>${basedir}/src/main/webapp</directory> <!-- 需要将资源文件放到该目录下才能访问 --> <targetPath>META-INF/resources</targetPath> <includes> <include>**/**</include> </includes> </resource> <resource> <directory>${basedir}/src/main/resources</directory> </resource> </resources> 

这个是指定打包jar包

 <!-- 打包成jar包 --> <packaging>jar</packaging> 

然后进行打包
springboot项目部署到云服务器上
打包后的结果在target目录下:
springboot项目部署到云服务器上

打包完了可以直接在本地先试着运行一下(切换目录到jar包所处位置,下面代码运行jar包。xxx.jar是你的Java包全称)
java -jar xxx.jar
到这里本地准备也完成了。

1.3部署

将jar包通过xftp发送到服务器中:
springboot项目部署到云服务器上
尝试运行该xxx.jar包

  • 查看端口使用情况netstat -anp | grep 8800 //netstat -anp | grep <端口号>
    我们要想在linux系统上运行这个项目,就要保证他运行所用的端口没有被占用,不然运行就会报错
  • 如果被占用了,(没被占用的时候不显示任何东西),查看占用端口的PIDsudo lsof -i:8800 //sudo lsof -i:<端口号>
    springboot项目部署到云服务器上
    springboot项目部署到云服务器上
  • 我们要把它kill掉,留出空位来运行我们的项目。kill后再次查看端口,可以看到这个端口已经腾出来了(查询为空)sudo kill -9 26191 //sudo kill -9 <PID>
    springboot项目部署到云服务器上
  • 进入xxx.jar包所在的目录下
  • 然后执行命令:java -jar xxx.jar
  • springboot项目部署到云服务器上
    这样就算部署成功了,可以通过http://公网ip:端口号 访问网站。但是这样还有一个问题。就是当我们关掉xhell时,我们的网站又访问不上了。只能再次运行一次。
    我们可以先停掉原来的项目。创建一个start.sh文件。向其中添加字段 : java -jar ***.jar 。按ESC + :wq + 回车键保存退出。这是vim的基本操作。
    给这个start.sh 管理员权限,然后用nohup指令不间断地运行(nohup指令:忽略所有挂断(SIGHUP)信号,不挂断地运行命令)
    chmod 777 start.sh //赋予管理员权限
    nohup ./start.sh & //不间断运行文件内的指令
    把Xshell关掉,在浏览器上输入http://公网IP:8800 发现项目还是可以进入,说明我们已经设置成功了。至此springboot项目部署到阿里云服务器上完结。
    springboot项目部署到云服务器上
    当然后面还需要我们去申请域名,就是其他人那种www.xxx.com的访问地址,而不是我们现在这种ip+端口的地址。我这里就不做演示了。

1.4可能遇到的问题

  • mysql的时区问题
    由于我的是宝塔一键部署的,好像配置好了的,这个问题倒是没遇见。遇到了可以通过修改时区解决。
  • 项目在本地可以访问,到服务器启动成功了访问不了。我出现过这个问题。经过各种尝试有如下几种可能:
  1. 有种可能是tomcat配置问题。在yml文件中配置:server.address=0.0.0.0。据说是tomcat默认的是172.0.0.0.所以只能本地访问。
    springboot项目部署到云服务器上
  2. 静态资源问题。就是静态资源打包的时候没有打入jar。所以访问404. 解决就是上面配置静态资源那段代码。
  3. 服务器端口未开启:
    我最终的问题就出现在这里,我是通过阿里云的控制台界面开启的端口。在该界面显示端口是开启了的。但是实际上并没有开启。需要在命令行界面开启。
    添加端口:
    firewall-cmd --zone=public --add-port=8080/tcp --permanent (--permanent永久生效,没有此参数重启后失效)
    刷新规则:
    firewall-cmd --reload
    查看指定端口
    firewall-cmd --zone=public --query-port=8080/tcp
    删除指定端口
    firewall-cmd --zone=public --remove-port=8080/tcp --permanent
    查看已开放得所有端口
    firewall-cmd --list-ports
    我们可以先查看所有开放的端口是否存在我们需要开放的端口。没有的话添加,需要注意的是添加后需要刷新规则。不然不生效。然后通过查看指定端口号如果返回yes就说明开放端口成功。
  • 海报
海报图正在生成中...
赞(0) 打赏
声明:
1、本博客不从事任何主机及服务器租赁业务,不参与任何交易,也绝非中介。博客内容仅记录博主个人感兴趣的服务器测评结果及一些服务器相关的优惠活动,信息均摘自网络或来自服务商主动提供;所以对本博客提及的内容不作直接、间接、法定、约定的保证,博客内容也不具备任何参考价值及引导作用,访问者需自行甄别。
2、访问本博客请务必遵守有关互联网的相关法律、规定与规则;不能利用本博客所提及的内容从事任何违法、违规操作;否则造成的一切后果由访问者自行承担。
3、未成年人及不能独立承担法律责任的个人及群体请勿访问本博客。
4、一旦您访问本博客,即表示您已经知晓并接受了以上声明通告。
文章名称:《springboot项目部署到云服务器上》
文章链接:https://www.456zj.com/2442.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址