【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

Flutter 三方库 changelog_cli 的鸿蒙化适配指南 - 自动化生成 CHANGELOG、标准化版本管理与工程化协作利器

Flutter 三方库 changelog_cli 的鸿蒙化适配指南 - 自动化生成 CHANGELOG、标准化版本管理与工程化协作利器

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 changelog_cli 的鸿蒙化适配指南 - 自动化生成 CHANGELOG、标准化版本管理与工程化协作利器 前言 在 Flutter for OpenHarmony 的企业级开发流程中,维护一份详实、规范的更新日志(CHANGELOG)是版本控制的核心环节。changelog_cli 是一个专为 Flutter 开发者设计的命令行工具,它能够基于特定的规范自动生成或更新日志。本文将探讨如何将该工具集成到鸿蒙项目的开发流水线中,大幅提升工程化协作效率。 一、原理解析 / 概念介绍 1.1 基础原理 changelog_cli 通过读取项目的 pubspec.yaml 版本信息和特定的配置文件,配合开发者在命令行输入的更新内容,自动拼装成符合 Keep a Changelog 规范的

By Ne0inhk
手搓简易 Linux 进程池:从 0 到 1 实现基于管道的任务分发系统

手搓简易 Linux 进程池:从 0 到 1 实现基于管道的任务分发系统

🔥草莓熊Lotso:个人主页 ❄️个人专栏: 《C++知识分享》《Linux 入门到实践:零基础也能懂》 ✨生活是默默的坚持,毅力是永久的享受! 🎬 博主简介: 文章目录 * 前言: * 一. 核心设计思路 * 二. 代码模块拆解 * 2.1 任务定义与随机任务生成 * 2.2 子进程任务处理逻辑 * 2.3 通道(Channel)类:封装父子进程通信 * 2.4 进程池(ProcesspPool)类:核心管理逻辑 * 2.5 主函数:进程池使用示例 * 三. 关键知识点解析 * 3.1 管道通信原理 * 3.2 轮询负载均衡 * 3.3 进程回收的坑

By Ne0inhk
Flutter 三方库 swagger_parser 自动化打通鸿蒙 API 通信(一键将 Swagger 转化为 Dart 模型)

Flutter 三方库 swagger_parser 自动化打通鸿蒙 API 通信(一键将 Swagger 转化为 Dart 模型)

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net 前言 在进行 OpenHarmony 项目开发时,最枯燥的工作莫过于根据后端提供的 Swagger (OpenAPI) 文档手动编写一个个的 Request 类、Response 类和 API Client。这不仅低效,而且极易因文档更新没对齐而导致 Bug。 swagger_parser 是一个强大的命令行工具,它能直接读取本地或网络上的 Swagger JSON/YAML 文件,自动为你生成完整的 Dart 数据类和 Dio/Chopper API 控制器。 一、核心工作流 Swagger JSON / YAML Swagger Parser Dart 数据模型 (JSON Serialized) Dio / Chopper

By Ne0inhk

【汉化中文版】OpenClaw(Clawdbot/Moltbot)第三方开源汉化中文发行版部署全指南:一键脚本/Docker/npm 三模式安装+Ubuntu 环境配置+中文汉化界面适配开源版

OpenClaw这是什么? OpenClaw(曾用名 Clawdbot / Moltbot)是一个开源的个人 AI 助手平台(GitHub 120k+ Stars),可以通过 WhatsApp、Telegram、Discord 等聊天软件与 AI 交互。简单说就是:在你自己的机器上运行一个 AI 助手,通过常用聊天软件跟它对话。 forks项目仓库 :https://github.com/MaoTouHU/OpenClawChinese 文章目录 * OpenClaw这是什么? * 汉化效果预览 * 环境要求 * 安装方式 * 方式 A:一键脚本(推荐新手) * 方式 B:npm 手动安装 * 方式 C:Docker 部署(服务器推荐) * 首次配置 * 运行初始化向导 * 安装守护进程(

By Ne0inhk