使用Ubuntu搭建Java部署环境

news2025/2/22 7:23:36
White graces:个人主页

🙉专栏推荐:Java入门知识🙉

🐹今日诗词:小舟从此逝,江海寄余生🐹


⛳️点赞 ☀️收藏⭐️关注💬卑微小博主🙏

⛳️点赞 ☀️收藏⭐️关注💬卑微小博主🙏


在Ubuntu下搭建Java部署环境需要使用到apt命令

apt命令(用于安装、更新、删除、查询软件包)

语法: 

apt [命令] [软件包名称]

接下来我们来搭建Java部署环境

使用apt安装JDK

更新软件包列表

我们先更新软件包列表

Ubuntu仓库的软件不一定和软件包官网的版本一样, 如果有需求可以自定义下载, 不使用配置仓库的软件包

安装openJDK

步骤: 

  • 查找jdk: 使用 apt list |grep "jdk"
  • 安装jdk: 使用 sudo apt install openjdk-17-jdk

查找jdk

apt list |grep "jdk"

安装jdk

sudo apt install openjdk-17-jdk

使用apt安装MySQL

查找安装包

命令: 

apt list | grep "mysql-server"

安装MySQL

命令:

sudo apt install mysql-server

输入命令, enter安装, 接下来会有选择让我们选择



查看MySQL状态

命令

sudo systemctl status mysql

MySQL安全设置

默认安装的MySQL设置是不安全的, 数据被盗了就老实了, 因此MySQL提供了一个安全脚本

命令: 

sudo mysql_secure_installation

接下来也有许多选项, 除了第二个选项选择数字2, 其他都选择Y

选项1.

选项2.

剩下全选择: Y

设置密码

先连接MySQL服务器

命令: 

sudo mysql

修改密码命令:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码'

大小写都要有

退出数据库: 安装完毕, 退出数据库回到主机页面的命令是

exit

如何连接MySQL数据库?

连接数据库命令: 

mysql -uroot -p

这个是隐式输入, 看不见输入的东西

然后把你的数据库代码导出来, 文件后缀是.sql, 最后放到服务器中

或者在服务器中执行sql语句也是可以的

执行sql文件的命令

source 文件名

部署Web项目到Linux

准备工作

我们需要把本地的项目上传到服务器上, 需要做点准备工作

1. 上传文件到服务器需要通过 rz 命令上传

    但是ubuntu 没有内置上传命令(rz), 我们需要通过指令下面指定安装

apt-get install lrzsz

安装完之后, 我们可以把本地文件上传到服务器上, 也可以将服务器的文件下载到本地

经过以上的步骤, 我们服务器的项目环境就部署好了,

下面就可以把我们本地的项目上传到服务器上了,

上线之间需要进行小小的修改

修改程序的配置文件

Spring Boot 默认使用 application.ymlapplication.properties 来加载全局配置。如果要为不同的环境创建配置文件,可以命名为以下格式:

  • application.yml
  • application-dev.yml(开发环境)
  • application-prod.yml(生产环境)

下面是原本的application.yml内容, 接下来复制两份分别到

application-dev.yml和application-prod.yml文件中

spring:
  application:
    name: books
  # ???????
  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
# ?? mybatis xml ??????? resources/mapper ?????? xml ??
mybatis:
  mapper-locations: classpath:mapper/**Mapper.xml
  configuration:
    map-underscore-to-camel-case: true #????????
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
logging:
  file:
    name: spring-book.log

这两个文件设置好了, 就通过application.yml指定要激活的环境配置文件

application.yml文件代码如下:

spring:
  profiles:
    active: prod

使用Maven打包

使用Maven把项目打包成jar包的形式

点击package即可打包

它会依次执行clean->validate->compile->test->package

如果打包的过程中出错了, 大概率是test执行没通过, 像下面这样

解决办法

打包成功是这种情况

找到你打好的jar包, 然后上传到服务器上

ls查看是否上传成功

启动程序

通过指令启动我们的程序

启动程序分为前台启动和后台启动:

前台启动程序: 关闭连接就不能继续访问了

java -jar jar包名

nohup(后台持久化运行)

nohup: 用于在关闭终端时, 保持程序继续运行, 

通过kill指令可以结束运行的进程

nohup java -jar 包名 &

开放端口号

开放端口号需要在你的服务器厂商那里开启, 下面以阿里云为例: 演示如何开放端口号

阿里云

观察日志(重要)

项目已经能够在线上运行了, 如果出现问题了, 

学会观察日志也非常重要, 一般都是观察error日志和查看最后的日志

持续跟踪日志:

tail -f 日志文件名

持续跟踪错误日志

tail -f 日志文件名 | grep "ERROR"

日志重定向

指令:

nohup java -jar 执行文件 >重定向目录 &

Linux通过 > 进行重定向

日志重定向需要先关闭进程, 然后在启动的时候才能设置日志存储位置

杀死进程指令:

kill 进程号或进程名

如果不知道具体的进程名, 可以先模糊查询一下, 在通过进程号杀死进程

先查看正在运行的进程:

ps -ef|grep 进程名

找到进程的pid, 然后kill 进程号

常见问题

一个程序的正常运行,需要程序的正确和环境的正确.同样的代码在Windows上可以运行成功,不一定在Linux上运行成功,不同的系统对代码的理解和支持是不同的.

比如Windows系统对MySQL不区分大小写,Linux区分大小写服务不能正常访问的原因有很多,主要分以下几方面: 

  1. 服务未启动
    使用 ps -ef|grep java查看程序是否在运行
    curl http://127.0.0.1:8080/你的网页名.html看下是否有返回html页面,
    如果有返回,说明程序启动成功了,考虑端口未开放
    如果未启动成功,需要查看对应的日志,根据原因来分析.
  2. 数据库不存在
  3. 表不存在(区分大小写)
  4. 数据库密码不正确
  5. Jdk 安装版本不对,或者未安装
  6. mysql未设置密码
  7. http端口未开放: 检查云服务器防火墙/安全组是否开放相应端口(如8080)

美图分享

✨🎆谢谢你的阅读和耐心!祝愿你在编程的道路上取得更多的成功与喜悦!"🎆✨🎄

⭐️点赞收藏加关注,学习知识不迷路⭐️

🎉✔️💪🎉✔️💪🎉✔️💪🎉✔️💪🎉

👍😏⛳️点赞☀️收藏⭐️关注😏👍

👍😏⛳️点赞☀️收藏⭐️关注😏👍

👍😏⛳️点赞☀️收藏⭐️关注😏👍

🙆‍♂️🙆‍♂️🙆‍♂️🙆‍♂️🙆‍♂️🙆‍♂️🙆‍♂️🙆‍♂️🙆‍♂️🙆‍♂️🙆‍♂️🙆‍♂️🙆‍♂️

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2303282.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MATLAB学习之旅:从入门到基础实践

在当今科技飞速发展的时代,MATLAB作为一款强大的数学软件,犹如一把神奇的钥匙,能够打开众多领域的大门。无论是工程计算、数据分析,还是算法开发、可视化呈现,MATLAB都展现出了无与伦比的魅力。今天,就让我们踏上这段奇妙的MATLAB学习之旅,从最基础的部分开始,逐步探索…

蓝桥杯核心内容

核心内容 数学 质数与筛质数,分解质因数 分解质因数 所有的数都可以写成有限个数相乘质数:可以写成1✖本身(如131✖13)合数:ab1✖...✖bn-》把乘数里面是合数的再分(如b3是合数-》b3c1✖c2)进…

C/C++ | 每日一练 (2)

💢欢迎来到张胤尘的技术站 💥技术如江河,汇聚众志成。代码似星辰,照亮行征程。开源精神长,传承永不忘。携手共前行,未来更辉煌💥 文章目录 C/C | 每日一练 (2)题目参考答案封装继承多态虚函数底…

金融时间序列【量化理论】

业界常用的技术分析指标都与价格本身有关,而时间序列分析由于对数据平稳性的要求常常是基于收益率这样更加偏稳定的数据(收益率由于会涨停和跌停每天最多10%) 平稳性: 强平稳性:随时间变化,各个统计特征都…

快速入门——第三方组件element-ui

学习自哔哩哔哩上的“刘老师教编程”,具体学习的网站为:10.第三方组件element-ui_哔哩哔哩_bilibili,以下是看课后做的笔记,仅供参考。 第一节 组件间的传值 组件可以有内部Data提供数据,也可由父组件通过prop方式传…

Qt5 C++ TcpSocket 如何判断是服务主动断开tcp socket连接?

文章目录 实现思路示例代码代码解释主要功能和用法注意事项 在 Qt 5.9.9 的 C 开发中,使用 QTcpSocket 时,要判断是服务端主动断开 TCP Socket 连接,可以通过处理 QTcpSocket 的 disconnected 信号,结合 QTcpSocket 的状态以及…

DeepSeek动画视频全攻略:从架构到本地部署

DeepSeek 本身并不直接生成动画视频,而是通过与一系列先进的 AI 工具和传统软件协作,完成动画视频的制作任务。这一独特的架构模式,使得 DeepSeek 在动画视频创作领域发挥着不可或缺的辅助作用。其核心流程主要包括脚本生成、画面设计、视频合成与后期处理这几个关键环节。 …

电力通信物联网应用,国密网关守护电力数据安全

电力国密网关是用于保护电力调度数据网路由器和电力系统的局域网之间通信安全的电力专用网关机,主要为上下级控制系统之间的广域网通信提供认证与加密服务,实现数据传输的机密性、完整性。 国密算法网关功能特点 身份认证:对接入的设备和用户…

Datawhale Ollama教程笔记5

Dify 接入 Ollama 部署的本地模型 Dify 支持接入 Ollama 部署的大型语言模型推理和 embedding 能力。 快速接入 下载 Ollama 访问 Ollama 安装与配置,查看 Ollama 本地部署教程。 运行 Ollama 并与 Llama 聊天 ollama run llama3.1Copy to clipboardErrorCopied …

保姆级! 本地部署DeepSeek-R1大模型 安装Ollama Api 后,Postman本地调用 deepseek

要在Postman中访问Ollama API并调用DeepSeek模型,你需要遵循以下步骤。首先,确保你有一个有效的Ollama服务器实例运行中,并且DeepSeek模型已经被加载。 可以参考我的这篇博客 保姆级!使用Ollama本地部署DeepSeek-R1大模型 并java…

ASP.NET Core 下载文件

本文使用 ASP .NET Core,适用于 .NET Core 3.1、.NET 5、.NET 6和.NET 8。 另请参阅: 如何在将文件发送到浏览器后自动删除该文件。 如何将文件从浏览器上传到服务器。 如何在 ASP.NET Core 应用程序中从 URL/URI 下载文件。 如果使用.NET Framework&am…

【信息系统项目管理师-案例真题】2022下半年案例分析答案和详解

更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 试题一(24分)【问题1】(6分)【问题2】(10分)【问题3】(8分)试题二(26分)【问题1】(8分)【问题2】(8分)【问题3】(4分)【问题4】(6分)试题三(25分)【问题1】(12分)【问题2】(7分)【问题…

原来DeepSeek还能运用在系统集成-领星对接

在当今数字化转型的浪潮中,企业的信息化建设已成为提升运营效率、优化管理流程的关键。领星ERP与金蝶云星空作为两款在电商和财务管理领域广受欢迎的软件,其数据对接对于跨境电商企业来说尤为重要。本文将结合实际应用场景,深度解析如何通过轻…

在windows下安装windows+Ubuntu16.04双系统(上)

这篇文章的内容主要来源于这篇文章,给文章很详细的介绍了如何从windows下安装windowsubuntu16.04双系统。我刚开始装双系统都是参照这个方法,该作者前后更新了两个版本,在这里对其稍微进行整理一下。 一、准备:(这里推…

第37章 合作之路与占坑成功

在春寒料峭的时节,那丝丝寒意宛如一缕缕若有若无的轻烟,在空气中悄然弥漫。锐创所的会议室,宛如一个被岁月尘封的神秘空间,暖黄色的灯光晕染开来,像是为整个房间披上了一层朦胧的薄纱,陈旧却又带着几分温馨…

杰和科技GAM-AI视觉识别管理系统,让AI走进零售营销

在数字化浪潮席卷全球零售业的今天,如何精准触达顾客需求、优化运营效率、提升门店业绩,成为实体商业破局的关键。 GAM-AI视觉识别管理系统 杰和科技智能零售管理系统:GAM-AI视觉识别管理系统,以AI视觉识别大数据分析边缘计算为核…

golang内存泄漏

golang也用了好几年了,趁着有空 整理归纳下,以后忘了好看下 一般认为 Go 10次内存泄漏,8次goroutine泄漏,1次是真正内存泄漏,还有1次是cgo导致的内存泄漏 1:环境 go1.20 win10 2:goroutine泄漏 单个Goroutine占用内存&…

Redis存储⑩Redis的事务_弱化的原子性

目录 1. MySQL和Redis事务的区别 1.1 MySQL的事务 1.2 Redis的事务 2. Redis事务操作 2.1 MULTI multi 2.2 EXEC exec 2.3 DISCARD discard 2.4 WATCH 1. MySQL和Redis事务的区别 1.1 MySQL的事务 MySQL事务复习: MySQL数据库⑨_事务(四个属性…

基于Flask的京东商品信息可视化分析系统的设计与实现

【Flask】基于Flask的京东商品信息可视化分析系统的设计与实现(完整系统源码开发笔记详细部署教程)✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 系统能够灵活地执行SQL查询,提取出用于分析的关键数据指标。为了将这…

QML ToolButton与DelayButton的使用、详解与自定义样式

QML MenuBarItem与MenuItem的使用、详解与自定义样式 一、介绍1、ToolButton常见用法基础示例设置图标 常用属性texticonenabledshortcutcheckable & checked 信号onClickedonPressed 和 onReleased 样式和外观使用场景 2、DelayButton使用场景核心属性1. delay 核心信号1.…