万字长文超硬核详细学习系列——深入浅出Linux高级篇的知识点,值得你收藏学习必备

茫茫人海千千万万,感谢这一秒你看到这里。希望我的文章对你的有所帮助!

愿你在未来的日子,保持热爱,奔赴山海!

Linux高级篇目录

    • 1. Linux的用户管理
      • 1.1 添加用户
      • 1.2 删除用户
      • 1.3 查询用户信息
      • 1.4 切换用户
      • 1.5 对组操作
    • 2. Linux的文件权限
      • 2.1 查看资源的权限
      • 2.2 添加权限语法
      • 2.3 删除权限语法
      • 2.4 修改权限语法
      • 2.5 实现演示
    • 3. Linux的进程管理
      • 3.1 查看进程ps(process)
      • 3.2 查看内存耗用
      • 3.3 杀死进程
    • 4. Linux的筛选过滤
      • 4.1 grep
      • 4.2 管道符|
    • 5. Linux的crontab定时任务
      • 5.1 配置定时任务
    • 6. Linux的服务管理
      • 6.1 服务管理
      • 6.2 服务自启动
      • 6.3 演示效果
    • 7. Linux的网络管理
      • 7.1 网络管理——主机名管理
      • 7.2 网络管理——网络服务管理
      • 7.3 网络管理——网卡激活与关闭管理
        • 7.3.1 那如何关闭网卡呢?
        • 7.3.2 重新激活网卡
      • 7.4 网络管理——配置静态ip
        • 7.4.1 ip配置的类型
        • 7.4.2 查询vmnet8网卡nat模式的网关信息
        • 7.4.3 配置静态ip
      • 7.5 网络管理——虚拟机快照
        • 7.5.1 快照介绍
        • 7.5.2 实现步骤
      • 7.6 网络管理——克隆虚拟电脑
      • 7.7 网络管理——查询网络进程使用端口号
    • 8. Linux的防火墙管理
      • 8.1 作用1:开放端口允许外部连接
      • 8.2 作用2:移出端口不允许外部连接
    • 9. Linux的SSH有密登录和免密登录
      • 9.1 登录远程服务器
      • 9.2 对称加密和非对称加密
      • 9.3 SSH免密登录原理
      • 9.4 实现免密登录
    • 10. Linux的项目部署安装软件
      • 10.1 项目部署——软件安装命令rpm与yum
        • 1. rpm
        • 2. yum
        • 3. rpm与yum的区别
      • 10.2 项目部署——jdk安装
      • 10.3 项目部署——mysql安装-启动-远程授权
        • 1. 安装步骤:
        • 2. mysql虚拟机内登录使用
        • 3. mysql远程登录使用
      • 10.4 项目部署——tomcat安装及启动
        • 1. 安装步骤
    • 11. 完结撒花

1. Linux的用户管理

  1. Linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统
  2. Linux的用户需要至少要属于一个组。
  3. root 是超级管理员用户。

1.1 添加用户

命令:

useradd [选项] 用户名:创建一个用户

password 用户名:给用户名指定密码

参数详情介绍:

  • -d :给新创建的用户指定家目录。

具体演示:

万字长文超硬核详细学习系列——深入浅出Linux高级篇的知识点,值得你收藏学习必备_第1张图片

万字长文超硬核详细学习系列——深入浅出Linux高级篇的知识点,值得你收藏学习必备_第2张图片

1.2 删除用户

命令:

userdel [选项] 用户名:删除一个用户

参数详情介绍:

  • -r:删除用户并会删除用户家目录

具体演示:

万字长文超硬核详细学习系列——深入浅出Linux高级篇的知识点,值得你收藏学习必备_第3张图片

1.3 查询用户信息

命令:

id 用户名:查询用户信息

具体演示:

万字长文超硬核详细学习系列——深入浅出Linux高级篇的知识点,值得你收藏学习必备_第4张图片

1.4 切换用户

在操作 Linux中,如果当前用户的权限不够,可以通过su-指令,切换到高权限用户,比如root。

命令:

su - 用户名:切换用户

具体演示:

注意:

  1. 从权限高的用户切换到权限低的用户,不需要输入密码,反之需要。
  2. 当需要返回到原来用户时,使用exit指令

1.5 对组操作

命令:

groupadd 用户组 :增加组

groupadd 用户组 :删除组

useradd -g 用户组 用户名 :增加用户时加组

usermod -g 用户组 用户名 : 修改用户的组

具体演示:

万字长文超硬核详细学习系列——深入浅出Linux高级篇的知识点,值得你收藏学习必备_第5张图片

2. Linux的文件权限

在Linux中的每个用户必须属于一个组,不能独立于组外。

在 Linux中每个文件有所有者、所在组、其它组的概念。

  • 所有者 :资源拥有者,又叫属主, 使用u表示给拥有者设置权限
  • 所在组 :拥有者所在的组,又叫属组,使用g表示, 通过g给组员设置权限
  • 其它组 : 其他组其他人,其他用户,使用o标识, 通过o给其他人人员设置权限
  • 使用a表示所有人(包含了上面用户的3大类)

设置权限就是给这3大类人员设置文件的操作权限。

2.1 查看资源的权限

这里代表root用户hhh目录具备的条件,那下面我们可以看看这些参数代表什么?

参数详解:

万字长文超硬核详细学习系列——深入浅出Linux高级篇的知识点,值得你收藏学习必备_第6张图片

第0位确定文件类型(d,-,1,c,b),然后接下来几位数字代表着每一类用户都有3个权限。

第1-3位确定所有者(该文件的所有者)拥有该文件的权限。-User

第4-6位确定所属组(同用户组的)拥有该文件的权限,-Group

第7-9位确定其他用户拥有该文件的权限–Other

其中参数rwx:

  • r:读取权限, 只读 --> 可以使用4代表
  • w: 写入权限 , 可以编辑文件 --> 可以使用2代表
  • x: 执行权限, 由于某些文件是可以执行的,如有有执行权限才可以执行 --> 可以使用1代表

2.2 添加权限语法

命令:

chmod 用户或组+权限 目录或文件 :对指定的文件或目录,给用户或组赋予权限。多种类型的用户之间使用逗号分隔

chmod g+w hhh

2.3 删除权限语法

chmod 用户或组-权限 目录或文件 :对指定的文件或目录,给用户或组删除权限。多种类型的用户之间使用逗号分隔

chmod g-w hhh

2.4 修改权限语法

chmod 用户或组=权限 目录或文件 :对指定的文件或目录,给用户或组修改权限。多种类型的用户之间使用逗号分隔

chmod g=rw hhh

2.5 实现演示

万字长文超硬核详细学习系列——深入浅出Linux高级篇的知识点,值得你收藏学习必备_第7张图片

使用数字权限设置:

万字长文超硬核详细学习系列——深入浅出Linux高级篇的知识点,值得你收藏学习必备_第8张图片

3. Linux的进程管理

  1. 在 Linux中,每个执行的程序(代码)都称为一个进程。每一个进程都分配一个ID号
  2. 每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程。例如www服务器
  3. 每个进程都可能以两种方式存在的。前台与后台,所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行
  4. 一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才才结束

3.1 查看进程ps(process)

命令:

ps

ps -aux : 一般使用这个。

文件可以1个或多个。

参数详情:

  • a :显示当前用户通过终端启动的进程
  • u:显示当前用户通过终端启动的进程的详细信息
  • x:显示所有用户的所有的进程

查看进程:

万字长文超硬核详细学习系列——深入浅出Linux高级篇的知识点,值得你收藏学习必备_第9张图片

进程信息的参数详解:

列标题 说明
%CPU CPU(处理器)使用百分比
%MEM 真实内存使用百分比
COMAND 正被执行的命令的名称
COMMAND 正被执行的命令的完整名称
PID 进程ID
PPID 父进程的进程ID
RSS 内存驻留空间大小(内存管理)
START 定时启动的时间
STAT 状态代码(O,R,S,T,Z)
TIME 积累CPU时间
TTY 控制终端的完整名称(?表示没有控制终端,该进程为守护进程)
USER 用户名
VSZ 虚拟大小(单位为KB)

3.2 查看内存耗用

动态监控进程。

top与ps命令很相似。它们都用来显示正在执行的进程。

top与ps最大的不同之处,在于top在执行一段时间可以更新正在运行的的进程。

命令

top:查看系统内存整体耗用, 系统负载,使用q退出。

万字长文超硬核详细学习系列——深入浅出Linux高级篇的知识点,值得你收藏学习必备_第10张图片

3.3 杀死进程

若是某个进程执行一半需要停止时,或是已消了很大的系统资源时,此时可以考虑停止该进程使用kill命令来完成此项任务。

命令

kill [选项] 进程号:通过进程号杀死进程。

参数:

  • -9 :表示强迫进程立即停止

用处:比如踢掉某个非法登录用户,或者强行关闭某个终端

4. Linux的筛选过滤

4.1 grep

grep可以是一种强大的文本搜索工具(文件内容过滤器),它能使用字符串搜索文本,并把匹配的行和行号打印出来。

也可以与管道符|一起做过滤筛选

参数介绍:

  • n:搜索指定文件中字符串内容
  • v:显示不匹配的行
  • i:忽略大小写进行搜索

演示搜索:

万字长文超硬核详细学习系列——深入浅出Linux高级篇的知识点,值得你收藏学习必备_第11张图片

4.2 管道符|

管道符一般与grep命令一起使用作为过滤筛选功能。

演示管道与grep搭配:

万字长文超硬核详细学习系列——深入浅出Linux高级篇的知识点,值得你收藏学习必备_第12张图片

5. Linux的crontab定时任务

任务调度:是指系统在某个时间执行的特定的命令或程序。

任务调度分类:

​ 1. 系统工作:有些重要的工作必须周而复始地执行。如病毒扫描等

2. 个别用户工作:个别用户可能希望执行某些程序,比如对 mysql数据库的备份

crontab进行定时任务的设置。

命令参数:

  • l:显示当前用户所有的定时任务机
  • e:使用vim编辑当前用户的定时任务,一行一个定时任务
  • r:删除当前用户的定时任务

演示:

5.1 配置定时任务

格式:分 时 日 月 周 命令

crontab定时命令只能最快按照分钟去执行,不能安装毫秒执行,如果需要按照毫秒执行可以使用java

含义:按照指定的时间执行命令, 就是定时任务

  • minute:表示分钟,从0-59的任何整数
  • hour:表示小时,从0-23的任何整数
  • day:表示日,从1-31的任何整数
  • month:表示月,从0112的任何整数
  • week:表示周,从0-7的任何整数,0或者7代表星期日,1-6代表周一到周六
  • command:表示要执行的命令

特殊字符介绍:

星号* :代表所有可能的值。

逗号,:用逗号隔开的值指定某个时间点

短横- :表示一个整数范围

正斜杠/ :表示指定时间的间隔频率

eg:

* * * * * command --> 每1分钟执行

30 21 * * * command --> 每天的21点30分执行

3,15 * * * * command --> 每小时的第3和第15分钟执行

6,12 3-4 * * * command --> 每天上午3点到4点的第6和第12分钟执行

*/3 * * * * command --> 每隔三分钟执行

输出系统当前时间命令:

date

案例:每分钟打印系统当前时间输出到/root/mydate.log文件中

实现步骤

  1. 使用crontab -e 进入编辑当前用户的定时任务编辑器

  2. 编写定时任务命令

  3. >>代表追加输出

    * * * * * date >> /root/mydate.log
    
  4. >代表覆盖输出

  5. 观察运行,看是否每分钟进行打印.

6. Linux的服务管理

服务(service)本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如(mysql,shd防火墙等)。

6.1 服务管理

命令:

sysytemctl 【选项】 服务名

参数详情介绍:

  • start:启动服务。
  • stop:停止服务。
  • status:查看服务的状态。
  • restart:重启服务。
  • reload:不停止定时器,重新加载新的配置文件,使其生效。

6.2 服务自启动

命令相关:

  • systemctI list-units service :查看服务运行状态
  • systemcti list-unit-files --type=service :查询所有服务是的开机状态
  • systemctl enable 服务名:设置某个服务开机自启动
  • systemctl disable 服务名:设置某个服务器开机不自动启动。
  • systemctI is-enabled 服务名:查询指定服务器开机启动状态
  • systemctl list-unit-files 服务名.service:查询指定服务器开机启动状态

注意:

服务默认状态分类

  • enable : 开启自启动
  • disable: 手动启动
  • daemon的默认状态除了enable和disable之外,还有其他类型:
    1. static:这个服务不可以自己启动,但是可能被其他的enable类型的服务唤醒(相依属性的服务)。
    2. mask:这个服务无论如何都不会被启动!因为已经被强制注销(非删除),可通过systemctl unmask方式改回原本状态。

服务当前状态分类

  1. active (running):表示正有一个或多个程序正在系统中执行。
  2. active (exited):表示仅执行一次就正常结束的服务。
  3. active (waiting):表示正在执行当中,不过还在等待其他的事情才能继续处理。
  4. inactive:表示这个服务目前没有运行。

6.3 演示效果

万字长文超硬核详细学习系列——深入浅出Linux高级篇的知识点,值得你收藏学习必备_第13张图片

万字长文超硬核详细学习系列——深入浅出Linux高级篇的知识点,值得你收藏学习必备_第14张图片

7. Linux的网络管理

7.1 网络管理——主机名管理

命令:

hostname:查看计算机的名字

hostnamectl set-hostname 名字:永久修改计算机名字,需要重启或使用bash刷新

演示:

万字长文超硬核详细学习系列——深入浅出Linux高级篇的知识点,值得你收藏学习必备_第15张图片

7.2 网络管理——网络服务管理

命令相关:

  • systemctI start network:启动网络服务
  • systemctl stop network :停止网络服务
  • systemctl restart network:重新启动网络服务
  • systemctl status network:查看网络服务的状态

客户端操作:

万字长文超硬核详细学习系列——深入浅出Linux高级篇的知识点,值得你收藏学习必备_第16张图片

虚拟机服务器操作:

万字长文超硬核详细学习系列——深入浅出Linux高级篇的知识点,值得你收藏学习必备_第17张图片

再回到客户端操作:

万字长文超硬核详细学习系列——深入浅出Linux高级篇的知识点,值得你收藏学习必备_第18张图片

7.3 网络管理——网卡激活与关闭管理

通过之前的学习,我们也了解了如何查看网卡列表

ifconfig

需要知道:所有linux系统的网卡都有对应的配置文件:/etc/sysconfig/network-scripts/目录下。

7.3.1 那如何关闭网卡呢?

  1. 找到网卡配置文件ens33

    cd /etc/sysconfig/network-scripts/
    

    万字长文超硬核详细学习系列——深入浅出Linux高级篇的知识点,值得你收藏学习必备_第19张图片

  2. 编辑网卡配置文件

    vim ifcfg-ens33
    

    进入配置文件信息,并修改配置ONBOOT,修改为关闭网卡

    • ONBOOT属性用于管理网卡的启动或关闭
    • ONBOOT=yes 代表激活网卡,启动网卡
    • ONBOOT=no 代表关闭网卡
    ONBOOT=no
    

    万字长文超硬核详细学习系列——深入浅出Linux高级篇的知识点,值得你收藏学习必备_第20张图片

  3. 重启网络服务才可以识别最新的修改

    systemctl restart network
    

  4. 然后在虚拟机服务器中测试是否可以联网

7.3.2 重新激活网卡

  1. 去虚拟机里面修改配置文件ifcfg-ens33,开启网卡

    ONBOOT=yes
    

  2. 重启网络服务

    systemctl restart network
    
  3. 测试网络后,发现正常了。

7.4 网络管理——配置静态ip

我们知道虚拟机的linux默认采用dhcp动态生成获取ip,这个ip不稳定偶尔会发生改变的。以后作为服务器的linux系统是对外提供服务的,所以ip不能变化的应该是固定的,那么怎么实现呢?

7.4.1 ip配置的类型

dhcp, ip是动态分配生成的,适合个人电脑

static, ip是静态不变的,适合服务器,ip不能变

以后服务器是对外提供服务的,ip不可以变化,否则客户段找不到服务器

7.4.2 查询vmnet8网卡nat模式的网关信息

万字长文超硬核详细学习系列——深入浅出Linux高级篇的知识点,值得你收藏学习必备_第21张图片

7.4.3 配置静态ip

修改linux的网卡配置文件ifcfg-ens33,里面设置静态ip

  1. 进入配置文件目录

    cd /etc/sysconfig/network-scripts/
    
  2. 编辑配置文件

    vim ifcfg-ens33
    
  3. 修改以下内容并保存

    万字长文超硬核详细学习系列——深入浅出Linux高级篇的知识点,值得你收藏学习必备_第22张图片

    增加、修改的内容详情:

    修改ip的生成类型, 将原来的值dhcp修改为static

    BOOTPROTO=static
    
    • IPADDR 配置ip地址

    • GATEWAY配置网关

    • NETMASK 配置子网掩码

    • DNS1配置首选DNS

    • DNS2配置备选DNS

    IPADDR=192.168.66.128
    GATEWAY=192.168.66.2
    NETMASK=255.255.255.0
    DNS1=223.5.5.5
    DNS2=114.114.114.114
    
  4. 重启网络服务

    systemctl restart network
    

7.5 网络管理——虚拟机快照

虚拟机由于其不稳定型,虚拟机经常通过某些配置或安装软件后导致系统不可用,一般我们的做法是重装虚拟机linux系统解决,那么这样操作很浪费时间,有没有什么好办法不用重装系统呢?

在系统可用(没有问题)的时候进行设置系统快照,在系统不可用的时候恢复快照就可以!

7.5.1 快照介绍

虚拟机“快照”是虚拟机磁盘文件在某个时间点及时的复本备份。系统崩溃或系统异常,你可以通过使用恢复到快照指定时间点系统状态。当升级应用和服务器及给它们打补丁的时候,快照是救世主。VMware 快照是VMwareWorkstation 里的一个特色功能。

7.5.2 实现步骤

  1. 生成快照

    点击如图菜单,进行管理快照

    万字长文超硬核详细学习系列——深入浅出Linux高级篇的知识点,值得你收藏学习必备_第23张图片

  2. 新建快照,生成当前操作系统磁盘文件的复本(相当于备份一个系统)

    万字长文超硬核详细学习系列——深入浅出Linux高级篇的知识点,值得你收藏学习必备_第24张图片

  3. 当系统不可用时,通过恢复指定快照进行恢复系统使用

    万字长文超硬核详细学习系列——深入浅出Linux高级篇的知识点,值得你收藏学习必备_第25张图片

7.6 网络管理——克隆虚拟电脑

企业开发中经常需要准备多台一模一样的虚拟机电脑linux系统环境,那么如何根据当前的虚拟电脑快速搭建多台一样的虚拟电脑呢?

虚拟机克隆,可以克隆出多台一模一样的虚拟电脑

实现步骤:

  1. 关闭当前虚拟机linux系统

  2. 选中点击当前linux系统虚拟电脑,再鼠标右键如图操作

    万字长文超硬核详细学习系列——深入浅出Linux高级篇的知识点,值得你收藏学习必备_第26张图片

    注意:必须先关闭,才能克隆,然后选择完整克隆。

  3. 修改克隆出来的静态ip

    需要将克隆出来的电脑修改静态ip为192.168.66.129, 要与原本的虚拟机的ip不一样才可以。

    万字长文超硬核详细学习系列——深入浅出Linux高级篇的知识点,值得你收藏学习必备_第27张图片

  4. 修改计算机的名字

    使用bash刷新。

7.7 网络管理——查询网络进程使用端口号

在企业开发中经常要查询软件使用的端口号,那么如何查询linux系统某一个运行软件使用的端口?

命令:

netstat:可以查看出系统网络的情况

参数详情:

无参 显示网络状态
-n number 显示程序的IP地址和端口号
-t tcp 只显示TCP协议连接的程序,-u显示udp协议的程序
-l listenter 显示监听中的Socket
-p programs 显示程序的名字

演示:

netstat -nutlp #查看端口、udp、tcp、正在监听、显示程序名的所有程序

万字长文超硬核详细学习系列——深入浅出Linux高级篇的知识点,值得你收藏学习必备_第28张图片

常见命令:

  • netstat -ntlp : 只查tcp协议
  • netstat -nulp : 只查udp协议
  • netstat -nutlp :只查udp与tcp协议

8. Linux的防火墙管理

防火墙是防止外界访问系统内部的程序,防火墙设置指定服务的通信权限,如果允许服务外网访问需要进行防火墙配置。

linux系统安装的任何软件默认都不可以访问外网,必须经过防火墙的放行才可以。

命令详情:

  • systemctl status firewalld:查看防火墙的状态
  • systemctI start firewalld:开启防火墙
  • systemctl stop firewalld:关闭防火墙
  • systemctl enable firewalld:让防火墙在开机的时候自启
  • systemctl disable firewalld:让防火墙在开机的时候不要自启

8.1 作用1:开放端口允许外部连接

外网或内网需要连接到当前系统内的程序进行操作,需要 linux 系统防火墙开放程序端口,否则无法访问。

命令:

firewall-cmd --zone =public --add-port =端口/tcp --permanent

参数介绍:

  • firewall-cmd :配置防火墙命令
  • zone=public:设置管理的区域,public这是默认区域
  • –add-port=端口/tcp:开放指定端口
  • –permanent:持久性规则类型,永久性规则,代表持久化到访问墙配置文件中存储(但是需要重启服务器才可以加载到内存运行时才有效果)

eg:假如开放 mysql 软件的端口 3306,允许外界访问,因为开了端口号,windows才能对虚拟机的mysql进行访问。

# 开放3306端口
firewall-cmd --zone =public --add-port =3306/tcp --permanent

# 修改了防火墙配置需要重启防火墙服务
Systemctl restart firewalld

8.2 作用2:移出端口不允许外部连接

外网或内网不需要连接到当前系统内的程序进行操作,则 linux 系统关闭开放的程序端口。

命令:

firewall-cmd --zone =public --remove-port =端口/tcp --permanent

参数介绍:

  • firewall-cmd :配置防火墙命令
  • zone=public:设置管理的区域,public这是默认区域
  • –remove-port=端口/tcp:关闭指定端口
  • –permanent:持久性规则类型,永久性规则,代表持久化到访问墙配置文件中存储(但是需要重启服务器才可以加载到内存运行时才有效果)

eg:移除开放 mysql 软件的端口 3306,不允许外界访问

firewall-cmd  --zone =public  --remove-port =3306/tcp  --permanent
Systemctl restart firewalld

注意:如果外界还想访问mysql的话,也可以直接关闭防火墙即可。

systemctl stop firewalld

9. Linux的SSH有密登录和免密登录

SSH 是一种网络协议,是 Secure Shell(安全外壳协议)的缩写,用于计算机之间的加密登录。

SSH 登录有两种验证机制:

  1. 基于口令的安全验证(有密登录)

  2. 基于秘钥登录的验证方式(免密登录)

9.1 登录远程服务器

命令:

ssh ip地址

演示:

有密登录效果

万字长文超硬核详细学习系列——深入浅出Linux高级篇的知识点,值得你收藏学习必备_第29张图片

免密登录效果:要想实现免密,需要实现下面的步骤。

9.2 对称加密和非对称加密

ssh的主要就是安全性,安全性依赖于加密方式,现在主要的加密方式有两种:对称加密和非对称加密。

  • 对称加密

    万字长文超硬核详细学习系列——深入浅出Linux高级篇的知识点,值得你收藏学习必备_第30张图片

    对称加密使用同一个密钥来进行加密和解密,这样在传输时是安全可靠的,但是如何安全的保存密钥呢,在集群中,客户端的数量巨大,一旦任意一个客户端的密钥被窃取,那么整个系统的安全性也不复存在。

  • 非对称加密

    由于对称加密的这个弊端,产生了非对称加密,非对称加密中有两个密钥:公钥和私钥。公钥由私钥产生,但却无法推算出私钥;公钥加密后的密文,只能通过对应的私钥来解密。

    非对称加密的登录流程:

    万字长文超硬核详细学习系列——深入浅出Linux高级篇的知识点,值得你收藏学习必备_第31张图片

    在非对称加密中,由于只有公钥会被传输,而私钥是服务端本地保存,因此即便公钥被监听,也无法拿到原始密码,从而登录服务器。

9.3 SSH免密登录原理

万字长文超硬核详细学习系列——深入浅出Linux高级篇的知识点,值得你收藏学习必备_第32张图片

  1. 在客户端使用ssh-keygen生成一对密钥:公钥+私钥
  2. 将客户端公钥追加到服务端的authorized_key文件中,完成公钥认证操作
  3. 认证完成后,客户端向服务端发起登录请求,并传递公钥到服务端
  4. 服务端检索authorized_key文件,确认该公钥是否存在
  5. 如果存在该公钥,则生成随机数R,并用公钥来进行加密,生成公钥加密字符串pubKey(R)
  6. 将公钥加密字符串传递给客户端
  7. 客户端使用私钥解密公钥加密字符串,得到R
  8. 服务端和客户端通信时会产生一个会话ID(sessionKey),用MD5R和SessionKey进行加密,生成摘要(即MD5加密字符串)
  9. 客户端将生成的MD5加密字符串传给服务端
  10. 服务端同样生成MD5(R,SessionKey)加密字符串
  11. 如果客户端传来的加密字符串等于服务端自身生成的加密字符串,则认证成功
  12. 此时不用输入密码,即完成建连,可以开始远程执行shell命令了

9.4 实现免密登录

其他位置都是linux系统自动完成校验

  1. 在fish生成一对公钥和私钥 (generate, 生成),使用rsa算法

    ssh-keygen
    
  2. 将公钥发送给fishing服务器,必须给出fishing的密码fishing才接收公钥

    ssh-copy-id 192.168.66.128
    
  3. 发送登录请求,实现免密登录

演示过程:

万字长文超硬核详细学习系列——深入浅出Linux高级篇的知识点,值得你收藏学习必备_第33张图片

10. Linux的项目部署安装软件

这里的项目部署软件暂时是我们常用的jdk和mysql,其他那些可以网上搜索。

10.1 项目部署——软件安装命令rpm与yum

linux常用安装软件方式

  1. rpm安装, 适合本地安装
  2. yum安装, 适合在线网络下载安装

1. rpm

一种用于互联网下载包的打包及安装工具,它包含在某些 Linux分发版中。它生成具有RPM扩展名的文件。

RedHat Package Manager(RPM), 擅长安装软件

作用:

  • 查询已安装的软件
  • 安装软件
  • 卸载软件

命令:

  • rpm -qa :查询所有已安装软件
  • rpm -ivh 软件包 :安装指定的软件包
  • rpm -e --nodep 软件包 :不验证软件依赖相关性卸载指定软件包
  • rpm -ivhU * --nodeps --force :不验证依赖与相关、强制安装软件包,或将已存在的更新升级
    *代表安装当前目录下所有的rpm软件包

参数详情:

-v 显示安装的详细过程。
-q<软件名> query查询某个软件是否安装
-a 查询所有软件
-h 列出软件安装时的标记
-i<软件名> install安装指定的软件
-e 卸载软件
–nodeps 不验证软件相关关联性
– force 强制操作
-U 如果软件已存在会覆盖更新

2. yum

本地或在线下载安装命令:yum(全称为 Yellow dog Updater Modified)

作用:用于自动从服务器上下载相应的软件包,自动安装,并且自动下载它的依赖包。

使用yum的前提是可以联网。

命令:

yun -y install 软件名 :安装软件

yun -y remove 软件名 :删除软件

注意:使用yum安装的软件,就要使用yum卸载软件

3. rpm与yum的区别

方式 区别
yum在线下载安装方式 不仅下载当前软件包还会自动下载依赖的软件包安装;yum底层使用的是rpm,对rpm进行了进一步包装与优化
rpm在线下载安装方式 仅仅下载当前指定的软件包,对于依赖不会下载,所以在线下载rpm是麻烦的

10.2 项目部署——jdk安装

要在虚拟机中执行java代码,那就需要跟windows一样安装jdk啦

安装软件:

链接:https://pan.baidu.com/s/1vP6KAmj3bmn5uzEgU7p4EA
提取码:xwne

安装步骤:

  1. 进入/soft目录

    mkdir /soft
    cd /soft
    
  2. 将jdk软件上传到linux系统/soft目录下

    万字长文超硬核详细学习系列——深入浅出Linux高级篇的知识点,值得你收藏学习必备_第34张图片

    万字长文超硬核详细学习系列——深入浅出Linux高级篇的知识点,值得你收藏学习必备_第35张图片

  3. 将jdk压缩文件解压到/usr/local,执行以下命令即可:

    tar -xvf jdk-8u162-linux-x64.tar.gz -C /usr/local
    
  4. 配置linux的jdk环境变量,操作一个/etc/profile环境变量配置文件

    编辑配置文件配置环境变量

    vim /etc/profile
    

    在文件里面的末位添加如下配置

    #set java environment
    JAVA_HOME=/usr/local/jdk1.8.0_162
    CLASSPATH=.:$JAVA_HOME/lib
    PATH=$JAVA_HOME/bin:$PATH
    export JAVA_HOME CLASSPATH PATH
    

    万字长文超硬核详细学习系列——深入浅出Linux高级篇的知识点,值得你收藏学习必备_第36张图片

    $JAVA_HOME/bin:$PATH 类似 拼接字符串 变量1+=Path变量的值

    保存退出

  5. 重载环境变量配置文件

    source /etc/profile
    

    查看jdk环境变量是否配置成功,如下信息说明成功

    java -version
    

    万字长文超硬核详细学习系列——深入浅出Linux高级篇的知识点,值得你收藏学习必备_第37张图片

10.3 项目部署——mysql安装-启动-远程授权

1. 安装步骤:

  1. 解压安装文件(创建一个解压后的目录,再进行解压),跟之前一样先上传mysql

    cd /soft
    mkdir -p /usr/local/mysql
    tar -xvf mysql-community-5.6.45.tar.gz -C /usr/local/mysql
    

    万字长文超硬核详细学习系列——深入浅出Linux高级篇的知识点,值得你收藏学习必备_第38张图片

  2. 查看解压后的文件列表

    cd /usr/local/mysql
    ll
    

    万字长文超硬核详细学习系列——深入浅出Linux高级篇的知识点,值得你收藏学习必备_第39张图片

  3. 执行安装命令

    rpm -ivhU * --nodeps --force
    

    万字长文超硬核详细学习系列——深入浅出Linux高级篇的知识点,值得你收藏学习必备_第40张图片

2. mysql虚拟机内登录使用

  1. 启动mysql服务

    systemctl start mysqld
    

    将mysql加到系统服务中并设置开机启动【可以不用设置,默认mysql就开机启动】

    systemctl enable mysqld

  2. 登录mysql,root用户默认没有密码

    mysql -uroot -p
    

    万字长文超硬核详细学习系列——深入浅出Linux高级篇的知识点,值得你收藏学习必备_第41张图片

  3. 也可以在mysql中修改当前用户root的密码,密码修改为root

    set password = password('root'); 
    

3. mysql远程登录使用

  1. 开启mysql的远程登录权限,默认情况下mysql为安全起见,不支持远程登录mysql,所以需要设置开启,并且刷新权限缓存。

    万字长文超硬核详细学习系列——深入浅出Linux高级篇的知识点,值得你收藏学习必备_第42张图片

    远程登录mysql的权限登录mysql后输入如下命令

    grant all privileges on *.* to 'root'@'%' identified by 'root';
    
    flush privileges;
    

    万字长文超硬核详细学习系列——深入浅出Linux高级篇的知识点,值得你收藏学习必备_第43张图片

  2. 开放Linux的对外访问的端口3306

    注意:不可以在mysql里面操作防火墙开放端口,必须在系统内操作

    #开放的端口永久保存到防火墙
    firewall-cmd --zone=public --add-port=3306/tcp --permanent
    
    #重启防火墙
    systemctl restart firewalld
    
    # 或者是把防火墙给关了即可
    systemctl stop firewalld
    

  3. windows主机mysql客户端就可以连接啦!

    万字长文超硬核详细学习系列——深入浅出Linux高级篇的知识点,值得你收藏学习必备_第44张图片

10.4 项目部署——tomcat安装及启动

1. 安装步骤

  1. 解压安装文件到/usr/local目录下,跟之前一样需要先上传tomcat

    cd /soft
    
    tar -xvf apache-tomcat-8.5.27.tar.gz  -C /usr/local/
    

    万字长文超硬核详细学习系列——深入浅出Linux高级篇的知识点,值得你收藏学习必备_第45张图片

  2. 进入/usr/local/apache-tomcat-8.5.27/bin目录下,并启动tomcat服务器

    cd /usr/local/apache-tomcat-8.5.27/bin
    
    ./startup.sh
    

  3. 需要开放linux系统防火墙8080端口

    因为我们这时候去访问是无效的,跟之前MySQL访问一个问题。

    firewall-cmd --zone=public --add-port=8080/tcp --permanent
    
    systemctl restart firewalld
    
  4. windows客户端使用浏览器访问linux的8080端口tomcat

    万字长文超硬核详细学习系列——深入浅出Linux高级篇的知识点,值得你收藏学习必备_第46张图片

  5. 让我们试下创建html界面访问吧:

    cd ..
    cd webapps/ROOT/
    vim fish.html
    

    最后我们通过网页访问看看:

    万字长文超硬核详细学习系列——深入浅出Linux高级篇的知识点,值得你收藏学习必备_第47张图片

  6. 进入bin目录下,关闭服务器。关闭服务器以后,浏览器不能再访问

    ./shutdown.sh
    

11. 完结撒花

万字长文超硬核详细学习系列——深入浅出Linux高级篇的知识点,值得你收藏学习必备_第48张图片

让我们总结下今天到底学了什么:

用户管理:
添加用户:
useradd [选项] 用户名:创建一个用户
password 用户名:给用户名指定密码

删除用户:userdel [选项] 用户名

查询用户:id 用户名

切换用户: su - 用户名

用户组:
groupadd 用户组 :增加组
groupadd 用户组  :删除组
useradd -g 用户组 用户名:增加用户时加组
usermod -g 用户组 用户名 : 修改用户的组

文件权限:
chmod g+w hhh:添加权限
chmod g-w hhh:删除权限
chmod g=rw hhh:修改权限

进程管理:
查看进程:ps -aux
查看内存:top
杀死进程:kill [选项] 进程号

筛选过滤:
grep| :ps -aux | grep sshd


定时任务:
6,12 3-4 * * * command --> 每天上午3点到4点的第6和第12分钟执行

服务管理:
sysytemctl 【选项】 服务名

网络管理:
hostname:查看计算机的名字
netstat:可以查看出系统网络的情况

防火墙管理:
systemctl status firewalld:查看防火墙的状态
firewall-cmd  --zone =public  --add-port =端口/tcp  --permanent:开放某个端口

相信各位看官都对Linux的一些高级命令有了一定了解,在实际应用中,企业都会在Linux中部署项目做为生产环境!所以Linux的学习也是必不可少滴!

让我们也一起加油吧!本人不才,如有什么缺漏、错误的地方,也欢迎各位人才大佬评论中批评指正!当然如果这篇文章确定对你有点小小帮助的话,也请亲切可爱的人才大佬们给个点赞、收藏下吧,一键三连,非常感谢!

万字长文超硬核详细学习系列——深入浅出Linux高级篇的知识点,值得你收藏学习必备_第49张图片

学到这里,今天的世界打烊了,晚安!虽然这篇文章完结了,但是我还在,永不完结。我会努力保持写文章。来日方长,何惧车遥马慢!

感谢各位看到这里!愿你韶华不负,青春无悔!

万字长文超硬核详细学习系列——深入浅出Linux高级篇的知识点,值得你收藏学习必备_第50张图片

你可能感兴趣的:(学习之路系列,运维,linux,操作系统)