【SpringBoot】搭建Java部署环境 && 部署项目到Linux服务器

文章目录

搭建Java部署环境

1. apt

apt(Advanced Packaging Tool)是 Linux 软件包管理工具。用于在 UbuntuDebian 和相关 Linux 发行版上安装、更新、删除和管理软件包。

列出所有软件包:

shell 复制代码
apt list | grep "java"

更新软件包数据库:

shell 复制代码
sudo apt-get update

安装软件包:

shell 复制代码
sudo apt install 包名

移除软件包:

shell 复制代码
sudo apt remove 包名

remove 命令将卸载给定的软件包,但可能会留下一些配置文件。如果要删除包含所有配置文件的软件包,请使用 purge 而不是 remove

apt removeapt purge 的区别

  • apt remove 删除包的二进制文件,它留下了残留的配置文件。
  • apt purge 删除与包相关的所有内容,包括配置文件。

如果弄乱了程序的配置,希望从系统中完全清除它的痕迹再重新开始,可以使用 apt purge

通常使用 apt remove 就足够了。

2. JDK

  1. 更新软件包
shell 复制代码
sudo apt-get update
  1. 安装 openjdk
shell 复制代码
#查找jdk包
apt list |grep "jdk"
#安装jdk
sudo apt install openjdk-17-jdk

使用 java -version 验证是否安装成功。

3. MySQL

  1. 使用 apt 安装 MySQL
shell 复制代码
#查找安装包
apt list |grep "mysql-server"
#安装mysql
sudo apt install mysql-server
  1. 查看 MySQL 状态
Shell 复制代码
sudo systemctl status mysql
  1. MySQL 安装安全设置:默认的 MySQL 设置是不安全的,MySQL 安装提供了一个安全脚本,用于解决不太安全的默认选项。
shell 复制代码
sudo mysql_secure_installation
  1. 设置密码:连接 mysql 服务器
shell 复制代码
sudo mysql
  1. 使用 alter user 命令修改密码
shell 复制代码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码';

卸载MySQL

shell 复制代码
#停止mysql
sudo systemctl stop mysql
#卸载mysql
sudo apt-get remove --purge mysql-server mysql-client mysql-common
#删除 MySQL 配置文件和数据
sudo rm -rf /etc/mysql /var/lib/mysql
#清理残留文件和目录
sudo apt-get autoremove
sudo apt-get autoclean
#验证卸载结果
mysql --version

部署Web项目到Linux

一、什么是部署

工作中涉及到的"环境"

  • 开发环境:开发人员写代码用的机器。
  • 测试环境:测试人员测试程序使用的机器。
  • 生产环境(线上环境):最终项目发布时所使用的机器。对稳定性要求很高。

把程序安装到生产环境上,这个过程称为"部署"。也叫"上线"。

一旦程序部署成功,那么这个程序就能被外网中千千万万的普通用户访问到。

换句话说,如果程序有BUG,这个BUG也就被千千万万的用户看到了。

部署过程至关重要,属于程序开发中最重要的一环。一旦部署出现问题,极有可能导致严重的事故(服务器不可用之类的)。

为了防止部署出错,一般公司内部都有一些自动化部署工具(如Jenkins等)。当前我们先使用手工部署的方式来完成部署。

二、环境配置

程序正常运行,需要保证环境和程序都要正确,我们需要先设置环境!

数据准备

按照之前的数据库建表脚本,在服务器上运行,建立相同的表结构。

程序配置文件修改

实际工作中,开发环境,测试环境以及生产环境的配置都是不一样的,比如 mysql 的用户名和密码,我们可以针对不同的环境,设置不同的配置。

多平台文件配置

针对不同平台创建不同的配置文件,要求名字为 application-XXX.yml 或者 application-XXX.properties

固定格式,只有后面的字母可以修改

在配置文件里写不同的内容

application-dev.yml

yaml 复制代码
spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/java_blog_spring?characterEncoding=utf8&useSSL=false
    username: root
    password: root
    driver-class-name: com.mysql.cj.jdbc.Driver

application-prod.yml

yaml 复制代码
spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/java_blog_spring?characterEncoding=utf8&useSSL=false
    username: root
    password: 123456
    driver-class-name: com.mysql.cj.jdbc.Driver

在主配置文件 application.yml 中指定配置文件,并删除数据库相关配置

yaml 复制代码
spring:
  profiles:
    active: prod

也可以从 Maven 中自动读取环境配置变量:

xml 复制代码
<profiles>
    <profile>
        <id>dev</id>
        <properties>
            <profile.name>dev</profile.name>
        </properties>
    </profile>
    <profile>
        <id>prod</id>
        <properties>
            <profile.name>prod</profile.name>
        </properties>
    </profile>
</profiles>

<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering> <!-- 💥💥💥开启占位符替换 -->
        </resource>
    </resources>
</build>

修改主配置文件 application.yml

yaml 复制代码
spring:
  profiles:
    active: @profile.name@

三、构建项目并打包

在本地使用 maven 进行打包

  1. 如果 Test 代码中有与环境配置相关的操作(比如数据库相关的操作),打包会失败,点击下图①处的图标,可以跳过测试
  2. 点击 clean->package

四、上传Jar包到服务器,并运行

1. 上传Jar包

直接拖动打好的 jar 包到 xshell 窗口即可完成文件的上传

Xshell 可以直接拖动文件到窗口,达到上传文件的目的,如果使用其他客户端,不支持文件的上传,需要借助 lrzsz 命令。

安装 lrzsz

shell 复制代码
apt-get install lrzsz

2. 运行程序

shell 复制代码
nohup java -jar blog-spring-0.0.1-SNAPSHOT.jar &
  • nohup:后台运行程序。用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。
  • &:让命令在后台执行,终端退出后命令仍旧执行

3. 开放端口号

如果外网需要访问该服务,需要先服务器防火墙开放对应的端口号

本着服务器安全的原则,云服务器上的端口非必要不开启。

比如常见端口号:数据库3306,Redis6379,尽可能避免开放,而是采用其他方式来连接,比如配置隧道的方式

以腾讯云服务器举例:

1)进入防火墙管理页面

2)添加规则

端口号写需要开放的端口号,多个端口号以逗号分割。

五、验证程序

  1. 访问项目:http://IP:Port/blog_login.html,IP改为云服务器的IP,Port改为项目的端口号。

  2. 按照项目的功能进行验证

  • 验证账户注册登录
  • 验证展示博客列表
  • 验证新增博客
  • 验证展示博客内容
  • ...
相关推荐
鱼跃鹰飞9 小时前
设计模式系列:工厂模式
java·设计模式·系统架构
二十雨辰9 小时前
[python]-循环语句
服务器·python
a努力。9 小时前
国家电网Java面试被问:混沌工程在分布式系统中的应用
java·开发语言·数据库·git·mysql·面试·职场和发展
Yvonne爱编码9 小时前
Java 四大内部类全解析:从设计本质到实战应用
java·开发语言·python
J2虾虾9 小时前
SpringBoot和mybatis Plus不兼容报错的问题
java·spring boot·mybatis
wypywyp10 小时前
2.虚拟机一直显示黑屏,无法打开,可能是分配的硬盘空间不够
linux·运维·服务器
m0_7373025810 小时前
碳足迹精准计量,华为FusionSolar助力云服务器绿色运维
服务器
毕设源码-郭学长10 小时前
【开题答辩全过程】以 基于springboot 的豪华婚车租赁系统的设计与实现为例,包含答辩的问题和答案
java·spring boot·后端
Tao____12 小时前
通用性物联网平台
java·物联网·mqtt·低代码·开源
曹轲恒12 小时前
SpringBoot整合SpringMVC(上)
java·spring boot·spring