当前位置: 首页 > news >正文

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的优势: 

  1. 开源(意味着免费)
  2. 稳定 (Linux可以运行很多年,都不会发生重大问题)
  3. 安全(Linux只有管理员或者特定用户才能访问Linux内核)
  4. 自由(不会被加强商业产品和服务)
  5. 社区支持(Linux在全球社区都非常活跃和使用广泛,有很多志愿者在线帮大家解决问题)

下面重点学习Linux的基础命令和项目部署 

 1.2 Linux的环境搭配

主要有四种:

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

 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 #配置驼峰⾃动转换

application-prod.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 #配置驼峰⾃动转换
#设置日志文件的文件名
logging:file:name: spring-blog.log

application.yml:

spring:profiles:active: @profile.name@
从Maven中读取环境配置变量:
 <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进行打包

  1. 如果Test代码中有与环境配置相关的操作(比如数据库相关的操作),打包会失败,点击下图①处的图标,可以跳过测试
  2. 点击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 验证程序

  1. 访问项目:  http://IP:Port/blog_login.html                                                                    IP改为云服务的IP  Port改为项目的端口号
  2. 按照项目的功能进行验证 

2.6常见的问题:

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

服务不能正常访问的原因有很多,主要分以下几方面:

1.服务未启动

  1. a.使用 ps -eflgrep java 查看程序是否在运行 
  2. b. 使用 curl http://127.0.0.1:8080/blog_login.html 看看下是否有返回html页面,                              如果有返回,说明程序启动成功了,考虑端口未开放
  3. c.如果未启动成功,需要查看对应的日志,根据原因来分析:
  •  数据库不存在
  • 表不存在(区分大小写)
  • 数据库密码不正确
  • Jdk安装版本不对,或者未安装
  • mysql未设置密码

 2.http端口未开放

检查云服务器防火墙/安全组是否开放相应端口(如8080)

2.7 结束进程

 如果我们需要重启服务,或者重新部署等,都需要先停止之前的服务.

1. 查看当前服务的进程:

s -eflgrep java

 2. 杀掉进程

kill -9 PID

总结:

  1. 连接Linux服务器的方式有很多,xshell只是其中一种.xshel是一个客户端,而非服务器
  2. Ubuntu软件管理工具是apt,其他的linux发行版本软件包管理工具不同,比如CentOS是使用yum来管理软件的
  3. SpringBoot可以使用多个配置文件来完成不同平台的配置.
  4. 在Window上可以运行成功的代码,在Linux上不一定能运行成功.
  5. 启动程序需要使用nohup后台运行,需要停止服务时,使用kill命令

相关文章:

Linux基础使用和程序部署

目录 1.Linux 1.2 Linux的环境搭配 1.2.1 使用云服务器 1.2.2使用终端软件连接到Linux 1.3. Linux 常用命令 1. ls&#xff1a;列出当前目录中的文件和子目 2.pwd&#xff1a;显示当前工作目录的路径 3.cd&#xff1a;改变工作目录&#xff0c;将当前的工作目录改变到指定目…...

Linux驱动开发之串口驱动移植

原理图 从上图可以看到RS232的串口接的是UART3&#xff0c;接下来我们需要使能UART3的收发功能。一般串口的驱动程序在内核中都有包含&#xff0c;我们配置使能适配即可。 设备树 复用功能配置 查看6ull如何进行uart3的串口复用配置&#xff1a; 设备树下添加uart3的串口复用…...

计算机毕业设计SpringBoot+Vue.js美食推荐系统商城(源码+文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…...

指针小节.

....指针的第四个作用&#xff1a;函数的结果和计算状态分开 高级指针。。 指针中的数据类型&#xff1a;获取字节数据的个数。步长&#xff1a;指针移动一次的字节个数&#xff08;int&#xff0c;long。。。各自字节都不同&#xff09; 加减都可以...

[Qt5] QJson数据之间的转换以及QByteArray图像数据压缩

&#x1f4e2;博客主页&#xff1a;https://loewen.blog.csdn.net&#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;本文由 丶布布原创&#xff0c;首发于 CSDN&#xff0c;转载注明出处&#x1f649;&#x1f4e2;现…...

2025年能源工作指导意见

2025年是“十四五”规划收官之年&#xff0c;做好全年能源工作意义重大。为深入贯彻落实党中央、国务院决策部署&#xff0c;以能源高质量发展和高水平安全助力我国经济持续回升向好&#xff0c;满足人民群众日益增长的美好生活用能需求&#xff0c;制定本意见。 一、总体要求…...

Android 获取jks的SHA1值:java.io.IOException: Invalid keystore format

命令生成 keytool -list -v -keystore 全路径.jks -alias 别名 -storepass 密码 -keypass 密码 1、遇到 的问题&#xff1a; 通过快捷键 ‘win r’ 启动的小黑框运行上面的命令会出现下面这个错误keytool 错误: java.io.IOException: Invalid keystore format 2、解决问题 …...

深入探索像ChatGPT这样的大语言模型-02-POST training supervised finetuning

参考 【必看珍藏】2月6日&#xff0c;安德烈卡帕西最新AI普及课&#xff1a;深入探索像ChatGPT这样的大语言模型&#xff5c;Andrej Karpathy fineweb知乎翻译介绍 fineweb-v1原始连接 fineweb中文翻译版本 Chinese Fineweb Edu数据集 查看网络的内部结果&#xff0c;可以参…...

广义线性模型下的数据分析(R语言)

一、实验目的&#xff1a; 通过上机试验&#xff0c;掌握利用R实现线性回归分析、逻辑回归、列联分析及方差分析&#xff0c;并能对分析结果进行解读。 数据&#xff1a; 链接: https://pan.baidu.com/s/1JqZ_KbZJEk-pqSUWKwOFEw 提取码: hxts 二、实验内容&#xff1a; 1、2…...

AutoMQ:无需 Cruise Control 实现 Kafka 的自动分区再平衡

导读&#xff1a;AutoMQ是一款贯彻云优先理念来设计的 Kafka 替代产品。AutoMQ 创新地对 Apache Kafka 的存储层进行了基于云的重新设计&#xff0c;在 100% 兼容 Kafka 的基础上通过将持久性分离至 EBS 和 S3 带来了 10x 的成本降低以及 100x 的弹性能力提升&#xff0c;并且相…...

在剪映中给英文学习视频添加中文字幕

文章目录 一、剪映是什么&#xff1f;二、使用步骤1.下载2.操作 一、剪映是什么&#xff1f; 剪映是由字节跳动公司开发的一款功能强大且易于使用的视频编辑软件&#xff0c;在移动端和电脑端均有应用。 二、使用步骤 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. 暂停执行&#xff0c;直到一个 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开发&#xff0c;使用Deepseek V3还是R1&#xff08;1&#xff09;&#xff1a;应用场景 FPGA开发&#xff0c;使用Deepseek V3还是R1&#xff08;2&#xff09;&#xff1a;V3和R1的区别 FPGA开发&#xff0c;使用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 环境&#xff0c;需确保两者的版本匹配&#xff0c;官方兼容性参考&#xff1a;RabbitMQ & Erlang 版本对照表‌。 2.2 下载安…...

CDefView::_OnFSNotify函数分析

进入CDefView::_OnFSNotify函数时状态栏 _UpdateStatusBar函数之后增加一个对象&#xff0c;变成7个对象。 LRESULT CDefView::_OnFSNotify(LONG lNotification, LPCITEMIDLIST* ppidl) { LPITEMIDLIST pidl; LPCITEMIDLIST pidlItem; // we may be registered for no…...

精准汇报:以明确答复助力高效工作

在工作场景中&#xff0c;汇报工作是一项至关重要的沟通环节&#xff0c;它不仅关乎工作进展的有效传达&#xff0c;更影响着团队协作的顺畅度和整体工作效率。而汇报工作的关键&#xff0c;就在于给予明确肯定的答复&#xff0c;摒弃“应该”“可能”这类模糊词汇&#xff0c;…...

Java自动拆箱装箱/实例化顺序/缓存使用/原理/实例

在 Java 编程体系中&#xff0c;基本数据类型与包装类紧密关联&#xff0c;它们各自有着独特的特性和应用场景。理解两者之间的关系&#xff0c;特别是涉及到拆箱与装箱、实例化顺序、区域问题、缓存问题以及效率问题。 一、为什么基本类型需要包装类 泛型与集合的需求 Java…...

软件工程---基于构件的软件工程

基于构件的软件工程&#xff08;CBSE&#xff09;是一种软件开发方法&#xff0c;通过重用现有的软件构件来构建系统&#xff0c;从而提高开发效率和软件质量。这种方法强调软件系统的模块化设计和构建复用&#xff0c;使得软件开发过程更加高效和灵活。 企业软件开发&#xf…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间&#xff0c; 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点&#xff0c;不需要开启数据库闪回。…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩

目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

Qt Widget类解析与代码注释

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码&#xff0c;写上注释 当然可以&#xff01;这段代码是 Qt …...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日&#xff0c;2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席&#xff0c;并作《智能体在安全领域的应用实践》主题演讲&#xff0c;分享了在智能体在安全领域的突破性实践。他指出&#xff0c;百度通过将安全能力…...

管理学院权限管理系统开发总结

文章目录 &#x1f393; 管理学院权限管理系统开发总结 - 现代化Web应用实践之路&#x1f4dd; 项目概述&#x1f3d7;️ 技术架构设计后端技术栈前端技术栈 &#x1f4a1; 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 &#x1f5c4;️ 数据库设…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)

船舶制造装配管理现状&#xff1a;装配工作依赖人工经验&#xff0c;装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书&#xff0c;但在实际执行中&#xff0c;工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP

编辑-虚拟网络编辑器-更改设置 选择桥接模式&#xff0c;然后找到相应的网卡&#xff08;可以查看自己本机的网络连接&#xff09; windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置&#xff0c;选择刚才配置的桥接模式 静态ip设置&#xff1a; 我用的ubuntu24桌…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖

在Vuzix M400 AR智能眼镜的助力下&#xff0c;卢森堡罗伯特舒曼医院&#xff08;the Robert Schuman Hospitals, HRS&#xff09;凭借在无菌制剂生产流程中引入增强现实技术&#xff08;AR&#xff09;创新项目&#xff0c;荣获了2024年6月7日由卢森堡医院药剂师协会&#xff0…...

IP如何挑?2025年海外专线IP如何购买?

你花了时间和预算买了IP&#xff0c;结果IP质量不佳&#xff0c;项目效率低下不说&#xff0c;还可能带来莫名的网络问题&#xff0c;是不是太闹心了&#xff1f;尤其是在面对海外专线IP时&#xff0c;到底怎么才能买到适合自己的呢&#xff1f;所以&#xff0c;挑IP绝对是个技…...