【Linux】Linux基本使用和程序部署

【Linux】Linux基本使用和程序部署

🎬 那我掉的头发算什么个人主页
🔥 个人专栏: 《javaSE》《数据结构》《数据库》《javaEE》

⛺️待到苦尽甘来日


在这里插入图片描述

文章目录

Linux环境搭建

环境搭建方式

主要有四种:

  1. 直接安装在物理机上。但是 Linux 桌面使用起来非常不友好。所以不建议。【不推荐】。
  2. 使用虚拟机软件,将 Linux 搭建在虚拟机上。但是由于当前的虚拟机软件(如 VMWare 之类的)存在一些 bug,会导致环境上出现各种莫名其妙的问题,比较折腾。【非常不推荐】
  3. 使用 WSL(Windows Subsystem for Linux)。这个是 Windows 近几年开发的新功能,在 Windows 系统内集成了一个 Linux。但是目前这个技术还不够成熟。【暂时不推荐】。
  4. 使用云服务器,可以直接在 腾讯云,阿里云或华为云 等服务器厂商处直接购买一个云服务器。【推荐】

购买的时候作为在校学生,我们是可以白嫖服务器的使用权的,大家自行在网上搜索就好了!

我的操作系统选择是 Ubuntu 22.04 LTS。后续的内容也是使用Ubuntu演示。

使用云服务器

不同厂商做的页面不同,我们以阿里云为例:

购买服务器之后点击控制台进入自己的服务器界面

在这里插入图片描述


第一次使用服务器先重置密码:

在这里插入图片描述


记住自己的公网IP:

在这里插入图片描述


在这个环节我们最重要的是得到三个信息:
1. 服务器的外网 IP
2. 服务器的管理员账户(固定为 root)
3. 管理员账户密码(在腾讯云网站上设置的)

这三个信息是我们登陆到 Linux 上的必要条件

使用终端软件连接到Linux

有很多软件可以完成远程和主机相互链接的功能,我们使用Xshell。
网址:https://www.xshell.com/zh/free-for-home-school/

我们下载免费版即可。

下载安装过程不涉及复杂配置,基本上一路next,所以大家自行下载即可。

首先新建虚拟机:

在这里插入图片描述


名称自拟,主机是公网IP

在这里插入图片描述


在登陆提示符这里输入账号密码:

在这里插入图片描述


最终出现这样的界面就算配置成功了:

在这里插入图片描述

Linux常用命令

ls

语法: ls [选项] [目录或文件]
功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。
常用选项:
• -a 列出目录下的所有文件,包括以 . 开头的隐含文件。
• -d 将目录象文件一样显示,而不是显示其下的文件。 如:ls ‒d 指定目录
• -k 以 k 字节的形式表示文件的大小。ls ‒alk 指定文件
• -l 列出文件的详细信息。
• -r 对目录反向排序。
• -t 以时间排序。
• -R 列出所有子目录下的文件。(递归)

在这里插入图片描述


在这里插入图片描述

pwd

显示用户当前所在的目录:
跟目录是root:

在这里插入图片描述

cd

Linux系统中,磁盘上的文件和目录被组成一棵目录树,每个节点都是目录或文件。
语法: cd 目录名
功能: 改变工作目录。将当前工作目录改变到指定的目录下.

# 返回上级⽬录 cd .. # 进⼊⽤⼾家⽬录 cd ~ # 返回最近访问⽬录 cd -
在这里插入图片描述


使用 tab 键补全
我们敲的所有的 Linux 命令,都可以使用 tab 键来尝试补全,加快效率。
使用 ctrl + c 重新输入
如果命令或者目录敲错了,可以 ctrl + c 取消当前的命令

touch

语法: touch [选项]… 文件…
功能: touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件

cat

语法:cat [选项] [文件]
功能: 查看目标文件的内容

mkdir

语法:mkdir [选项] dirname…
功能:在当前目录下创建一个名为 “dirname”的目录
常用选项:
• -p, --parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多级目录。

在这里插入图片描述

rm

语法:rm [-f-i-r-v] [dirName/dir]
功能:删除文件或目录
常用选项:
• -f 即使文件属性为只读(即写保护),亦直接删除
• -i 删除前逐一询问确认
• -r 删除目录及其下所有文件

重要注意事项:
千万不要直接运行 rm -rf / , 尤其是在公司的生产服务器上

在这里插入图片描述

cp

语法:cp [选项] 源文件或目录 目标文件或目录
功能: 复制文件或目录
说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息
常用选项:
• -f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在
• -i 或 --interactive 覆盖文件之前先询问用户
• -r递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号
链接,则一律视为普通文件处理
• -R 或 --recursive递归处理,将指定目录下的文件及子目录一并处理

在这里插入图片描述


复制文件并不是转移文件。源文件不会消失。

mv

语法: mv [选项] 源文件或目录 目标文件或目录
功能:

  1. 视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的目录中。
  2. 当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。
  3. 当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目录中。

常用选项
• -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
• -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖

tail

语法: tail [必要参数] [选择参数] [文件]
功能:用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。
选项:
• -f 循环读取
• -n<行数> 显示行数

vim

vim 是一个知名的文本编辑器。使用 vim 可以进行文本编辑了。vim 就相当于 Windows 的记事本。只不过功能比记事本强大一些。

在这里插入图片描述


1)创建文件/打开文件
vim + 文件名
2) 进入插入模式
vim 打开文件后默认是普通模式。普通模式下键盘的按键表示一些特殊功能的快捷键。(例如按下 j 并不
是输入字母 “j”,而是表示光标往下移动一行)。需要进入插入模式才能进行文本编辑。
使用 i 键可以进入到插入模式。(左下角提示 --INSERT-- ) 然后就可以像记事本一样正常编辑了。
3) 保存
在插入模式下不能保存文件,需要先回到 普通模式 。按下 Esc 回到普通模式。
在普通模式下输入 :w ,再按下回车,即可保存文件。
4) 退出
在插入模式下不能退出,需要先回到 普通模式。
退出时,分以下情况:
① 文件未修改: 输入 :q ,再按下回车,即可退出
② 文件修改并保存: 使用 :wq 同时执行保存和退出。
③ 文件修改,但不希望保存: 使用 :wq! 进行强制退出

grep

语法:grep [参数]… [文件]…
功能:用于查找文件中是否包含指定字符串, 并显示对应的行.
选项:
• -n<行数> 显示的行数
• -w 全字匹配. 要求整个单词都完全相同的结果才能匹配出来, 而不仅仅是一个单词的一部分.
• -r 递归查找. 可以搜索多级目录下的所有文件.
• --color 高亮查找到的结果
• --include 指定查找某些文件
• --exclude 指定排除某些文件

在这里插入图片描述

ps

语法:ps [参数]…
功能:用于查看当前系统上运行的进程
选项:
• a 显示一个终端的所有进程
• u 以用户为主的格式来显示程序状况
• x 显示所有程序, 不止是会话中的进程
• e 显示所有进程, 包括系统守护进程
• f 显示完整格式输出

在这里插入图片描述

netstat

语法:netstat [参数]…
功能:查看系统上的网络状态。
选项:
• -a 显示所有正在或不在侦听的套接字
• -n 显示数字形式地址而不是去解析主机、端口或用户名
• -p 显示套接字所属进程的PID和名称

搭建java部署环境

apt

apt(Advanced Packaging Tool),Linux软件包管理工具。用于在Ubuntu、Debian和相关Linux发行版上安装、更新、删除和管理deb软件包。
大多数apt命令必须以具有sudo权限的用户身份运行

常用命令:

在这里插入图片描述


在这里插入图片描述


remove命令将卸载给定的软件包,但可能会留下一些配置文件。如果要删除包含所有配置文件的软件
包,请使用purge而不是remove
apt remove 和 apt purge 的区别
• apt remove 删除包的二进制文件, 它留下了残留的配置文件.
• apt purge 删除与包相关的所有内容, 包括配置文件.
如果弄乱了程序的配置, 希望从系统中完全清除它的痕迹再重新开始, 可以使用 apt purge
通常使用 apt remove 就足够了。

JDK

1.更新软件包

在这里插入图片描述


2.安装openjdk

#查找jdk包 apt list |grep "jdk" #安装jdk sudo apt install openjdk-17-jdk 

看准了,别下载错了:

在这里插入图片描述


验证:

在这里插入图片描述


卸载:

在这里插入图片描述

MYSQL

安装MYSQL

#查找安装包 apt list |grep "mysql-server" #安装mysql sudo apt install mysql-server 
在这里插入图片描述


在这里插入图片描述


MySQL安全设置
默认的 MySQL 设置是不安全的, MySQL 安装提供了⼀个安全脚本, ⽤于解决不太安全的默认选项.

sudo mysql_secure_installation 

密码强度选择2,其他全是Y。

然后就可以直接连接数据库了:

在这里插入图片描述


我们应该需要给Mysql设置一个自定义的密码,保证安全:

ALTERUSER'root'@'localhost' IDENTIFIEDWITH mysql_native_password BY***;

下面再想连接数据库就要用输入账号密码的方式了:

在这里插入图片描述

部署web项目到Linux

什么是部署

工作中涉及到的 “环境”
• 开发环境: 开发人员写代码用的机器。
• 测试环境: 测试人员测试程序使用的机器。
• 生产环境(线上环境): 最终项目发布时所使用的机器。对稳定性要求很高。
把程序安装到生产环境上,这个过程称为 “部署”。也叫 “上线”。
一旦程序部署成功,那么这个程序就能被外网中千千万万的普通用户访问到。
换句话说,如果程序有 BUG,这个 BUG 也就被千千万万的用户看到了。
部署过程至关重要,属于程序开发中最重要的一环。一旦部署出现问题,极有可能导致严重的事故(服务器不可用之类的)。
为了防止部署出错,一般公司内部都有一些自动化部署工具(如 Jenkins 等)。当前我们先使用手工部署的方式来完成部署

环境配置

程序正常运行,需要保证环境和程序都要正确,我们需要先设置环境
数据准备
按照之前的数据库建表脚本,在服务器上运行,建立相同的表结构。
程序配置文件修改
实际工作中,开发环境,测试环境以及生产环境的配置都是不一样的
比如mysql的用户名和密码
我们可以针对不同的环境,设置不同的配置

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

在这里插入图片描述
spring: profiles: active:@profile.name@ 
spring: datasource: url: jdbc:mysql://127.0.0.1:3306/java_blog_spring?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai username: root password:[email protected] driver-class-name:com.mysql.cj.jdbc.Driver mybatis-plus: configuration: map-underscore-to-camel-case:true # log-impl:org.apache.ibatis.logging.stdout.StdOutImpl logging: file: name: spring-blog.log 
spring: datasource: url: jdbc:mysql://127.0.0.1:3306/java_blog_spring?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai username: root password: hjk050723 driver-class-name:com.mysql.cj.jdbc.Driver mybatis-plus: configuration: map-underscore-to-camel-case:true log-impl:org.apache.ibatis.logging.stdout.StdOutImpl logging: file: name: spring-blog.log 
<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>
在这里插入图片描述


此时我们只需要在mvn选项中选择就可以决定使用哪个配置文件了。

构建项目并打包

在本地使用maven进行打包

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

上传jar包运行程序

直接拖动打包好的jar包到Xshell窗口即可:

在这里插入图片描述


咱们通过访问自己的服务器公网IP来检验自己的程序是否可以正常运行:

在这里插入图片描述

杀死进程

先找到所有正在运行的含java的进程,使用进程号杀死进程。

在这里插入图片描述

以上就是本篇博客全部内容!

Read more

基于SpringBoot的企业考勤管理系统设计与实现

基于SpringBoot的企业考勤管理系统设计与实现

基于SpringBoot的企业考勤管理系统设计与实现 🌟 你好,我是 励志成为糕手 ! 🌌 在代码的宇宙中,我是那个追逐优雅与性能的星际旅人。 ✨ 每一行代码都是我种下的星光,在逻辑的土壤里生长成璀璨的银河; 🛠️ 每一个算法都是我绘制的星图,指引着数据流动的最短路径; 🔍 每一次调试都是星际对话,用耐心和智慧解开宇宙的谜题。 🚀 准备好开始我们的星际编码之旅了吗? 目录 * 基于SpringBoot的企业考勤管理系统设计与实现 * 摘要 * 系统架构设计 * 整体架构概览 * 核心业务流程 * 数据库设计 * 实体关系模型 * 数据表结构设计 * 核心代码实现 * 实体类设计 * 业务逻辑层实现 * 控制器层实现 * 系统功能特性 * 出勤状态管理 * 月度统计功能 * 技术选型对比 * 系统部署与配置 * 环境配置 * 项目依赖管理 * 系统性能优化 * 数据库优化策略 * 缓存策

By Ne0inhk
Flutter for OpenHarmony:Flutter 三方库 riverbloc — 融合 Bloc 与 Riverpod 的架构实践(适配鸿蒙 HarmonyOS Next ohos)

Flutter for OpenHarmony:Flutter 三方库 riverbloc — 融合 Bloc 与 Riverpod 的架构实践(适配鸿蒙 HarmonyOS Next ohos)

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net。 前言 在鸿蒙(OpenHarmony)中大型项目中,开发者常在 Bloc 的严谨性与 Riverpod 的灵活性之间权衡。riverbloc 作为桥接库,允许将 Bloc 作为 Provider 管理,兼具了事件溯源与全局依赖注入的优势,是构建可维护业务中枢的理想选择。 一、核心价值 1.1 基础概念 riverbloc 引入了 BlocProvider 系列函数,使 Bloc 融入 Riverpod 的依赖树。 State 输出 ref.watch ref.read.add(Event) Riverpod ProviderContainer riverbloc 桥接层 触发业务逻辑

By Ne0inhk
用 Rust 打造二维码艺术大师:从想法到实现

用 Rust 打造二维码艺术大师:从想法到实现

二维码已经渗透到我们生活的方方面面,从支付到网站链接,几乎无处不在。但你有没有想过,二维码是怎么生成的?这些黑白方块也可以变得有趣和美观?今天我就来分享一下我用 Rust 实现的一个小项目:二维码艺术生成器(qr-artist)。 项目起源 这个想法源于一个简单的需求:如何让二维码既实用又美观?普通的黑白二维码虽然功能强大,但看起来有些单调。我想,能不能让二维码变得更有艺术感,比如用彩色像素来呈现? 技术选型 我选择了 Rust 作为开发语言,因为它在系统编程方面的优秀表现和内存安全特性。项目中主要使用了以下几个库: 1. qrcode - 用于生成二维码数据 2. image - 用于图像处理和保存 3. clap - 用于构建命令行界面 这些库都很成熟且文档完善,让我能够专注于核心功能的实现。 核心实现 1. 基础二维码生成 项目的核心是将 URL 转换为二维码数据,然后将其渲染为图像: // 创建二维码let code =QrCode::new(

By Ne0inhk

Go语言的主流框架和解决超高并发的三高微服务框架对比分析

在Go语言生态中,主流的Web框架和应对“三高”(高并发、高可用、高可扩展)场景的微服务框架,经过多年的发展已经非常清晰。简单来说,Gin 是目前应用最广泛的通用Web框架,而像 go-zero、Kratos、KiteX 等则是专为“三高”微服务架构设计的“全家桶”式解决方案。 下面为你详细拆解这两大类框架。 一、主流通用Web框架:轻量、灵活、高性能 这类框架主要解决API构建、路由和中间件管理等Web层问题,是构建单体应用或微服务API层的良好基础。 Gin:目前的“默认选项”,性能高、社区庞大、中间件丰富,极易上手。如果你刚开始接触Go或项目需求明确,选择Gin会非常稳妥。 Fiber:受Express.js启发,语法对Node.js开发者很友好。它基于fasthttp构建,在性能基准测试中表现极为出色。适合追求极致性能、且不介意与标准库net/http不完全兼容的场景。 Echo:一个成熟且平衡的框架,

By Ne0inhk