【JavaEE】通过Linux部署Web项目到云服务器上

一.配置部署所需的环境.

1.1 什么是部署?

  • 要想知道什么是部署, 就要先了解我们在日常开发的过程中所设计到的几种环境:
    • 开发环境: 软件开发环境指的是开发人员在创建、测试和部署软件应用程序时所需的一系列硬件、软件、工具和流程的集合。它是为了支持软件开发过程而构建的基础设施.
    • 测试环境: 测试环境是专门为软件测试工作搭建的环境,用于模拟真实生产环境以验证软件的功能和性能。
    • 生产环境: 生产环境是软件正式发布并对外提供服务的环境,用于面向最终用户的实际使用.
  • 部署: 把程序安装到生产环境上, 这个过程称为 “部署”. 也叫 “上线”. 一旦程序部署成功, 那么这个程序就能被外网中千千万万的普通用户访问到. 当然,如果程序有 BUG, 这个 BUG 也就被千千万万的用户看到了. 部署过程至关重要, 属于程序开发中最重要的一环. 一旦部署出现问题, 极有可能导致严重的事故(服务器不可用之类的问题). 为了防止部署出错, 一般公司内部都有一些自动化部署工具(如 Jenkins 等). 当前我们在学习阶段先使用手工部署的方式来完成部署.

1.2 环境配置.

  • 程序正常运行, 需要保证环境和程序都要正确, 我们需要先设置环境
  • 实际工作中, 开发环境, 测试环境以及生产环境的配置都是不一样的. 比如mysql的用户名和密码
    我们可以针对不同的环境, 设置不同的配置

多平台文件配置

  1. application-dev.yml (开发环境的配置)
spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/java_blog_spring?characterEncoding=utf8&useSSL=false
    username: root
    password: 120348
    driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:
  configuration:
    map-underscore-to-camel-case: true #配置驼峰自动转换
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句
  mapper-locations: classpath:mapper/**Mapper.xml
# 设置日志文件的文件名
logging:
  file:
    name: spring-blog.log
  1. application-prod.yml (生产环境的配置)
spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/java_blog_spring?characterEncoding=utf8&useSSL=false
    username: root
    password: YT@yyds.666
    driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:
  configuration:
    map-underscore-to-camel-case: true #配置驼峰自动转换
  mapper-locations: classpath:mapper/**Mapper.xml
# 设置日志文件的文件名
logging:
  file:
    name: spring-blog.log
  1. application.yml (主配置文件, 用于选择在不同的环境下,选择不同的配置文件)
spring:
  profiles:
    active: @profile.name@

在pom中添加标签,方便我们选择不同的环境配置:

	<profiles>
        <profile>
            <id>dev1</id>
            <properties>
                <C>dev</C>
            </properties>
        </profile>
        <profile>
            <id>prod1 </id>
            <properties>
                <profile.name>prod</profile.name>
            </properties>
        </profile>
    </profiles>

在这里插入图片描述

二.构建项目并打包.

  • 在本地使用maven进行打包
    • 如果Test代码中有与环境配置相关的操作(比如数据库相关的操作), 打包会失败, 点击下图①处的图标, 可以跳过测试
    • 点击clean->package
      在这里插入图片描述
      在这里插入图片描述

三.上传Jar包到服务器, 并运行

3.1 上传Jar包到服务器

  1. 将打好的Jar包, 直接拉到Linux的终端中
    如果使用其他客户端,不支持文件的上传, 需要借助lrzsz命令
    • 上传文件
      sz filename
    • 下载文件
      rz
  • 问题: 如果执行上述命令之后, 提示 Command ‘XX’ not found , 表示当前云服务器未安装lrzsz
    命令, 需要先进行安装
    • 安装lrzsz
      apt-get install lrzsz

在这里插入图片描述

在这里插入图片描述

  1. 运行程序.
    • 命令: nohup java -jar blog-spring-0.0.1-SNAPSHOT.jar &
      nohup : 后台运行程序. 用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行.
    • 语法格式:
      nohup Command [ Arg … ] [ & ]
    • 参数说明:
      • Command:要执行的命令。
      • Arg:⼀些参数,可以指定输出文件
      • &:让命令在后台执行,终端退出后命令仍旧执行
    • 比如:
      nohup java -jar blog-0.0.1-SNAPSHOT.jar >/logs &
      Linux 可以通过 > 把需要输出的内容写到指定文件中. 这样的操作称为 “重定向”.

3.2 开放服务器端口号.

  • 如果外网需要访问该服务, 需要先服务器防火墙开放对应的端口号, 本着服务器安全的原则,云服务器上的端口非必要不开启. 比如常见端口号: 数据库 3306 , Redis 6379, 尽可能避免开放, 而是采用其他方式来连接, 比如配置隧道的方式

  • 以阿里云为例子:
    在这里插入图片描述

在这里插入图片描述

3.3 杀掉进程.

如果我们需要重启服务, 或者重新部署等, 都需要先停止之前的服务.

  1. 查看当前服务的进程
    ps -ef|grep java

  2. 杀掉进程
    kill -9 PID

四.常见问题.

  • 一个程序的正常运行, 需要程序的正确和环境的正确. 同样的代码在Windows上可以运行成功, 不一定在Linux上运行成功. 不同的系统对代码的理解和支持是不同的. 比如Windows系统对MySQL不区分大小写, Linux区分大小写服务不能正常访问的原因有很多, 主要分以下几个方面
    1. 服务未启动
      a. 使用 ps -ef|grep java 查看程序是否在运⾏
      b. 使用 curl http://127.0.0.1:8080/blog_login.html 看下是否有返回html页面,
      如果有返回, 说明程序启动成功了, 考虑端口未开放
      c. 如果未启动成功, 需要查看对应的日志, 根据原因来分析.
      i. 数据库不存在
      ii. 表不存在(区分大小写)
      iii. 数据库密码不正确
      iv. Jdk 安装版本不对, 或者未安装
      v. mysql未设置密码
      vi. …
    2. http端口未开放
      检查云服务器防火墙/安全组是否开放相应端⼝(如8080)
  • 14
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值