• (部署服务器系列二)服务器上安装springboot运行环境,发布并运行项目


    上篇文章已经安装CentOS,并且通过桥接连接上内网和外网,接下来我们先安装springboot项目运行环境,用XShell远程连接CentOS

    1、下载安装JDK

    • 下载的JDK版本要和开发的项目一致,下载后用xftp工具传输到 /usr/local/src 目录下
      镜像下载地址:https://repo.huaweicloud.com/java/jdk/8u152-b16/
      在这里插入图片描述

    解压文件到当前目录下

    cd /usr/local/src
    tar -xvf jdk-8u301-linux-x64.tar.gz
    
    • 1
    • 2
    • 设置环境变量
      先安装vim (编辑文件工具)
    yum -y install vim
    vim /etc/profile
    
    • 1
    • 2

    在profile文件末尾添加下面配置(名称要根据自己的改下)

    #配置JDK环境
    export JAVA_HOME=/usr/local/src/jdk1.8.0_152
    export PATH=$JAVA_HOME/bin:$PATH
    export CLASSPATH=.:$JAVA_HOME/lib
    
    • 1
    • 2
    • 3
    • 4

    保存退出,执行修改后配置

    source /etc/profile
    #测试java
    java -version
    
    • 1
    • 2
    • 3

    2、安装mysql

    安装wget(远程下载工具,文件下载到当前文件夹)

    yum -y install wget
    
    • 1

    这里我们用yum安装mysql5.7:https://cloud.tencent.com/developer/article/1886339
    碰到提示“公钥尚未安装”问题:https://blog.csdn.net/qq_53810226/article/details/124836467
    安装完毕,启动mysql服务后,我们用本地mysql workbench远程连接服务器端mysql:
    在这里插入图片描述
    ssl没有设置,按test connection测试连接时报错:SSL connection error: protocol version mismatch
    找到mysql的配置文件/etc/my.cnf,在[mysqld]下面加上skip_ssl,重启mysqld
    再次连接数据库,成功。
    新建项目要连接的数据库和添加项目所需数据。

    3、在eclipse下用gradle打包springboot项目

    前提是有一个springboot项目了,看以前的关于gradle springboot demo的文章
    新建完成后我们就可以在Gradle Tasks中把springboot项目打包成一个jar程序
    在这里插入图片描述
    没有Gradle Tasks窗口在这里找
    在这里插入图片描述
    打包完后会在项目文件夹下的build/libs中生成一个jar包,这个就是我们编写的程序。

    4、本地测试运行程序

    • 在jar包当前文件夹按shift+右键-打开命令窗口,启动程序
    java -jar 项目.jar
    
    • 1

    打开浏览器输入网址,成功显示网页

    • 可能出现问题:gradle打包后找不到页面
      org.thymeleaf.exceptions.TemplateInputException: Error resolving template [/login.html], template might not exist or might not be accessible by any of the configured Template Resolvers
      找不到网页,打包后会把"/index.html"认为绝对路径,改用相对路径"index.html",以后编码要注意了
    	//显示主页
    	@RequestMapping("/index")
    	public ModelAndView index(Model model) {
    		
    ...
    		
    		return new ModelAndView("index.html", "indexModel", model);
    	}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    5、把jar放到服务器上运行

    • Linux jar部署(使用nohup后台运行命令)
    nohup java -jar 项目jar &
    
    • 1

    用nohup要等待启动,不会显示日志,它默认把日志输出到当前文件夹下nohup.out中
    查看日志

    cat nohup.out
    
    • 1

    如果只是测试,要实时显示信息,可以直接用java命令,服务会随对话结束退出

    java -jar 项目jar
    
    • 1

    浏览器输入服务器网址,成功显示网页

    • 可能遇到问题:Unable to start embedded Tomcat server,一般是端口被占用,要彻底jar关闭进程
    #查看有java字样的进程
    ps aux | grep java
    kill -9 pid号
    
    • 1
    • 2
    • 3

    在这里插入图片描述
    再次启动进程即可

    • 可能遇到问题2:启动jar后,访问网址时在打转,CentOS防火墙端口还要开放(springboot默认是8080,也可以设置为http默认端口80)
    firewall-cmd --zone=public --add-port=端口号/tcp --permanent
    firewall-cmd --reload
    
    • 1
    • 2

    6、预告

    下一章:eclipse远程调试springboot项目代码

    附加

    • springboot服务组件:

    Web:web项目组件,包含spring mvc,tomcat,logback等jar
    JPA:JDBC请求组件,包含hibernate,jboss等ORM jar
    Devtools:热部署组件,可以不重启服务的情况下刷新服务

    • 实际购买服务器后也会有自己的ip,还可以购买域名映射ip,域名还需要域名备案(阿里云、腾讯云提供一条龙服务,网站内搜索相关即可)。
    • 后期方向可能学习CDN加速,Docker镜像部署。
  • 相关阅读:
    《永劫无间》找不到ffmpeg.dll无法继续执行怎么办,永劫无间找不到ffmpeg.dll解决方案
    【eBPF-01】初见:基于 BCC 框架的第一个 eBPF 程序
    【办公技巧】如何编辑带有限制编辑密码的PDF文件?
    vue-element学习(一)
    Postman使用json提取器和正则表达式实现接口的关联
    【面试题】AQS
    用广搜和动态规划写个路径规划程序
    无版权 NFT 会为市场带来改变么?
    HTTPS的加密方式超详细解读
    图论|207. 课程表 210. 课程表 II
  • 原文地址:https://blog.csdn.net/heiye_007/article/details/133703453