使用Ubuntu搭建Java部署环境

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=falseusername: rootpassword: rootdriver-class-name: com.mysql.cj.jdbc.Driver
# ?? mybatis xml ??????? resources/mapper ?????? xml ??
mybatis:mapper-locations: classpath:mapper/**Mapper.xmlconfiguration: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.rhkb.cn/news/22465.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从零搭建微服务项目Pro(第1-1章——Quartz实现定时任务模块)

前言: 在企业项目中,往往有定时任务发布的需求,比如每天晚9点将今日数据备份一次,或每月一号将上月的销售数据邮件发送给对应的工作人员。显然这些操作不可能是人工到时间点调用一次接口,需要编写专门的模块完成任务的…

深蓝学院自主泊车第3次作业-IPM

目录 1 题目介绍2 求解 1 题目介绍 已知鱼眼相机的参数, image_width,表示图像的宽度image_height,表示图像的高度 ξ \xi ξ,表示鱼眼相机参数 k 1 k_1 k1​、 k 2 k_2 k2​,表示径向相机参数 p 1 p_1 p1​、 p 2 p…

中兴G7615AV5

参考文献: G7615AV5 光猫新版固件通过修改备份配置文件固化Telnet 中兴7615AV5光猫配置指南 前言:(不如咸鱼30远程全权搞定,花小钱办大事)截至2025年2月22号,这个设备开启Telnet只能去咸鱼找别人远程开&…

记录:Docker 安装记录

今天在安装 ollama 时发现无法指定安装目录,而且它的命令行反馈内容很像 docker ,而且它下载的模型也是放在 C 盘,那么如果我 C 盘空间不足,就装不了 deepseek-r1:70b ,于是想起来之前安装 Docker 的时候也遇到过类似问…

大数据学习之任务流调度系统Azkaban、Superset可视化系统

一.任务流调度系统Azkaban 1.课程介绍 2.为什么需要工作流调度系统 3.AZKABAN是什么 4.AZKABAN下载 5.制作安装包 6.tar包准备 7.MYSQL配置AZKABAN 8.配置EXECUTOR SERVER 9.配置WEBSERVER 10.单作业实战_yaml语言(今天稍晚更新) 11.单作业实战 12.多作业依赖实战 13.失败自动重…

PiscTrace的开发者版

基于 PiscTrace 架构的视图处理的纯开发板,支持静态图片、实时视频流、摄像头视频流和网络视频流的处理。与 PiscTrace 应用版相比,开发者版通过直接的代码开发,提供了更高的灵活性和可定制性,适用于需要深度定制和复杂处理的应用…

excel中VBA宏的使用方法?

先编写宏代码:(随便新建打开一个记事本文档 或者 word文档) 然后:

selenium爬取苏宁易购平台某产品的评论

目录 selenium的介绍 1、 selenium是什么? 2、selenium的工作原理 3、如何使用selenium? webdriver浏览器驱动设置 关键步骤 代码 运行结果 注意事项 selenium的介绍 1、 selenium是什么? 用于Web应用程序测试的工具。可以驱动浏览…

USC安防平台之元数据检索

平台基于深度学习技术,支持CPU和NVIDIA GPU推理,支持周界和违法行为实时分析,并存储元数据到流式视频数据库中,可以根据不同的条件搜索,从而提供更强大的安全防范策略和事后调查手段。 平台根据用户自定义规则来检测异…

基于VirtualBox虚拟机部署完全分布式Hadoop环境

搭建 一、Ubuntu系统搭建 系统搭建 二、host配置 首先创建一个新用户hadoop并且分配权限,切换到hadoop用户下 成功切换 然后可以先克隆一下另一个虚拟机,为了之后的相互通信 直接点击虚拟机右键克隆即可 但是这里有一个问题,就是在…

正则表达式–断言

原文地址:正则表达式–断言 – 无敌牛 欢迎参观我的个人博客:正则表达式特殊字符 – 无敌牛 断言assertions 1、(?...):正向预查(positive lookahead),表示某个字符串后面应该跟着什么。但这个字符串本身…

【DeepSeek-R1背后的技术】系列九:MLA(Multi-Head Latent Attention,多头潜在注意力)

【DeepSeek背后的技术】系列博文: 第1篇:混合专家模型(MoE) 第2篇:大模型知识蒸馏(Knowledge Distillation) 第3篇:强化学习(Reinforcement Learning, RL) 第…

UE_C++ —— Gameplay Classes

目录 一,Adding Classes 二,Class Headers Class Declaration Class Specifiers Metadata Specifiers 三,Class Implementation Class Constructor 引擎中每个游戏类都由一个类头文件(.h)和一个类源文件&#x…

使用AI创建流程图和图表的 3 种简单方法

你可能已经尝试过使用 LLMs 生成图像,但你有没有想过用它们来创建 流程图和图表?这些可视化工具对于展示流程、工作流和系统架构至关重要。 通常,在在线工具上手动绘制图表可能会耗费大量时间。但你知道吗?你可以使用 LLMs 通过简…

二叉树(中等题)

1、先序,中序遍历确定二叉树 105 方法一、 前提 ① 必须不能有重复元素② 只有先序+中序和后序+中序才能实现唯一树 思考要点: 不要想着用for循环,递归一定更好解决输入是vector,递归就得考虑传入索…

蓝思科技赋能灵伴科技:AI眼镜产能与供应链双升级

2月22日,蓝思科技宣布与AI交互领军企业杭州灵伴科技(Rokid)达成深度战略合作,通过整机组装与全产业链整合,为2025年全球AI眼镜出货量爆发式增长(预计达400万-1200万台)提供核心支撑。 双方合作通…

【C/C++】分隔链表 (leetcode T86)

核心考点预览:链表 (双指针) 技巧:虚拟头结点 题目描述: 给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。 你应…

Lineageos 22.1(Android 15)Launcer简单调整初始化配置

一、前言 Launcer的初始化配置主要在如下的xml文件夹下,默认读取的5x5 这里我们把device_profiles调整一下,然后新建一个default_workspace_my.xml作为我们自己的配置就行。 二、配置 注意Lineageos 的Launcer是在lineageos/packages/apps/Trebuchet…

量子计算的基本运算:Hadamard 门、CNOT 门、Pauli 门详解

量子计算是现代计算科学的前沿领域,它与经典计算机在处理信息的方式上有着本质的区别。量子计算机利用量子比特(qubit)的叠加态和量子纠缠等特性来进行计算,从而在某些特定任务上超越传统计算机。量子计算的核心运算单元是量子门,它们通过作用于量子比特来操控量子状态。本…

Java 大视界 -- 国际竞争与合作:Java 大数据在全球市场的机遇与挑战(94)

💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…