Linux基础使用和程序部署
目录
1.Linux
1.2 Linux的环境搭配
1.2.1 使用云服务器
1.2.2使用终端软件连接到Linux
1.3. Linux 常用命令
1. ls:列出当前目录中的文件和子目
2.pwd:显示当前工作目录的路径
3.cd:改变工作目录,将当前的工作目录改变到指定目录下
4.touch:创建空文件或更新文件的时间戳
5.cat:查看目标文件的内容
6.mkdir:创建新目录
7.rm:删除文件/目录
8.cp:复制文件或者目录
9.mv:移动或重命名文件或目录
10.head/tail:显示文件的前几行或后几行
11.vim:文本编辑
12.grep:查找指定字符串,并显示对应的行
13.ps:查看当前系统上运行的进程
14.netstat:查看系统上的网络状态
2.部署Web项目到Linux
2.1环境配置
2.2 构建项⽬并打包
2.3上传Jar包到服务器,并运行
2.4开放端口号
2.5 验证程序
2.6常见的问题:
2.7 结束进程
总结:
1.Linux
Linux的优势:
- 开源(意味着免费)
- 稳定 (Linux可以运行很多年,都不会发生重大问题)
- 安全(Linux只有管理员或者特定用户才能访问Linux内核)
- 自由(不会被加强商业产品和服务)
- 社区支持(Linux在全球社区都非常活跃和使用广泛,有很多志愿者在线帮大家解决问题)
下面重点学习Linux的基础命令和项目部署
1.2 Linux的环境搭配
主要有四种:
- 直接安装在物理机上.但是Linux桌面使用起来非常不友好.所以不建议.[不推荐].
- 使用虚拟机软件,将Linux搭建在虚拟机上.但是由于当前的虚拟机软件(如VMWare之类的)存在一些bug,会导致环境上出现各种莫名其妙的问题,比较折腾.[非常不推荐]
- 使用 WSL (Windows Subsystem for Linux).这个是 Windows 近几年开发的新功能,在 Windows系统内集成了一个 Linux.但是目前这个技术还不够成熟.[不推荐].
- 使用云服务器,可以直接在腾讯云,阿里云或华为云等服务器厂商处直接购买一个云服务器.[推荐]
1.2.1 使用云服务器
云服务器的好处:
使用云服务器不仅环境搭建简单,避免折腾,同时还有一个最大的好处,部署在云服务器上的项目可以直接被外网访问到,这个时候就和一个公司发布一个正式的网站没有任何区别.也就能让我们自己写的程序真的去给别人去使用.
1.2.2使用终端软件连接到Linux
所谓终端软件就是一类工具软件,可以和远程的主机建立网络连接,从而对主机进行一些操作
下面就拿 XShell 终端软件举例吧
第一步:下载安装 XShell
下载地址:家庭/学校免费 - NetSarang Website
第二步:使用XShell 登录主机
在XShell终端下输入:
ssh 服务器外网ip地址
1.3. Linux 常用命令
1. ls:列出当前目录中的文件和子目
- -a列出目录下的所有文件,包括以.开头的隐含文件。
- -d将目录象文件一样显示,而不是显示其下的文件。如:ls-d指定目录
- -k以k字节的形式表示文件的大小。ls-alk指定文件
- L列出文件的详细信息。
- -r对目录反向排序。
- -t以时间排序。
- -R列出所有子目录下的文件。 (递归)
ls -l
2.pwd:显示当前工作目录的路径
pwd
3.cd:改变工作目录,将当前的工作目录改变到指定目录下
#返回上级目录
cd..#进入用户家目录
cd~#返回最近访问目录
cd-
认识Linux目录结构:
Linux是一个树型目录结构

几个特殊的目录:
- /称为根目录
- .称为当前目录
- ..称为当前目录的上级目录
绝对路径vs相对路径:
形如: /usr/share/tomcat/logs/以根目录开头的,称为绝对路径.
形如:·/logs以·或者开头的,称为相对路径,
使用tab键补全:
我们敲的所有的Linux命令,都可以使用tab键来尝试补全,加快效率.
使用ctrl+c重新输入:
如果命令或者目录敲错了,可以ctrl+c取消当前的命令
4.touch:创建空文件或更新文件的时间戳
touch text.txt
5.cat:查看目标文件的内容
cat text.txt
6.mkdir:创建新目录
常用选项:
- -p,--parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多级目录
mkdir -p text/text1
7.rm:删除文件/目录
常用选项:
- -f即使文件属性为只读(即写保护),亦直接删除
- -i删除前逐一询问确认
- -r删除目录及其下所有文件
rm text.txt
8.cp:复制文件或者目录
cp test1.txt test2.txt
9.mv:移动或重命名文件或目录
mv old_name new_name
10.head/tail:显示文件的前几行或后几行
head -10 file_name # 显示文件的前10行
tail -20 file_name # 显示文件的后20行
11.vim:文本编辑
1) 创建文件/打开文件
vim [文件名]
2) 进入插入模式
vim打开文件后默认是普通模式.普通模式下键盘的按键表示一些特殊功能的快捷键.(例如按下j并不是输入字母"j",而是表示光标往下移动一行).需要进入插入模式才能进行文本编辑
使用i键可以进入到插入模式.(左下角提示--INSERT--)然后就可以像记事本一样正常编辑了.
3)保存
在插入模式下不能保存文件,需要先回到普通模式.按下EsC回到普通模式.
在普通模式下输入:W,再按下回车,即可保存文件
4)退出
在插入模式下不能退出,需要先回到普通模式.
退出时,分以下情况:
①文件未修改:输入:q,再按下回车,即可退出
②文件修改并保存:使用:wq同时执行保存和退出.
③文件修改,但不希望保存:使用:wq!进行强制退出
12.grep:查找指定字符串,并显示对应的行
常用选项:
- -n<行数>显示的行数
- -W全字匹配.要求整个单词都完全相同的结果才能匹配出来,而不仅仅是一个单词的一部分.
- -r 递归查找.可以搜索多级目录下的所有文件.
- --color 高亮查找到的结果
- --include 指定查找某些文件
- --exclude 指定排除某些文件
rep "hello" Hello1.java 在Hello1中查找 hello字符串
13.ps:查看当前系统上运行的进程
常用选项:
- a 显⽰⼀个终端的所有进程
- u 以⽤⼾为主的格式来显⽰程序状况
- x 显⽰所有程序, 不⽌是会话中的进程
- e 显⽰所有进程, 包括系统守护进程
- f 显⽰完整格式输出
ps aux #显示系统上所有的进程
ps aux | grep "进程名"
ps aux | grep "进程id"
14.netstat:查看系统上的网络状态
常用选项:
- -a显示所有正在或不在侦听的套接字
- -n 显示数字形式地址而不是去解析主机、端口或用户名
- -p 显示套接字所属进程的PID和名称
netstat -anp
netstat -anp | grep "进程名"
netstat -anp | grep "端口号"
2.部署Web项目到Linux
2.1环境配置
程序正常运行,需要保证环境和程序都要正确,我们需要先设置环境
数据准备
按照之前的数据库建表脚本,在服务器上运行,建立相同的表结构.
程序配置文件修改
实际工作中,开发环境,测试环境以及生产环境的配置都是不一样的
比如mysql的用户名和密码
我们可以针对不同的环境,设置不同的配置
多平台文件配置
针对不同平台创建不同的配置文件,要求名字为application-XXX.yml或者application-XXX.properties
以下以application-xxX.yml为例

固定格式,只有后面的字母可以修改
在配置文件里写不同的内容
application-dev.yml:
#数据库连接配置
spring:datasource:url: jdbc:mysql://127.0.0.1:3306/java_blog_spring?characterEncoding=utf8&useSSL=falseusername: rootpassword: 123456driver-class-name: com.mysql.cj.jdbc.Drivermybatis:# 配置 mybatis xml 的⽂件路径,在 resources/mapper 创建所有表的 xml ⽂件mapper-locations: classpath:mybatis/**Mapper.xml# 配置打印 MyBatis日志configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImplmap-underscore-to-camel-case: true #配置驼峰⾃动转换
#数据库连接配置
spring:datasource:url: jdbc:mysql://127.0.0.1:3306/java_blog_spring?characterEncoding=utf8&useSSL=falseusername: rootpassword: 123456driver-class-name: com.mysql.cj.jdbc.Drivermybatis:# 配置 mybatis xml 的⽂件路径,在 resources/mapper 创建所有表的 xml ⽂件mapper-locations: classpath:mybatis/**Mapper.xml# 配置打印 MyBatis日志configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImplmap-underscore-to-camel-case: true #配置驼峰⾃动转换
#设置日志文件的文件名
logging:file:name: spring-blog.log application.yml:
spring:profiles:active: @profile.name@
<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>
2.2 构建项⽬并打包
在本地使用maven进行打包
- 如果Test代码中有与环境配置相关的操作(比如数据库相关的操作),打包会失败,点击下图①处的图标,可以跳过测试
- 点击clean->package


2.3上传Jar包到服务器,并运行
上传jar包:
直接将打包好的jar包拖入Xshell窗口即可完成文件的上传

运行程序:
nohup java -jar blog-spring-0.0.1-SNAPSHOT.jar &
nohup:后台运行程序.用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行.
语法格式:
nohup Command [ Arg … ] [ &]
参数说明:
Command:要执行的命令。
Arg:一些参数,可以指定输出文件
&:让命令在后台执行,终端退出后命令仍旧执行
比如:
ohup java -jar blog-0.0.1-SNAPSHOT.jar >/logs &
Linux 可以通过把需要输出的内容写到指定文件中.这样的操作称为"重定向”
2.4开放端口号
添加规则:
端口号写需要开放的端口号,多个端口号以逗号分割.
2.5 验证程序
- 访问项目: http://IP:Port/blog_login.html IP改为云服务的IP Port改为项目的端口号
- 按照项目的功能进行验证
2.6常见的问题:
一个程序的正常运行,需要程序的正确和环境的正确.同样的代码在Windows上可以运行成功,不一定在Linux上运行成功.不同的系统对代码的理解和支持是不同的.比如Windows系统对MySQL不区分大小写,Linux区分大小写
服务不能正常访问的原因有很多,主要分以下几方面:
1.服务未启动
- a.使用 ps -eflgrep java 查看程序是否在运行
- b. 使用 curl http://127.0.0.1:8080/blog_login.html 看看下是否有返回html页面, 如果有返回,说明程序启动成功了,考虑端口未开放
- c.如果未启动成功,需要查看对应的日志,根据原因来分析:
- 数据库不存在
- 表不存在(区分大小写)
- 数据库密码不正确
- Jdk安装版本不对,或者未安装
- mysql未设置密码
2.http端口未开放
检查云服务器防火墙/安全组是否开放相应端口(如8080)

2.7 结束进程
如果我们需要重启服务,或者重新部署等,都需要先停止之前的服务.
1. 查看当前服务的进程:
s -eflgrep java

2. 杀掉进程
kill -9 PID
总结:
- 连接Linux服务器的方式有很多,xshell只是其中一种.xshel是一个客户端,而非服务器
- Ubuntu软件管理工具是apt,其他的linux发行版本软件包管理工具不同,比如CentOS是使用yum来管理软件的
- SpringBoot可以使用多个配置文件来完成不同平台的配置.
- 在Window上可以运行成功的代码,在Linux上不一定能运行成功.
- 启动程序需要使用nohup后台运行,需要停止服务时,使用kill命令
相关文章:
Linux基础使用和程序部署
目录 1.Linux 1.2 Linux的环境搭配 1.2.1 使用云服务器 1.2.2使用终端软件连接到Linux 1.3. Linux 常用命令 1. ls:列出当前目录中的文件和子目 2.pwd:显示当前工作目录的路径 3.cd:改变工作目录,将当前的工作目录改变到指定目…...
Linux驱动开发之串口驱动移植
原理图 从上图可以看到RS232的串口接的是UART3,接下来我们需要使能UART3的收发功能。一般串口的驱动程序在内核中都有包含,我们配置使能适配即可。 设备树 复用功能配置 查看6ull如何进行uart3的串口复用配置: 设备树下添加uart3的串口复用…...
计算机毕业设计SpringBoot+Vue.js美食推荐系统商城(源码+文档+PPT+讲解)
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
指针小节.
....指针的第四个作用:函数的结果和计算状态分开 高级指针。。 指针中的数据类型:获取字节数据的个数。步长:指针移动一次的字节个数(int,long。。。各自字节都不同) 加减都可以...
[Qt5] QJson数据之间的转换以及QByteArray图像数据压缩
📢博客主页:https://loewen.blog.csdn.net📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢本文由 丶布布原创,首发于 CSDN,转载注明出处🙉📢现…...
2025年能源工作指导意见
2025年是“十四五”规划收官之年,做好全年能源工作意义重大。为深入贯彻落实党中央、国务院决策部署,以能源高质量发展和高水平安全助力我国经济持续回升向好,满足人民群众日益增长的美好生活用能需求,制定本意见。 一、总体要求…...
Android 获取jks的SHA1值:java.io.IOException: Invalid keystore format
命令生成 keytool -list -v -keystore 全路径.jks -alias 别名 -storepass 密码 -keypass 密码 1、遇到 的问题: 通过快捷键 ‘win r’ 启动的小黑框运行上面的命令会出现下面这个错误keytool 错误: java.io.IOException: Invalid keystore format 2、解决问题 …...
深入探索像ChatGPT这样的大语言模型-02-POST training supervised finetuning
参考 【必看珍藏】2月6日,安德烈卡帕西最新AI普及课:深入探索像ChatGPT这样的大语言模型|Andrej Karpathy fineweb知乎翻译介绍 fineweb-v1原始连接 fineweb中文翻译版本 Chinese Fineweb Edu数据集 查看网络的内部结果,可以参…...
广义线性模型下的数据分析(R语言)
一、实验目的: 通过上机试验,掌握利用R实现线性回归分析、逻辑回归、列联分析及方差分析,并能对分析结果进行解读。 数据: 链接: https://pan.baidu.com/s/1JqZ_KbZJEk-pqSUWKwOFEw 提取码: hxts 二、实验内容: 1、2…...
AutoMQ:无需 Cruise Control 实现 Kafka 的自动分区再平衡
导读:AutoMQ是一款贯彻云优先理念来设计的 Kafka 替代产品。AutoMQ 创新地对 Apache Kafka 的存储层进行了基于云的重新设计,在 100% 兼容 Kafka 的基础上通过将持久性分离至 EBS 和 S3 带来了 10x 的成本降低以及 100x 的弹性能力提升,并且相…...
在剪映中给英文学习视频添加中文字幕
文章目录 一、剪映是什么?二、使用步骤1.下载2.操作 一、剪映是什么? 剪映是由字节跳动公司开发的一款功能强大且易于使用的视频编辑软件,在移动端和电脑端均有应用。 二、使用步骤 1.下载 2.操作...
Opencv之sift特征检测和FLANN 匹配器进行指纹特征匹配
sift特征检测和FLANN 匹配器进行指纹匹配 目录 sift特征检测和FLANN 匹配器进行指纹匹配1 sift特征检测1.1 概念1.2 优缺点 2 FLANN 匹配器2.1 概念2.2 工作原理与匹配方式2.3 FLANN 匹配器的使用步骤2.4 优缺点 3 函数3.1 特征检测匹配3.2 匹配符合条件点并绘制 3 代码测试3.1…...
rust学习~tokio的io
await Suspend execution until the result of a Future is ready. 暂停执行,直到一个 Future 的结果就绪。 .awaiting a future will suspend the current function’s execution until the executor has run the future to completion. 对一个 Future 使用 .awa…...
FPGA开发,使用Deepseek V3还是R1(2):V3和R1的区别
以下都是Deepseek生成的答案 FPGA开发,使用Deepseek V3还是R1(1):应用场景 FPGA开发,使用Deepseek V3还是R1(2):V3和R1的区别 FPGA开发,使用Deepseek V3还是R1&#x…...
本地部署大数据集群前置准备
1. 设置VMware网段 虚拟网络编辑器——更改设置——选择VMnet8——子网改成192.168.88.0——NAT设置——网关设置为192.168.88.2 2. 下载CentOS操作系统 下载CentOS 7.6(1810)版本 3. 在VMware中安装CentOS操作系统 创建新的虚拟机——典型——安装光盘映像文件——输入账…...
Spring Boot整合RabbitMQ
1. 环境准备 Spring Boot 2.1.3.RELEASERabbitMQ 3.xJDK 8 或以上Maven 3.5 2. 安装Erlang、RabbitMQ 2.1 安装前准备 RabbitMQ 依赖 Erlang 环境,需确保两者的版本匹配,官方兼容性参考:RabbitMQ & Erlang 版本对照表。 2.2 下载安…...
CDefView::_OnFSNotify函数分析
进入CDefView::_OnFSNotify函数时状态栏 _UpdateStatusBar函数之后增加一个对象,变成7个对象。 LRESULT CDefView::_OnFSNotify(LONG lNotification, LPCITEMIDLIST* ppidl) { LPITEMIDLIST pidl; LPCITEMIDLIST pidlItem; // we may be registered for no…...
精准汇报:以明确答复助力高效工作
在工作场景中,汇报工作是一项至关重要的沟通环节,它不仅关乎工作进展的有效传达,更影响着团队协作的顺畅度和整体工作效率。而汇报工作的关键,就在于给予明确肯定的答复,摒弃“应该”“可能”这类模糊词汇,…...
Java自动拆箱装箱/实例化顺序/缓存使用/原理/实例
在 Java 编程体系中,基本数据类型与包装类紧密关联,它们各自有着独特的特性和应用场景。理解两者之间的关系,特别是涉及到拆箱与装箱、实例化顺序、区域问题、缓存问题以及效率问题。 一、为什么基本类型需要包装类 泛型与集合的需求 Java…...
软件工程---基于构件的软件工程
基于构件的软件工程(CBSE)是一种软件开发方法,通过重用现有的软件构件来构建系统,从而提高开发效率和软件质量。这种方法强调软件系统的模块化设计和构建复用,使得软件开发过程更加高效和灵活。 企业软件开发…...
云计算——弹性云计算器(ECS)
弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...
ios苹果系统,js 滑动屏幕、锚定无效
现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...
如何在网页里填写 PDF 表格?
有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据ÿ…...
Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)
在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马(服务器方面的)的原理,连接,以及各种木马及连接工具的分享 文件木马:https://w…...
【7色560页】职场可视化逻辑图高级数据分析PPT模版
7种色调职场工作汇报PPT,橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版:职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...
