Linux 简述

文章目录

  • [1. 背景](#1. 背景)
  • [2. Linux 环境搭建](#2. Linux 环境搭建)
    • [2.1 环境搭建方式](#2.1 环境搭建方式)
    • [2.2 使用云服务器](#2.2 使用云服务器)
    • [2.3 使用终端软件连接到 Linux](#2.3 使用终端软件连接到 Linux)
  • [3. Linux 常用命令](#3. Linux 常用命令)
    • [3.1 ls](#3.1 ls)
    • [3.2 cd](#3.2 cd)
    • [3.3 pwd](#3.3 pwd)
    • [3.4 touch](#3.4 touch)
    • [3.5 cat](#3.5 cat)
    • [3.6 echo](#3.6 echo)
    • [3.7 vim](#3.7 vim)
    • [3.8 mkdir](#3.8 mkdir)
    • [3.9 rm](#3.9 rm)
    • [3.10 mv](#3.10 mv)
    • [3.11 cp](#3.11 cp)
    • [3.12 grep](#3.12 grep)
    • [3.13 ps](#3.13 ps)
    • [3.14 netstat](#3.14 netstat)
  • [4. 搭建 Java 部署环境](#4. 搭建 Java 部署环境)
    • [4.1 jdk](#4.1 jdk)
    • [4.2 tomcat](#4.2 tomcat)
    • [4.3 mysql](#4.3 mysql)
  • [5. 部署 Web 项目到 Linux](#5. 部署 Web 项目到 Linux)
    • [5.1 数据库建表](#5.1 数据库建表)
    • [5.2 构建项目并打包](#5.2 构建项目并打包)
    • [5.3 拷贝到 Tomcat 中](#5.3 拷贝到 Tomcat 中)
    • [5.4 验证](#5.4 验证)

1. 背景

Linux 是市场份额 相当大的操作系统

最开始诞生于 1991,前身是 Unix

贝尔实验室开发了 Unix 操作系统

Unix 火了之后,衍生出很多的分支

其中有一只为 "Minix",由荷兰的Andrew S. Tanenbaum 教授开发

MINIX 含义为 "小型的UNIX",源代码开放给大学教学和研究工作

1991 年, 还在读大学的 芬兰人 Linus Benedict Torvalds (1969年12月28日出生, 当时 22 岁) 基于Minix 的启发,开发出了 Linux 的第一个版本

经过这么多年的发展,Linux 已经成为 世界第一大操作系统

2. Linux 环境搭建

2.1 环境搭建方式

主要有四种:

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

2.2 使用云服务器

以腾讯云为例:

打开云服务器

这个环节我们最重要的是得到三个信息:

  1. 服务器的外网 IP (114.132.49.148)
  2. 服务器的管理员账户 (为 root 或者 ubuntu)
  3. 管理员账户密码(在腾讯云网站上设置的)

2.3 使用终端软件连接到 Linux

这里我们使用的是 XShel

ubuntu:是用户名

VM-8-2-ubuntu:是主机名

3. Linux 常用命令

ctrl + l 可以清屏

3.1 ls

ls:list 列出当前目录下都有哪些内容(文件/目录)

直接输入 ls,是查看当前目录的情况

  • ls /

    加上 / 意思就是看看 / 这个目录下的情况

    (/ 称为"根目录",就是 Windows 上的此电脑,Linux 是没有盘符的)

    这些就是 / 目录下包含的内容

    这些都是系统自带的文件和目录

  • ls -l /

    后面是 小写 L 不要写成 大写的 i 或者数字1

    按照列表的方式显示(最常见的功能)

    也可以简化成 ll /

前面的第一列是文件的权限(当前用户,是否刻度可写可执行)

权限字符串的第一个字母,表示了文件的类型

-普通文件(显示成白色)

d 目录文件(文件夹)(显示成蓝色)

l 连接文件(快捷方式)(显示成浅蓝色)

第二列就是表示文件的拥有者是谁

此处的文件是 root 所拥有的

第三列是文件的大小

第四列是修改时间

3.2 cd

cd:change directory 修改(当前)目录

将当前工作目录改变到指定的目录下

  • cd /
    来到根目录,就相当于点击"此电脑"

    第二行的 / 的位置显示的就是你当前所在的目录
    ~ 也称为"home 目录""用户主目录"
    这个就是用户登录是,默认进入的目录

    使用 cd 等命令,需要加上路径的时候,可以使用 tab 来补全路径
    (需要当前输入的内容,是唯一的选项)
    (有多个匹配的目录名字/文件名字,可以按两下 tab 就能列出所有可以补全的选项)

上述操作,就进入到了一个很深的目录中

3.3 pwd

使用 pwd 可以查看到当前所处的路径的绝对路径

在Linux 的命令中,但凡涉及到 目录 相关的操作,都是可以支持 绝对路径 和 相对路径的

Linux 上,绝对路径,是以 / 开头的

相对路径,以 . 或者 ... 开头的(有的时候 . 可以省略)

3.4 touch

touch:创建一个新的文件

3.5 cat

cat:查看文件内容(把文件内容打印到控制台上)

由于目前没有内容,所以显示空

输入一个命令,没有任何提示

此时就是"成功"

如果失败,就会告诉你一些报错信息

3.6 echo

echo:打印内容到控制台上

此处这里的 > 就是"重定向"

但是重新写入之后,只会存在这一次写入的内容

使用 >> 就可以保存上一次的

但是这里的 echo + 重定向,只能写一些简单的字符串内容

如果你的需要写的内容很多,就不太方便了,也不方便修改

3.7 vim

vim:这个是 Linux 上自带的一个文本编辑器,使用 vim 就可以更灵活的对文件进行编辑了

虽然和 记事本 的定位差不多,实际上 vim 的使用要复杂很多


  1. 打开文件
    vim 文件名

  1. 编辑内容
    vim 包含很多快捷键, 快捷键的画风和其他的软件截然不同
    其他很多软件,快捷键都要搭配 ctrl alt 之类的组合键完成

vim 更期望输入单个按键, 就能起到快捷键的效果

vim 引入了"模式"概念

启动 vim 之后,默认处于 normal mode (普通模式),键盘按键,都是快捷键, 而不是输入文本

要想输入文本, 就需要进入 inset mode (插入模式)

进入插入模式的方法, 有很多,最简单的就是 i


  1. 保存退出

在 xshell 中,按 ctrl + s 是冻结屏幕的意思

有的时候,服务器打印的日志太快了,滚动太快看不清,就可以冻结屏幕

ctrl + q 就能接触冻结

先按 esc,回到普通模式

再按 : 进入命令模式

此时输入的内推,就是vim 的命令

w:保存

q:退出

3.8 mkdir

mkdir:make directory 创建目录

加 -p 可以创建多级目录

3.9 rm

rm:remove 删除文件/目录

有的系统上(centos)输入 rm 删除,会有一个提示,是否确认要删除,输入 y 就是删除,n 就是不删除

删除目录,不仅仅是删除目录本身,还要删除目录包含的其他目录和文件

需要使用 rm -r 来删除,-r 表示"递归"

有的系统上,删除的事后,也会和上面一样,提示你是否要真的删除

如果是删除目录的话,递归过程比较麻烦,每个目录都会提示你要进行确认

就可以使用 rm -rf 的方式直接删除

f 表示"强制删除"不需要进行确认

此处的 rm 其实是一个危险操作!!

一旦删除,数据就没了!!

删除的时候,一定要确保,你删的这个东西确实是不再使用了

  • rm -rf /
    删除此电脑,会把你整个硬盘的数据都给删除掉

    在 Linux 中是可以定义变量的

    删除 rm $workdir/*
    也是一个通配符
    意思就是要删除指定目录小所有内容
    预期是想删除 /tmp/

    但是一旦代码出现一些以外,导致 workdir 这个变量的定义语句没有被执行到
    没有定义的变量,通过 $ 变量名的方式访问
    不会报错,而是直接返回空字符串 ""
    这样 就等价成了 rm -rf /

3.10 mv

mv:move 移动(剪切,粘贴)

mv 要移动的源 移动的目标


也可以移动目录(把目录内部包含的所以内容都进行移动)

使用 mv 还可以针对文件/目录进行重命名

在本路径就是重命名的操作了

3.11 cp

cp:copy 复制(复制,粘贴)

cp 要复制的源 要复制的目标

也可以拷贝普通文件,也可以拷贝目录

拷贝目录的时候,和 rm 类似,都是要加上 -r 选项,表示要递归的拷贝目录里的内容

3.12 grep

grep:字符串匹配/查找

比如,想查找某个文件中是否包含某个关键字,这个关键字在第几行,都可以使用 grep 来查看

加上 -n 选项,就可以显示行号

grep 不仅仅可以在文件中查找还能搭配其他的命令,完成更复杂的查找操作

3.13 ps

ps:process show 显示进程

显示当前系统上都有哪些进程

这样只能看到当前会话(终端)对应的进程,非常不安全

很多时候 ps 都会搭配 grep 来使用

比如,查看 mysql 进程的进程 pid

| 叫做管道

(把前一个命令的输出,作为有一个命令的输入)

3.14 netstat

netstat:查看网络信息

可以用来查看某个某个端口是否被某个进程使用

也可以查询某个进程使用了哪个端口

主要关注 tcp udp 涉及到的网络信息

4. 搭建 Java 部署环境

基于 包管理器 进行安装

Linux 会把一些软件包,放到对应的服务器上通过包管理器这样的程序,来把这些软件包给下载安装

ubuntu 系统,包管理器 apt

centos 系统,包管理器 yum

4.1 jdk

这里需要确保是处于 root 用户下(如果不是管理员,需要使用 sudo su 切换到管理员)

  1. 使用 apt 命令查看服务器上有哪些安装包
    apt list | grep jdk
  2. 使用 apt 安装软件包
    apt install 软件包名字

在 Linux 命令行中,复制 ctrl + insert,粘贴 shift + insert(Windows 也支持)

4.2 tomcat

由于我们使用的是 tomcat 8.5,搭配的是 servlet 3.1

只能手动安装了

由于 tomcat 就是 基于 java 来实现的,java 是跨平台的


  1. 只需要把之前 Windows 上的 tomcat 上传到 Linux 上即可

把要上传的压缩包,往 xshell 上一拖, 就过去了1) 一次只能拖一个文件(打成压缩包)

2)要想能拖上去需要先安装 lrzsz 这样的软件包

ubunt uapt install Irzsz

centos yum install Irzsz

sz 把linux 上的文件传到 Windows

rz 把 windows 上的文件传到 linux 上


  1. 对 zip 压缩包进行解压缩
    ubuntu apt install unzip
    centos yum install unzip

上面的 .bat 是 Windows 上使用的

下面的 .sh 是 Linux 上使用的


  1. 修改 .sh 文件的可执行权限,让这些 .sh 都可执行

先 cd 到 bin 目录中

chmod +x *.sh

x 表示可执行

*.sh 表示给所有的 .sh 文件都进行修改

执行完这个操作,顺利完成没报错 说明就成功了

此时这些 .sh 文件都 变绿了


  1. 启动 tomcat

还是 cd 到 bin 目录小

sh startup.sh


  1. 验证启动是否成功

使用ps查看java进程有没有

使用 netstat 查看 8080 是香被绑定

访问 tomcat 的欢页面

4.3 mysql

直接通过 apt 来安装 / yum 安装


这样就成功了

使用 ctrl + d 可以退出控制台

5. 部署 Web 项目到 Linux

5.1 数据库建表

把数据库/数据表都在云服务器上创建好

当把程序放到云服务器上执行,程序访问的就是云服务器上的数据库了

需要确保数据库里面有数据(有表,有库)

把之前代码中的 db.sql 中的内容 复制到 云服务器中的 mysql 客户端中

5.2 构建项目并打包

打包之前,还需要确认一下 mysql 相关的配置是否需要修改

把密码置空就可以了

5.3 拷贝到 Tomcat 中

将 war 包拷贝到 Tomcat 的 webapps 目录中

tomcat 对自动针对 war 包进行解压缩

解压缩成功,基本上就是部署成功了

5.4 验证

在浏览器上访问项目的链接

如果出现错误,在 tomcat 中查找

etc 目录大部分就是放各种程序的配置文件的

设置一下密码就可以了

ALTER user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';

这样就可以访问了!

相关推荐
_.Switch20 分钟前
高级Python自动化运维:容器安全与网络策略的深度解析
运维·网络·python·安全·自动化·devops
2401_8504108321 分钟前
文件系统和日志管理
linux·运维·服务器
JokerSZ.25 分钟前
【基于LSM的ELF文件安全模块设计】参考
运维·网络·安全
XMYX-01 小时前
使用 SSH 蜜罐提升安全性和记录攻击活动
linux·ssh
芯盾时代1 小时前
数字身份发展趋势前瞻:身份韧性与安全
运维·安全·网络安全·密码学·信息与通信
心灵彼岸-诗和远方2 小时前
DevOps业务价值流:架构设计最佳实践
运维·产品经理·devops
一只哒布刘2 小时前
NFS服务器
运维·服务器
苹果醋33 小时前
Java8->Java19的初步探索
java·运维·spring boot·mysql·nginx
二十雨辰3 小时前
[linux]docker基础
linux·运维·docker
Jason-河山4 小时前
【自动化更新,让商品信息跳舞】——利用API返回值的幽默编程之旅
运维·自动化