Linux入门基础完整版【详解】

目录

一、Linux服务器介绍

二、搭建Linux服务器

1、windows环境下vmware虚拟机的安装

2、linux CentOS7系统的安装

(1)新建虚拟机

(2)编辑虚拟器设置

(3)添加操作系统

(4)开启虚拟机

3、vmware虚拟机的三种网络模式的设置介绍

(1)Bridged桥接模式

(2)Host-Only仅主机模式

(3)NAT模式

4、Linux Centos7的网络设置

(1)全局网络配置

(2)单台虚拟机配置

# Bridged桥接模式

Host-Only仅主机模式

NAT模式

(3)三种模式对比

5、Linux远程连接工具的使用

(1)检查网络畅通

(2)打开SecureCRT 64

(3)设置字体

(4)设置复制粘贴操作

(5)上传文件功能

(6)下载文件功能

6、虚拟机的快速克隆与快照恢复

(1)虚拟机克隆

(2)快照恢复

三、Linux常用操作

1、工作中常用的基础命令

2、Linux下输入输出错误重定向

(1)输入输出错误重定向理解

(2)输入输出错误重定向实操

输入重定向

输出重定向

错误重定向

(3)其他符号

3、Linux下的目录分类与作用

(1)CentOS7下常见的目录作用

目录描述

挂载光盘命令

(2)路径理解

4、虚拟机中Centos7与外部物理机的时间同步

(1)前提

(2)获取VMware Tools软件包

(3)安装VMware Tools

(4)date命令使用

5、Linux编辑神器vi的使用

(1)vi的基本概念

(2)命令行模式操作

(3)底行模式操作

6、Linux的用户管理与组管理

(1)Linux理解

(2)Linux用户的分类

(3)用户的相关配置文件

(4)用户相关命令

(5)创建用户示例

7、Linux必备核心知识之文件属性与权限操作

(1)文件属性

 #文件显示解读

链接

(2)文件权限更改

(3)文件所有者/所属组修改

8、Linux 的文件归档与解压缩详细介绍

(1)文件归档

(2)文件压缩

(3)压缩与解压缩命令

(3)归档/解档/压缩/解压命令

四、Linux核心命令

1、Linux搜索-find命令高级用法

(1)基本用法

(2)高级用法

命令使用解析

命令相关参数

2、CentOS7防火墙以及selinux介绍

(1)防火墙

防火墙理解

设置防火墙相关命令

(2)SELinux介绍

3、linux服务器之间telnet与scp命令用法

(1)telnet命令

(2)scp命令

4、Linux进程管理命令之 ps -ef 与 ps aux 详解

5、处理海量数据之cut命令

(1)cut应用场景

(2)语法

(3)示例

6、处理海量数据之awk命令

(1)awk简介

(2)awk应用场景

(3)awk语法

(4)awk特殊要点以及举例说明

7、处理海量数据之sed命令

(1)sed应用场景

(2)sed语法

(3)sed常见选项与参数

五、Linux服务器常用企业服务安装

1、rpm方式介绍

(1)rpm安装

(2)rpm安装优点

(3)rpm安装缺点

(4)rpm包命名规则

(5)安装rpm软件包

(6)rpm包下载地址

(7)rpm查询功能

(8)rpm包升级

(9)rpm包卸载

2、yum方式介绍

(1)yum安装介绍

(2)yum安装优缺点

(3)配置本地yum源

(4)yum安装方式的使用

3、源码编译安装方式介绍

(1)源码编译安装优缺点

(2)安装步骤

4、JDK8安装实战

(1)下载jdk官网

(2)全局环境变量的配置文件

(3)加载环境变量

(4)验证是否安装成功

5、部署tomcat网站服务器

(1)Tomcat定义

(2)Tomcat下载

(3)Tomat解压

(4)Tomat重要目录介绍

(5)启动Tomat

(6)查看是否监听tomcat

(7)测试能否访问测试页面

6、部署apache网站服务器

(1)Apache介绍

(2)源码编译安装Apache

第一步:下载组件 apr 并解压

第二步:下载组件 apr-util 并解压

第三步:下载 apache 并解压

第四步:安装 gcc 环境

第五步:安装 zlib-devel 库

第六步:安装 xml 解析器

第七步:下载并安装 pcre 正则表达式库

第八步:把组件apr与组件apr-util拷贝进apache安装包

第九步:进入apache安装包使用./configure进行环境收集检验与配置

第十步:编译并安装apache

第十一步:设置服务器名称

第十二步:测试并启停apache服务器

7、部署nginx网站服务器

(1)nginx简介

(2)nginx优点

(3)nginx缺点

(4)编译安装nginx

第一步:安装gcc编译环境

第二步:安装zlib-devel库

第三步:安装OpenSSL密码库

第四步:安装pcre正则表达式库

第五步:下载编译安装Nginx

第六步:启停Nginx服务

8、安装mysql5.7.17数据库服务器

(1)mysql简介

(2)准备工作

第一步:关闭防火墙

第二步:关闭selinux

第三步:安装 cmake 工具

第四步:下载boost库/mysql安装包

第五步:yum安装其他依赖组件

第六步:创建路径

第七步:创建mysql用户

(3)使用cmake工具对mysql5.7.17进行环境收集检验与配置相关模块

(4)编译并安装

(5)初始化mysql

(6)对mysql的相关路径进行更改权限

(7)修改配置文件

(8)启停mysql

(9)登录mysql

(10)修改mysql密码

(11)添加MySQL服务并设置mysql开机启动

(12)使用 mysql -uroot -p 登录服务器

9、部署php服务与nginx的整合

(1)PHP介绍

(2)源码编译安装

第一步:安装依赖组件

第二步:解压php安装包

第三步:使用./configure进行环境收集检验与配置

第四步:编译安装

(3)修改php服务器配置文件

(4)启停php服务器

(5)整合nginx测试php

(6)在nginx的网站发布路径下创建index.php文件

(7)测试是否安装成功

六、Linux下Shell脚本编程介绍

1、shell编程语言的介绍

(1)shell简介

(2)常见的脚本语言

(3)shell优点

(4)shell应用场景

2、shell编写第一个脚本

(1)编写脚本

(2)执行脚本

3、shell脚本与crontab定时器的运用

(1)crond服务

(2)crond服务的启停命令

(3)crontab定时器的使用

(4)crontab示例

4、利用shell脚本企业实战nginx日志切割

(1)需求

(2)脚本

七、企业实战

1、企业实战静态ip地址配置

(1)使用NAT模式

(2)修改ip地址为静态

(3)重启网卡

(4)ping不通域名

(5)alias命令实现别名

2、CentOS7实战修改linux系统主机名

(1)查看主机名命令

(2)修改主机名的命令

(3)修改后重启使之生效

(4)修改/etc/hosts文件

(5)测试能否ping通

3、CentOS7实战ssh免密远程登录其它机器

(1)执行命令创建密钥

(2)拷贝密钥至YYLCS2服务器

(3)测试能不能免密登录YYLCS2

4、CentOS7实战搭建nfs文件共享服务器

(1)NFS介绍

(2)NFS体系组成

(3)环境准备

(4)在A服务端机器安装nfs-utils和rpcbind包

(5)检查是否启动了rpcbind服务并监听着 111端口

(6)配置NFS服务的配置文件

(7)启动nfs服务

(8)设置开机启动

(9)在B客户端机器安装nfs-utils和rpcbind包

(10)设置rpcbind服务开机启动

(12)挂载

5、CentOS7 实战部署ftp文件传输服务器(一)

(1)FTP文件服务器概述

(2)FTP数据连接模式

(3)FTP服务器软件的种类

(4)FTP用户类型

(5)搭建匿名访问 vsftpd 服务

(6)配置本地用户访问 vsftpd 服务

6、CentOS7 实战部署ftp文件传输服务器(二)

(1)配置虚拟用户的 vsftpd 服务

第一步:指定 pam 文件

第二步:编辑 pam 文件,指定认证的db 文件

​​​​​​​第三步:生成 db 文件

​​​​​​​第四步:修改配置文件

第五步:对虚拟用户权限与路径进行配置

(2)配置系统用户的 FTP与配置虚拟用户的 FTP 共存


Linux入门基础完整版【详解】

一、Linux服务器介绍

Linux 是一个免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX UNIX 的多用户、多任务、支持多线程和多 CPU 性能稳定的网络操作系统。 linux 的内核最初是由一个芬兰的大学生因为个人兴趣爱好而编写的,这个大学生的名字叫林纳斯 · 托瓦兹( Linus Torvalds) 目前市面上较知名的发行版有: Ubuntu RedHat CentOS Debian Fedora SuSE、 OpenSUSE ArchLinux、 SolusOS 等,其中这个 是一个企业级的发行版,特别适合对稳定性,可靠性和功能要求较高的用户。

二、搭建Linux服务器

1、windows环境下vmware虚拟机的安装

下载安装包,双击点击安装,遇到下图选择其中框起来的即可

安装完成后如果要输入许可证密钥,在网上找一个可以用的密钥填进去就行了~

VM虚拟机主界面显示如下图所示:

2、linux CentOS7系统的安装

必备:下载好centos7系统镜像文件

(1)新建虚拟机

点击创建新的虚拟机,选择稍后安装操作系统,操作系统选择Linux,版本选择Centos 7 64位

下一步给虚拟机起名,以及选择安装路径,一个虚拟机大概会占用3-4G的内存(我这里选择装在D盘)

这里是要给当前新建的服务器安排多少的内存空间,一般选择40G就差不多了(看个人情况)

这里点击自定义硬件,需要处理两点

  • 移除无用设备:移除掉一些无必要的设备,
  • 虚拟内存修改:内存这里需要根据外部物理主机,也就是我们自己电脑的性能条件进行设置,我电脑当前有16GB的内存,因此后续为了系统效率更高,可以将虚拟机内存设置大一点,我这里分配了4GB
  • 处理器:数量以及内核都分配2个,安装操作系统效率会更高

(2)编辑虚拟器设置

若新建虚拟机时没配置好,我们也可以点击【编辑虚拟器设置】继续编辑虚拟器

(3)添加操作系统

点击编辑虚拟器设置,在硬件处点击CD/DVD,选择之前下载的ISO映像文件,最后点击确定

(4)开启虚拟机

点击【开启此虚拟机】按钮,这里我们选择第一个,进行安装centos 7

这里弹出一个界面选择语言,我们选择英语

接下来有几个配置:

  • 【DATE&TIME】,其中地区选择亚洲,城市这里我选择了重庆
  • 键盘【KEYBOARD】直接选择默认
  • 磁盘分区我们一般选择自动即可
  • 设置中的网络选择看个人,后续可以再打开或者关闭

配置设置完后,点击右下角的【Begin installation】进行安装

安装时会出现设置密码和普通用户的情况,根据个人情况设置即可(我这里设置了密码123)

安装完成之后,点击右下角Reboot重启虚拟机登录我们的虚拟服务器

用户名即为root

密码为之前设置的密码,我这里是123

从下图可以看到,我们已经登录成功啦

3、vmware虚拟机的三种网络模式的设置介绍

vmware虚拟机有对应三种网络模式,分别是:Bridged桥接模式、Host-Only仅主机模式、NAT模式,下面简单介绍下三种网络模式的特点

(1)Bridged桥接模式

  • 默认使用 VMnet0 ,不提供 DHCP 服务( DHCP 服务是指由服务器控制的一段 IP 地址范围,当客户机登录服务器时会自动获取服务器分配的IP 地址与子网掩码)
  • 虚拟机与外部主机需要在同一个网段上,与局域网的其它机器没有区别
  • 可以与局域网内其它主机通信,可以与外部网络通信
  • 容易与局域网其他主机引起ip 地址冲突

(2)Host-Only仅主机模式

  • 默认使用VMnet1,提供DHCP服务
  • 虚拟机可以和物理主机互相访问,但虚拟机无法访问外部网络

(3)NAT模式

  • 默认使用VMnet8,提供DHCP服务
  •  虚拟机可以和物理主机互相访问,可访问外部网络
  •  局域网内其它机器访问不了

4、Linux Centos7的网络设置

(1)全局网络配置

点击编辑->虚拟网络编辑器,可以看到三种模式,桥接模式可以选择具体网卡(自动、无线网卡、有线网卡),我这里选择自动

(2)单台虚拟机配置

选择要配置的单台虚拟机,右键点击设置进入虚拟机设置界面,再点击网络适配器选择网络连接

Bridged桥接模式

在虚拟机设置中网络连接若选择桥接模式,直接勾选即可,如下图:

更改了网络设置,若想要让它生效,有两个方法:

  • 法1:重启主机
  • 法2:重启网卡

重启主机花费时间较多,因此重启网卡即可,桥接模式中的主机和外部物理主机基本处于同一个局域网,网络之间可以互相通信

Host-Only仅主机模式

在虚拟机设置中网络连接勾选仅主机模式,点击确定,且重启网卡使网络生效

【ping ip地址】可查看到该虚拟机可以和物理主机互相访问,但虚拟机无法访问外部网络

NAT模式

在虚拟机设置中网络连接勾选仅主机模式,点击确定,且重启网卡使网络生效

【ping ip地址】可查看到该虚拟机可以和物理主机互相访问,可访问外部网络

操作命令

操作命令
重启主机reboot
重启网卡systemctl restart network.service
查看ip地址ip addr
检测网络是否畅通ping ip地址
结束ping命令摁住 ctrl + c 键盘即可退出ping命令
清屏摁住 ctrl + l 

(3)三种模式对比

网络模式访问条件IP冲突
Bridged桥接模式可以访问外网容易与局域网的其他机器ip地址冲突
Host-Only仅主机模式一般不能访问外网不会与局域网的其他机器ip地址冲突
NAT模式可以访问外网不会与局域网的其他机器ip地址冲突

注意:为了提供不同的测试环境,有的需要虚拟机与局域网内的其他机器环境隔离,有的不需要,因此出现了这么多模式

5、Linux远程连接工具的使用

(1)检查网络畅通

使用前要确保虚拟机与物理主机网络畅通,我们分别在虚拟机以及物理主机进行ping

(2)打开SecureCRT 64

我这里使用的是SecureCRT 64,双击打开应用程序

获取到目标虚拟机的ip地址,填入这里的主机名称,用户名我这里只有一个root,其他暂时为默认值,点击连接

如图:已经连接成功了

(3)设置字体

选项->会话选项->外观,设置背景颜色,字体大小以及字符编码为UTF-8,设置好后保存

(4)设置复制粘贴操作

选项->全局选项->终端,选中这里的鼠标设置即可

(5)上传文件功能

传输->Zmodem上传列表,点击文件进行上传服务器

第一次上传时会弹出rz命令没找到的提示,则需要安装下rz命令(确认服务器可以联外网)

安装上传下载功能lrzsz服务:yum -y install lrzsz 

安装完成后再次点击开始上传按钮,如下图可以看到文件上传成功,使用 ll 命令可以看到文件具体上传地方

(6)下载文件功能

在窗口输入命令直接下载文件,命令如下:

sz 文件名

备注:文件的上传下载路径可以设置,选项->会话选项->终端->X/Y/Zmodem

6、虚拟机的快速克隆与快照恢复

(1)虚拟机克隆

右键虚拟机->管理->克隆,需要注意的是,开启或挂起的虚拟机无法被克隆

如上图,这样就克隆好了一台新的虚拟机,克隆机与原来的虚拟机网络设置、密码等都一致

注意事项:

克隆后的虚拟机重启网卡会失败,如下图:

查询机器网卡:cat /etc/sysconfig/network-scripts/ifcfg-eno16777728(摁住键盘的tab键可以对命令进行补全 )

原因是因为克隆过来的虚拟机把原虚拟机的MAC地址也一起复制过来了,正常情况下虚拟机MAC地址都是唯一的,因此需要修改MAC地址

查看一个虚拟机的MAC地址(两种方法):

  • ip addr
  • 设置->虚拟机设置->网络适配器->高级->MAC地址

拿到克隆机原本的MAC地址后,修改网卡信息-MAC地址

使用 vi 工具进行编辑网卡信息: vi /etc/sysconfig/network-scripts/ifcfg-eno16777728 (摁住键盘的【i】 进入编辑模式,按住键盘左上角【esc】键退出编辑模式,再输入【:wq 】进行保存)

(2)快照恢复

快照相当于备份,我们进行操作的时候,有时候会导致一些不可逆的错误发生,比如删除了某些文件造成数据丢失,这时候就可以通过快照恢复

创建快照的方法:

虚拟机右键->快照->拍摄快照,填写快照名称以及描述,点击确定后,就新建好了一个快照

如果要恢复快照的话,必须关闭虚拟机进行恢复(一般除非做出了不可逆的操作,否则不太会进行快照恢复)

恢复快照步骤:

虚拟机右键->快照->快照管理器,选择快照节点,右键选择转到快照

注意:我们恢复快照相当于做逆反操作,恢复之前某个时刻的状态,但恢复后就无法再次回到当前状态了(恢复快照前要仔细考虑)

三、Linux常用操作

1、工作中常用的基础命令

命令功能说明举例
cd切换目录

cd /usr/local/    (切换至当前目录)

cd ..                 (返回上一级目录)

cd -                  (回退到上一次目录)

ls列出目录内容

ls -lrt     缩写为 ll          -----时间升序显示

ls -alrt             ---显示隐藏文件

ls -lrt /home/   ---显示home目录下的内容

pwd查询所在目录pwd
cat查看小文件内容

cat 123.txt       ----查看目标文件内容

cat -n 123.txt   ---查看文件内容且给每行排序

more查看大文件内容more System.map-3.10.0-123.el7.x86_64 (可以嗯【Q】键退出查看)
head查看文件的前面N行

head System.map-3.10.0-123.el7.x86_64          (默认查看文件前10行)

head -20 System.map-3.10.0-123.el7.x86_64    (查看文件前20行-自定义)

tail查看文件的后面N行

tail System.map-3.10.0-123.el7.x86_64         (默认查看文件后10行)

tail -20 System.map-3.10.0-123.el7.x86_64   (查看文件后20行-自定义)

tail -f access.log       (动态查看日志文件)

tail -20 access.log    (动态查看文件后20行)

touch创建一个空文件touch 123.txt
mkdir创建目录mkdir -p /tmp/YYL/YYL/class      (以绝对值方式创建套层目录)
rmdir删除目录rmdir /tmp/YYL/YYL/class             (删除目录)
cp拷贝文件

cp 123.txt class/                   (拷贝文件到class目录)

cp 123.txt class/456.txt         (拷贝文件到class目录并改名为456,但文件某些属性没复制过来)

cp -a 123.txt class/789.txt     (拷贝文件到class目录并改名为789,文件属性也一起复制过来)

mv移动或更名现有的文件或目录

mv 123.txt 345.php              (将文件更名)

mv 456.txt /home/                (将文件移动至home文件夹下)

mv 789.txt /home/987.php   (将文件移动至home文件夹下且更名为987)

rm删除文件或目录

rm 987.php    (删除文件,会弹出是否删除的提示,且目录不能删除)

rm -rf 456.txt    (直接删除文件,且什么都可以删除)

diff对比文件差异diff 123.txt 456.txt
ssh远程安全登录方式ssh 192.168.213.129 (根据ip地址切换主机)
exit退出命令exit  (切换主机后再退回来,原主机所在目录不做改变)
id查看用户id root
uname查询主机信息uname -a    (详细主机信息)
ping查看网络是否畅通ping 192.168.213.129
echo标准输出命令echo "this is echo 命令"
man查看帮助文档

man ls     (ls命令的具体使用)

ls --help     (同man命令类似,只不过是全部打印出来)

help查看内部命令帮助help if      (if命令的具体使用)
clear清屏

clear

等同于 ctrl + l

who当前在本地系统上的所有用户的信息

who

whoami   (查看当前是哪个用户)

uptime查询系统信息其中显示信息:load average:0.00,0.01,0.05     (1分钟的负载,5分钟的负载,15分钟的负载)
w查询系统信息w   (who与uptime的结合查询)
free查看系统内存

free -h       (会同时显示出单位)

free -m      (以m为单位显示)

wc统计行

wc -l 123.txt     (文件中有多少行)

grep查找文件里符合条件的字符串

grep '119.4.253.206' 123.txt             (找到文件里有多少该字符串,都展示出来)

grep '119.4.253.206' 123.txt | wc -l    (找到文件里有多少该字符串-统计个数)

-n(输出行数)   grep -n '80.82.70.187' 123.txt       (如果出现多个,则分别输出)

-w(精确匹配)   grep -w '113.66.107.198' 123.txt   (精确匹配出该字符串)

-i(忽略大小写) grep -i 'IP:113.66.107.198' 123.txt 

-v(反向选择)    grep -v '113.66.107.198' 123.txt    (筛选出非当前字符串的内容)

find查询文件

find / -name 123.txt               (查询文件的所有路径-可能会查出来目录,但不建议,因为很耗性能)

find / -type f -name 123.txt     (查找路径,限定文件)

uniq对排序好的内容进行统计uniq -c 123.txt | sort -n
sort对内容进行排序uniq -c 123.txt | sort -n     (排序以及统计个数)
df文件系统的磁盘使用情况统计df -h
netstat查看网络端口的使用情况

netstat -tunlp | grep nginx      (查看nginx程序所在端口)

-t:显示TCP端口

-u:显示UDP端口

-n:指明拒绝显示别名

-l:指明listen(监听)的意思

-p:指明显示建立相关链接的程序名

安装netstat命令:yum -y install net-tools

hostname查看主机名hostname
ps显示所有进程信息(ps与grep组合使用,查找特定进程)

ps -ef                               (显示所有进程信息)

ps -ef | grep nginx           (显示grep命令的进程)

ps -ef | grep -v grep | grep nginx    (显示非grep命令的进程)

ps -aux | grep nginx        (会同时显示出CPU以及内存情况)

kill杀进程

kill -l               (查看kill的使用信号)

kill -9 top        (杀掉top命令进程 ) 

摁住【ctrl+c】相当于传递了kill中2的信号

top监控Linux系统状况,比如cpu、内存的使用摁住键盘【Q】退出
du统计大小

du -sh          (统计当前目录下所有文件大小)

du -sm *     (以m为单位统计文件大小)

firewall-cmd查看防火墙的状态

firewall-cmd --state

centos 7 关闭防火墙:systemctl stop firewalld.service

echo判断上一条命令是否正确

echo '1234'     (打印1234在命令行上面)

echo $?          (判断上一条命令执行是否正确,正确显示0,非0就是未执行正确)

cal查看日历cal 2008         (查询2008年的月份日期)

2、Linux下输入输出错误重定向

(1)输入输出错误重定向理解

  • 输入重定向:把要输入的信息写入到指定的文件中去
  • 输出重定向:把要输出的信息写入到一个文件中去,而不是将要输出的文件信息输出到控制台(显示屏)
  • 错误重定向:把错误的信息写入到一个文件中去

Linux中一切皆文件,文件描述符如下:

posix名称文件描述符用途
/dev/stdin0标准输入
/dev/stdout1标准输出
/dev/stderr2标准错误输出

(2)输入输出错误重定向实操

输入重定向
  • 符号:【<】
  • 示例:
wc -l < 123.txt
输出重定向
  • 符号:【>       #代表覆盖写入】【>>        代表追加写入】
  • 示例:
cat >> 123.txt             //向123.txt文件中输入追加内容,不会覆盖已有内容
cat > 123.txt              //向123.txt文件中输入内容,会覆盖已有内容
ls -lrt > 123.txt          //将ls -lrt显示的信息输入到123.txt文件中,会覆盖已有内容
echo '12345' > 123.txt     //使用echo命令输入信息到123.txt文件中,会覆盖已有内容
错误重定向

示例:

llll 2> 123.txt        //llll报错信息输出到123文件中
llll 2> /dev/null      //错误信息不需要了解,就可以输出到无底洞里边

(3)其他符号

符号功能说明示例
&等同于

ls -lrt /boot /test 1>/root/123.txt 2>/root/123.txt   (查看boot目录以及text目录下的内容,这里判断boot目录下有内容,则写入了123文件,但test目录不存在,错误重定向并没有写入文件)

ls -lrt /boot /test 1>/root/123.txt 2>&1            (错误的输出信息等同于正确的信息输入,即输入至123文件)

&>不区分正确还是错误ls -lrt /boot /test &>123.txt    (不区分正确错误信息,全部输入到123文件)
|管道符cat /etc/passwd | grep root      (查看密码文件信息通过管道符传输给grep,显示出来关于root的信息)
;可以执行多条命令cat /etc/passwd | grep root ; ls -lrt     (同时执行多条命令)
&&前面的命令执行成功的话后面的才可以执行成功;前面的命令执行失败后面的就不可以执行llll && echo 123
||前面的命令执行成功的话,后面的不可以执行;前面的命令执行失败的话,后面的才可以执行

llll || echo 123      (前面命名执行失败,后面可以执行)

ls || echo 123       (前面命名执行成功,后面不可以执行)

3、Linux下的目录分类与作用

(1)CentOS7下常见的目录作用

目录描述

下面列举一些根目录下常用的目录,便于我们更快了解虚拟机架构

目录描述
/根目录,一般根目录下只存放目录,不要存放文件,也不要修改/删除目录下的内容
/mnt用于测试的目录
/rootroot用户的家目录
/home普通用户的家目录
/tmp临时目录(比如文件上传之类的)
/var存放经常修改的数据,比如程序运行的日志文件
/boot存放启动Linux时使用的内核文件,包括连接文件以及镜像文件(原则上该目录不允许操作)
/etc系统默认存放配置文件的地方
/bin所有用户都能执行的程序
/sbin只有root才能执行的程序
/usr用户自己的软件都可以放到这儿来
/dev存放硬件设备的地方(/dev/cdrom)
/media挂载光盘的地方
挂载光盘命令
命令功能说明
mount /dev/cdrom /media挂载光盘
umount /dev/cdrom卸载光盘
df -h查看挂载光盘

(2)路径理解

  • 绝对路径:即完整的路径
  • 相对路径:相对于当前位置的路径(./代表的是当前目录; ../代表的是上一级目录)

4、虚拟机中Centos7与外部物理机的时间同步

(1)前提

一般情况下,新安装的虚拟机同外部物理机的时间不一致,这是因为我们未安装VMware Tools工具,因此需要安装该工具

(2)获取VMware Tools软件包

在VM中右键虚拟机->安装VMware Tools,VM软件会自动帮我们下载VMware Tools工具到光盘中,再把光盘挂载在Linux系统中(由于VM软件的限制,安装结果没有弹框提示,我们可以试图挂载,以此来观察工具是否下载完成)

(3)安装VMware Tools

安装步骤:

1、安装VMware Tools 使工具软件包下载到光盘

2、挂载光盘到Linux系统

3、复制安装包到root目录【cp VMwareTools-10.3.23-16594550.tar.gz /root/】

4、卸载光盘【umount /dev/cdrom】

5、解压安装包【tar -xf VMwareTools-10.3.23-16594550.tar.gz】

6、进入解压缩包【cd vmware-tools-distrib】

7、安装Perl【yum -y install perl-Data-Dumper】

8、点击安装VMware Tools【./vmware-install.pl】

安装时一路摁住键盘的回车键即可(都选用默认路径),安装完成后验证是否安装成功,有两种验证方法:

命令功能说明
echo $?验证是否安装成功,返回0就是成功(echo命令本身就可以判断上一条命令是否正确)
date "+%Y-%m_%d %H:%M:%S"验证虚拟机时间是否与外部物理机的时间同步(若不同步,则重启主机即可)

(4)date命令使用

可以使用date命令去查看当前时间

命令功能说明
date查看当前时间(不美观)
date "+%Y-%m_%d %H:%M:%S"显示年-月-日 时:分:秒  (如 2024-03_05 05:22:14)
date -s "2020-10-1 22:00:00"更改时间为 2020-10-1 22:00:00
date -d yesterday "+%Y-%m-%d %H:%M:%S"查看当前时间的前一天的时间
date "+%w"查看今天是周几

 注意:卸载的光盘的时候会出现如下报错

[root@localhost media]umount /dev/cdrom
umount: /media: target is busy.
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))
[root@localhost media]

解决方法:

首先确认目前是联网状态,接下来需要安装 fuser 工具,用来查看光盘使用情况 ,接着杀掉光盘使用进程即可

安装fuser工具:yum install -y psmisc
查看光盘使用情况:fuser -mv /media
取消挂载盘符:fuser -kv /media

5、Linux编辑神器vi的使用

(1)vi的基本概念

vi的三种模式:命令模式、插入模式、底行模式

使用vi命令则进入命令模式,不可编辑,摁住键盘的 i 或者 o 或者 a,进入插入模式,编辑我们想要的内容;内容编辑完成后,再摁住键盘的左上角esc键盘,切入命令模式;在命令模式输入【:】进入底行模式,在底行模式还可以做其他的一些操作

  • 进入插入模式:摁住键盘的 i 或者 o 或者 a
  • 进入命令模式:摁住键盘的左上角esc键盘
  • 进入底行模式:前提是得在命令模式输入【:】进入

(2)命令行模式操作

命令功能说明
Esc进入命令行模式
$          /     【shift + 4】移动到这一行的行尾
gg移动到文档第一行行首
G移动到文档最后一行行首
x删除内容,删除一个字符【光标所在字符】
dd删除光标所在的那一整行
u

复原原来的操作

v点击【v】后进入复制,按上下左右键选中范围,再按【y】就能复制
p粘贴

(3)底行模式操作

命令功能说明
nn为数字,光标移动到第n行
/寻找内容,光标移到目标行行首
%s/word1/word2/g从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2【word1字符串实现全文档替换】
n1,n2s/word1/word2/gn1 与 n2 为数字,在第 n1 与 n2行之间寻找 word1这个字符串,并将该字符串取代为 word2
set nu显示每一行的行号
set nonu取消行号
q!强制离开不保存
wq离开并保存
wq!强制离开并保存
!相当于暂时离开,可以在【!】后直接输入命令进行别的操作

6、Linux的用户管理与组管理

(1)Linux理解

Linux是一个多用户、多任务的操作系统

(2)Linux用户的分类

分类权限UID
超级用户root拥有至高无上的权限UID:0
普通用户权限有一定的限制,可以登录系统,一般可以执行 /usr/local/bin 或者 /bin 或者 /usr/bin 或者自己家目录的命令UID:500-60000(centos 6)UID:1000-60000(centos7)
系统用户(伪用户)一般不会登录系统,一般情况是用来维持某个服务程序

UID:1-499(centos 6)

UID:1-1000(centos 7)

(3)用户的相关配置文件

  • 账号信息:/etc/password
  • 密码信息:/etc/shadow
test    :x                   :1000      :1000             :                :/home/test                :/bin/bash 用户   密码占位符     UID        GID          用户描述       用户家目录        登录后使用的 shell 解释 /sbin/nologin        # 是不可登录的 /bin/bash             # 可以登录

(4)用户相关命令

命令命令属性大功能各属性功能说明
useradd-u添加用户命令指定用户UID
-d指定用户主目录
-g指定用户所属组
-r指定用户是系统用户
-s用户登录shell解释器
-M不创建主目录
userdel-r删除用户命令连同家目录一块删除
groupadd添加用户组命令
groupdel删除用户组命令
usermod-u修改用户的信息命令指定用户UID
-d指定用户主目录
-g指定用户所属组
passwd YYL设置用户密码命令passwd
echo "123456" | passwd --stdin YYL

(5)创建用户示例

创建一个用户YYL,指定UID为1010,指定家目录为/home/YYL,指定所属组为root组,指定登录shell为/bin/bash

useradd -u 1010 -d /home/YYL -g root -s /bin/bash YYL

注意:登录用户时出现以下信息如何解决

如:

bash-4.2$

bash-4.2$

这是因为家目录下缺少一些东西,在/etc/ske1/路径下将相关信息复制进系统用户家目录即可

解决:复制相关信息到家目录

cp -r /etc/skel/.bash* /home/YYL/

7、Linux必备核心知识之文件属性与权限操作

(1)文件属性

ls -lrti查看文件的属性

 #文件显示解读
135140482 -rw-------. 1 root root    1902 Oct  1  2020 yum.log
第一列i节点i节点可以理解文件id,一个i节点可以对应多个文件,一个文件只能对应一个i节点
第二列-文件的类型与权限- #代表的是文件d #代表的是目录l #软链接文件b #代表块设备c #代表的是硬件设备(键盘)
r #表示读权限w #表示写权限x #表示执行权限
4 #表示读权限2 #表示写权限1 #表示执行权限
rw-------rw- #第一列为所属者的权限--- #第二列为所属组的权限--- #第三列为其他的权限
第三列有多少文件名链接到这个节点
第四列文件的所有者
第五列文件的所有组
第六列容量大小,单位默认为B
第七列创建或最近修改的时间
第八列文件名
链接
分类命令例如举例
软链接ln -sln -s /home/YYL/yum.log /usr/locali 节点跟源文件不一样,源文件一旦删除,软链接将找不到源文件
硬链接lnln /home/YYL/yum.log /usr/local/YYL/i 节点与源文件一模一样,源文件删除,硬链接还可以继续使用,常用于防止重要文件被误删

(2)文件权限更改

命令参数举例
chmod无参chmod u+x,g+w+o+w boot.log
chmod u-x,g-w+o-w boot.log
chmod 777 boot.log
-R    #递归的意思chmod -R 777 /home/YYL/*

(3)文件所有者/所属组修改

命令参数举例解释
chown-Rchown -R root:YYL YYL递归更改文件目录YYL的所属者为root用户 跟 所属组为YYL组

8、Linux 的文件归档与解压缩详细介绍

(1)文件归档

文件归档也称之为打包,指的是一个文件或者多个文件或者目录的一个集合,这个集合存储在一个文件中;归档的文件是没有进行压缩的,所以占用的空间是所有文件或者目录的总和(工作中经常与压缩结合在一起使用)

(2)文件压缩

节约磁盘空间,加快文件的传输速率

(3)压缩与解压缩命令

压缩与解压缩有两种命令:gzip 、xz,区别如下:

  • gzip:不能压缩目录,只能压缩文件,压缩速度最快,但是1压缩比例较低,扩展名【.gz】
  • zx:可以压缩目录和文件,压缩速度比较慢,但是压缩比例最高,扩展名【.xz】
命令目的操作命令
gzip不保留源文件压缩gzip 111.txt
保留源文件压缩gzip -c 123.txt > 123.txt.gz
不保留源文件解压gunzip 111.txt.gz
gzip -d 123.txt.gz
保留源文件解压gunzip -c 123.txt.gz > 234.txt
xz不保留源文件压缩xz 111.txt
保留源文件压缩xz -c 123.txt > 123.txt.xz
不保留源文件解压unxz 111.txt.xz
xz -d  123.txt.xz
保留源文件解压xz -d -k 123.txt.xz

(3)归档/解档/压缩/解压命令

参数目的示例命令解析
-c归档时创建新文件,必选归档vmware-tools-distrib文件并命名为vmware.tartar -cf vmware.tar vmware-tools-distrib
-f归档时指定文件格式,必选
-v归档时显示详细过程归档vmware-tools-distrib文件并命名为vmware.tar,归档时显示详细过程tar -cvf vmware.tar vmware-tools-distrib
-z以gzip的方式归档并压缩归档并压缩vmware-tools-distrib文件并命名为vm-tools.tar.gz,归档时显示详细过程tar -zcvf vm-tools.tar.gz vmware-tools-distrib
-J以xz的方式归档并压缩归档并压缩vmware-tools-distrib文件并命名为vm-tools.tar.xz,归档时显示详细过程tar -Jcvf vm-tools.tar.xz vmware-tools-distrib
归档并压缩vmware-tools-distrib文件并命名为vm-tools.tar.xz,文件放于/home/YYL目录下,归档时显示详细过程tar -Jcvf /home/YYL/vm-tools.tar.xz vmware-tools-distrib
-x接档解压操作解档解压文件vm-tools.tar.xztar -xf  vm-tools.tar.xz
-C指定解压路径指定vm-tools.tar.xz文件的解压路径为:/home/YYLtar -xf vm-tools.tar.xz -C /home/YYL

四、Linux核心命令

1、Linux搜索-find命令高级用法

(1)基本用法

命令参数参数解析示例示例解析
find 路径 选项-type根据文件类型搜索find /var/log -type f -name "*.log"查找后缀为“.log”的文件
find /var/log -type d查找该绝对路径下的目录
-name根据文件名搜索find /var/log -type f -name "*.log"查找后缀为“.log”的文件
-perm根据文件权限find /var/log -perm 600 -type f -name "*.log"查找绝对路径下权限为600的后缀为“.log“的文件
-user根据文件所属主find /var/log -user root查找绝对路径下所属主为 root 的文件【不仅限于文件】

(2)高级用法

命令使用解析
命令各参数各参数解析示例
find /var/log -type f -name "*.log" -exec wc -l {} \;;可以执行多条命令find /var/log -type f -name "*.log" -exec cp -a {} /home/YYL/YYL2 \;
\转义符,使得该条命令结束
{}把find命令匹配到的每一次结果传递给{}
-exec执行
命令相关参数
参数参数解析mtime参数mtime参数解析示例
-mtime根据文件的变更时间来查找-n表示更改时间举例现在n天以内find /var/log -mtime -2 -name "*.log" -exec ls -lrt {} \; 
+n表示更改时间举例现在n天以前find /var/log -mtime +2 -name "*.log" -exec ls -lrt {} \; 

2、CentOS7防火墙以及selinux介绍

(1)防火墙

防火墙理解

主要用于用户信息安全防护,主要有软件防火墙和硬件防火墙,firewall防火墙是权健防火墙

  • 在Centos7之前默认采用的防火墙是iptables
  • 在Centos7则采用的防火墙是firewall
设置防火墙相关命令
操作命令
查看firewalld服务状态systemctl status firewalld
开启firewalld服务systemctl start firewalld.service
关闭firewalld服务systemctl stop firewalld.service
重启firewalld服务systemctl restart firewalld.service
查看firewall防火墙状态firewall-cmd --state
查看防火墙开放端口firewall-cmd --list-port
查看指定80端口是否开放firewall-cmd --query-port=80/tcp
开放80端口firewall-cmd --permanent --add-port=80/tcp(--permanent代表永久生效,没有此参数重启后就失效了)
加载生效开放的端口firewall-cmd --reload
关闭80端口

firewall-cmd --remove-port=80/tcp

注意:

  • 安装telnet命令:yum -y install xinetd telnet telnet-server(确认联网状态)
  • 安装netstat与ifconfig命令:yum -y install net-tools(确认联网状态)

(2)SELinux介绍

SELinux有三种工作模式,配置文件路径在:/etc/selinux/config

  • enforcing:强制模式,违反selinux规则的行为将被组织并记录到日志中去
  • permissive:宽容模式,违反selinux规则的行为将会记录到日志中去
  • disabled:关闭模式

3、linux服务器之间telnet与scp命令用法

(1)telnet命令

telnet命令主要用于测试到某台机器的某个端口是否畅通,telnet命令依赖于xinetd服务与telnet-server服务

  • 用法:telnet IP地址 端口
  • 场景使用:测试某个端口是否畅通

(2)scp命令

作用:用于服务器之间的文件或者文件目录拷贝

用法1:从本机拷贝文件到别的机器

scp 本机文件的存放路径 root@服务器IP:服务器目标路径

示例:

从192.168.213.132(本机)这台机器的 /root/VMwareTools-10.3.23-16594550.tar.gz 文件拷贝至192.168.213.129 的 /root/下

scp /root/VMwareTools-10.3.23-16594550.tar.gz root@192.168.213.129:/root/

用法2:从别的机器拷贝文件到本地目录

scp root@服务器IP:服务器目标路径 本机文件的存放路径

示例:

从192.168.213.129这台机器的/root/VMwareTools-10.3.23-16594550.tar.gz文件拷贝至 192.168.213.132(本机)的/root/下

scp root@192.168.213.129:/root/VMwareTools-10.3.23-16594550.tar.gz /root/

参数说明:

  • -r:起到递归的作用,主要用来拷贝目录

示例:scp -r /root/vmware-tools-distrib root@192.168.213.129:/root/

4、Linux进程管理命令之 ps -ef 与 ps aux 详解

列名含义
UID用户ID
PID进程ID
PPID父进程号
CCPU的占用率
STIME进程的启动时间
TTYTTY终端
TIME进程执行起到现在总的CPU占用时间
CMD启动这个进程的命令

列名含义
USER哪个用户启动了这个命令
PID进程的ID
%CPUCPU的占用率
%MEM内存的使用率
VSZ如果一个程序完全驻留在内存中一共需要使用多少内存空间
RSS进程当前占用了多少内存
TTYTTY终端
STAT表示当前进程的状态(S #处于休眠的状态;D #不可中断的状态;Z #僵尸进程;X #死掉的进程 )
START启动这个命令的时间点
TIME进程执行起到现在总的CPU占用时间
COMMAND启动这个进程的命令

目的:一般执行 ps -ef 或者 ps aux命令是查看我们的进程是否启动成功,或者找出进程号,对进程进行kill强制关闭

5、处理海量数据之cut命令

(1)cut应用场景

通常对数据进行列的提取

(2)语法

cut [选项]...[file]

(3)示例

选项-d #指定分割符(不加 -d 选项,默认为制表符,而非空格)
-f #指定截取区域
-c #以字符为单位进行分割
以【:】为分隔符,截取出/etc/passwd的第一列和第三列cut -d ':' -f 1,3 /etc/passwd
以【:】为分隔符,截取出/etc/passwd的第一列到第三列cut -d ':' -f 1-3 /etc/passwd
以【:】为分隔符,截取出/etc/passwd的第二列到最后一列cut -d ':' -f 2-  /etc/passwd
截取/etc/passwd文件从第二个字符到第九个字符cut -c 2-9 /etc/passwd
截取linux上面所有可登录的普通用户cat /etc/passwd | grep '/bin/bash' | cut -d ':' -f 1 | grep -v root

6、处理海量数据之awk命令

(1)awk简介

一个非常强大的数据处理命令,支持条件判断、数组、循环等功能,与grep、sed被称为linux三剑客

(2)awk应用场景

通常对数据进行列的提取

(3)awk语法

  • awk '条件1 {执行动作} 条件2 {执行动作} ...' 文件名
  • awk [选项] '条件1 {执行动作} 条件2 {执行动作} ...' 文件名

(4)awk特殊要点以及举例说明

特殊字段含义举例查询结果
NR行号df -h | awk 'NR==4 {print $1}'查询第4行第一列的数据
$1代表第一列df -h | awk 'NR==1 {print $1}'查询第1行第一列的数据
$2代表第二列df -h | awk '(NR>=2 && NR <=5) {print $1}'查询第二到五行第一列的数据
$NF代表最后一列df -h | awk '{print $NF}'查询最后一列的数据
-F指定分割符awk -F":" '{print $1}' /etc/passwd查询/etc/passwd文件下以【:】为分割符的第一列数据
BEGIN在读取所有行内容前就开始执行,一般用来初始化操作cat /etc/passwd | awk 'BEGIN {FS=":"} {print $1}'查询/etc/passwd文件下以【:】为分割符的第一列数据
df -h | grep -v 'Filesystem' | awk 'BEGIN {printf "Filesystem \n \n"} {printf $1} {printf "\t Use%:"} {print $5}'查询文件磁盘使用情况中的Filesystem和Use%列
END结束的时候执行df -h | grep -v 'Filesystem' | awk 'BEGIN {printf "Filesystem \n \n"} {printf $1} {printf "\t Use%:"} {print $5} END {printf "OKK \n"}'查询文件磁盘使用情况中的Filesystem和Use%列

7、处理海量数据之sed命令

(1)sed应用场景

主要对数据进行处理(选取、新增、替换、删除、搜索)

(2)sed语法

  • sed [选项] [动作] 文件名

(3)sed常见选项与参数

选项含义举例结果
-n把匹配到的行输出打印到屏幕df -h | sed -n '2p'打印第二行数据
p以行为单位进行打印,通常与【-n】一起使用
d删除df -h | sed '2d'打印删除第二行的数据
a在行的下面插入新的内容df -h | sed '2a 1234567890'在第二行下方插入数据【1234567890】并打印出来
i在行的上面插入新的内容df -h | sed '2i 1234567890'在第二行上方插入数据【1234567890】并打印出来
c替换df -h | sed '2c 1234567890'将第二行数据替换成【1234567890】并打印出来
s/要被取代的内容/新的字符串/g指定字符串进行替换df -h | sed 's/centos-root/centos7/g'将【centos-root】替换成【centos7】并打印,不改变源文件
-i对源文件进行修改(慎用,用之前需要备份源文件)sed -i 's/centos7/centos8/g' df.txt将df.txt文件中的【centos7】强制修改成【centos8】
p在文件中搜索内容sed -n '/tmpfs/p' df.txt打印df.txt文件中的【tmpfs】字段---非精确查找
-e表示可以执行多条动作sed -e 's/centos8/centos7/g' -e 's/tmpfs/TMP/g' df.txt > 888.txt替换df.txt文件中的【centos8】以及【tmpfs】更为【centos7】和【TMP】,然后重定向至888.txt文件

五、Linux服务器常用企业服务安装

1、rpm方式介绍

(1)rpm安装

安装别人编译好的软件包,rpm即Redhat Package Manager,是Redhat的软件包管理方式

(2)rpm安装优点

  • 软件已经编译打包,所以传输和安装方便,让用户免除编译
  • 在安装之前,会先检查系统的磁盘、操作系统版本等,避免错误安装

(3)rpm安装缺点

  • 软件包安装的环境必须与打包时的环境一致或相当
  • 必须安装软件的依赖包

(4)rpm包命名规则

which-2.20-7.el7.x86_64.rpm

分段含义
which代表的是软件名称
2.20代表的是软件版本号
7代表的是发布版本号,指的是这个rpm软件包是第几次编译生成的
el7代表的是企业版的7操作系统
x86代表的是CPU架构
64代表的是系统的位数

(5)安装rpm软件包

参数-i安装软件包
-v输出更多的详情信息
-h输出哈希标记(#)
--nodeps不验证软件的依赖(非常不推荐,即使安装成功了,也用不了)
举例rpm -ivh zsh-5.0.2-7.el7.x86_64.rpm
rpm -ivh mariadb-server-5.5.35-3.el7.x86_64.rpm --nodeps  (不推荐)

(6)rpm包下载地址

http://rpmfind.net/

http://rpm.phone.net/

http://www.rpmseek.com/index.html

(7)rpm查询功能

命令参数参数说明举例
rpm -q-a查询所有已安装的软件包rpm -qa zsh
-f查询文件所属软件包rpm -qf /usr/bin/zsh
-p查询软件包rpm -qp zsh-5.0.2-7.el7.x86_64.rpm
-i显示软件包信息rpm -qi zsh
-l显示软件包中的文件列表rpm -ql zsh
-d显示被标注为文档的文件列表rpm -qd zsh
-c显示被标注为配置文件的文件列表rpm -qc zsh

(8)rpm包升级

参数参数说明示例
-U升级rpm软件服务rpm -Uvh zsh-5.0.2-7.el7.x86_64.rpm(软件包必须是要升级的)

(9)rpm包卸载

参数参数说明示例
-e卸载软件包rpm -e zsh

2、yum方式介绍

(1)yum安装介绍

基于 C/S架构,yum安装称之为傻瓜式安装

(2)yum安装优缺点

  • 优点:方便快捷,不用考虑依赖,自动下载软件包
  • 缺点:人为无法干预,无法设定想要的参数

(3)配置本地yum源

配置文件的路径在:/etc/yum.repos.d/

[Centos7-yum]yum源名称,唯一,用来区分不同的yum源
name=Centos7-source对yum源的描述信息
baseurl=file:///mntyum源的路径(repodata目录所在的目录)
enabled=1表示启用yum源
gpgcheck=0为1表示使用公钥检验rpm的正确性

(4)yum安装方式的使用

yum repolist查看yum源列表
yum clean all清空之前yum缓存
yum makecache创建yum缓存,为后续安装更加快速
yum -y install安装软件(yum -y install zsh)
yum info zsh查看zsh软件包信息(不管安没安装都会有信息)
yum info installed zsh查看已经安装好的软件信息
yum remove -y zsh卸载软件
yum search gcc搜索gcc软件
yum update升级软件

3、源码编译安装方式介绍

(1)源码编译安装优缺点

  • 优点:编译安装过程,可以设定参数,指定安装目录,按照需求进行安装,指定安装的版本,灵活性比较大
  • 缺点:需要对依赖包一个一个的进行安装,不敢随便升级,一升级可能会由于依赖包的不能使用导致一系列连锁反应

(2)安装步骤

第一步:解压源码包

tar -xf 源码包

第二步:配置

进入解压后的目录,用 ./configure 命令来配置相关信息(比如指定安装目录 --- prefix=/usr/local/nginx)和生成makefile文件

第三步:编译

make -j4

第四步:安装

make install

4、JDK8安装实战

(1)下载jdk官网

官网地址:Java Downloads | Oracle

下载好后,将该压缩包上传至虚拟机中,具体上传步骤可参考【第二章第五节】

(2)全局环境变量的配置文件

修改文件【profile】的内容,在【profile】的最后添加下面的配置文件(其中路径需要修改为jdk1.8所在路径,其他不变)

命令:文件路径:vi /etc/profile
export JAVA_HOME=/usr/local/jdk1.8 #这个路径要改,其余不需要改
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

(3)加载环境变量

命令:source /etc/profile

(4)验证是否安装成功

命令:java -version

5、部署tomcat网站服务器

(1)Tomcat定义

Tomcat是一个开源免费的Web应用服务器,性能稳定,是目前比较流行的Web应用服务器

(2)Tomcat下载

方法1:官网下载

官网地址:Apache Tomcat® - Apache Tomcat 8 Software Downloads

方法2:在虚拟机中应用wget命令下载

yum install -y wget   //安装wget命令
wget https://dlcdn.apache.org/tomcat/tomcat-8/v8.5.99/bin/apache-tomcat-8.5.99.tar.gz

(3)Tomat解压

解压后将文件移动至 /usr/local/tomcat8目录下(统一存放)

解压:tar -xf apache-tomcat-8.5.99.tar.gz

移动:mv apache-tomcat-8.5.99 /usr/local/tomcat8

检查java环境:java -version

(4)Tomat重要目录介绍

目录含义
bin存放可执行命令,比如开启和关闭
conf

配置文件

context.xml:Tomcat公用的环境配置,tomcat服务器会定时去扫描这个文件

web.xml:web应用程序描述文件,都是关于web应用程序的配置文件

server.xml:可以设置tomcat的端口号,添加虚拟机这些的,是对服务器的设置

tomcat-users.xml:用户配置文件

webapps发布web应用
lib库文件

(5)启动Tomat

//在bin路径下执行
sh startup.sh

(6)查看是否监听tomcat

ps -ef | grep tomcat
netstat -tunlp | grep 3328

(7)测试能否访问测试页面

关闭防火墙:systemctl stop firewalld.service
测试能否访问:IP地址:8080

6、部署apache网站服务器

(1)Apache介绍

Apache是软件基金会的一个开源免费的网页服务器,也是目前世界上使用最广泛的一种 web server,apache最出名的是它跨平台、高效和稳定,可以运行在几乎所有广泛使用的计算机平台上,其特点是简单、速度快、性能稳定,并可做代理服务器来使用,且可通过简单的 API 扩充,将 Perl/Python 等解释器编译到服务器中

(2)源码编译安装Apache

第一步:下载组件 apr 并解压

组件apr官网:Download - The Apache Portable Runtime Project

下载成功后,上传至虚拟机,并进行解压

解压命令:tar -xf apr-1.7.0.tar.gz

第二步:下载组件 apr-util 并解压

组件apr官网:Download - The Apache Portable Runtime Project

下载成功后,上传至虚拟机,并进行解压

解压命令:tar -xf apr-util-1.6.1.tar.gz

第三步:下载 apache 并解压

apache官网:Download - The Apache HTTP Server Project

下载成功后,上传至虚拟机,并进行解压

解压命令:tar -xf httpd-2.4.39.tar.gz

第四步:安装 gcc 环境
安装命令:yum install -y gcc*
第五步:安装 zlib-devel 库
安装命令:yum install -y zlib-devel
第六步:安装 xml 解析器
安装命令:yum install -y expat-devel
第七步:下载并安装 pcre 正则表达式库

官网下载地址:https://ftp.pcre.org/pub/pcre/

下载成功后,上传至虚拟机,并进行解压

解压命令:tar -xf pcre-8.43.tar.gz

进入【pcre-8.43】目录下进行安装,安装时需要指定安装路径,这里我创建了一个路径为 /usr/local/pcre,然后安装在该路径下

//1.进入pcre-8.43目录下
cd pcre-8.43
//2.新建一个安装路径
mkdir -p /usr/local/pcre
//3.指定安装路径为刚创建的路径
./configure --prefix=/usr/local/pcre
//4.安装pcre
make && make install
第八步:把组件apr与组件apr-util拷贝进apache安装包
cp -rf apr-1.7.0 /root/test/httpd-2.4.39/srclib/apr
cp -rf apr-util-1.6.1 /root/test/httpd-2.4.39/srclib/apr-util
第九步:进入apache安装包使用./configure进行环境收集检验与配置

进入apache安装包,新建目录/usr/local/apache,然后执行./configure命令校验

cd /root/test/httpd-2.4.39
mkdir -p /usr/local/apache
./configure \--prefix=/usr/local/apache \--sysconfdir=/usr/local/apache/etc \--with-apr=/root/test/apr-1.7.0 \--with-apr-util=/root/test/apr-util-1.6.1 \--with-included-apr \--with-pcre=/usr/local/pcre \--enable-deflate \--enable-expires \--enable-headers \--enable-so \--enable-modules=most \--with-mpm=worker \--enable-rewrite
选项说明
--prefix指定安装目录
--sysconfdir指定配置文件的路径
--with-apr指定依赖文件的路径
--with-apr-util指定依赖文件的路径
--with-included-apr增加编译效率
--with-pcre指定pcre正则表达式库的安装路径
--enable-deflate开启压缩文件提高速度节约带宽
--enable-expires开启让浏览器缓存,减轻服务器压力,提高访问速度
--enable-headers使得支持http头
--enable-so使得支持动态模块
--enable-modules=most使得支持大多数模块
--with-mpm=worker使得Apache工作在worker模式下
--enable-rewrite使得支持地址重写
第十步:编译并安装apache
操作命令:make -j 4 && make install
第十一步:设置服务器名称
//操作命令
vi /usr/local/apache/etc/httpd.conf

输入:ServerName进行搜索

添加:
ServerName www.xdclass.com
第十二步:测试并启停apache服务器
//设置软链接
ln -s /usr/local/apache/bin/* /usr/sbin/
//设置环境变量
echo "export PATH=/usr/local/apache/bin:$PATH" >> /etc/profile
//加载环境变量
source /etc/profile
//测试配置文件语法有没有错误
httpd -t
//启动apache服务
httpd -k start
//关闭apache服务
httpd -k stop

在防火墙关闭的条件下,打开浏览器,输入IP地址,成功打开apache测试页面,如下图,即部署完成

192.168.213.132:80

7、部署nginx网站服务器

(1)nginx简介

Nginx是一款高性能的 HTTP 和反向代理服务器

(2)nginx优点

  • 高并发量:根据官方给出的数据,能够支持高达 50000 个并发连接数的响应
  • 内存消耗少:处理静态文件,同样起 web 服务,比 apache 占用更少的内存及资源,它是轻量级的
  • 简单稳定:配置简单,基本在一个 conf 文件中配置,性能比较稳定,可以 7*24小时长时间不间断运行
  • 模块化程度高:Nginx 是高度模块化的设计,编写模块相对简单
  • 负载均衡:Nginx 可以做高并发的负载均衡,且 Nginx 是开源免费的,如果使用F5等硬件来做负载均衡,硬件成本比较高
  • 可移植性高:Nginx 代码完全用C语言编写

(3)nginx缺点

  • 动态处理差:Nginx 处理静态文件好,耗费内存少,但是处理动态页面比较差
  • rewrite弱:虽然 Nginx 支持 rewrite 功能,但是相比于 Apache 来说,Apache 比 Nginx 的 rewrite 强大

(4)编译安装nginx

第一步:安装gcc编译环境
yum install -y gcc-c++
第二步:安装zlib-devel库
yum install -y zlib-devel
第三步:安装OpenSSL密码库
yum install -y openssl openssl-devel
第四步:安装pcre正则表达式库

官网下载地址:https://ftp.pcre.org/pub/pcre/

下载成功后,上传至虚拟机,并进行解压

解压命令:tar -xf pcre-8.43.tar.gz

进入【pcre-8.43】目录下进行安装,安装时需要指定安装路径,这里我创建了一个路径为 /usr/local/pcre,然后安装在该路径下

//1.进入pcre-8.43目录下
cd pcre-8.43
//2.新建一个安装路径
mkdir -p /usr/local/pcre
//3.指定安装路径为刚创建的路径
./configure --prefix=/usr/local/pcre
//4.安装pcre
make && make install
第五步:下载编译安装Nginx

Nginx 官网:nginx: download

 下载成功后,上传至虚拟机,并进行解压

解压命令:tar -xf nginx-1.16.0.tar.gz

进入【nginx-1.16.0】目录下进行安装,安装时需要指定安装路径,这里我创建了一个路径为 /usr/local/pcre,然后安装在该路径下,接着使用./configure进行环境收集检验与配置,编译无误后进行安装

//1.进入nginx-1.16.0目录下
cd nginx-1.16.0
//2.新建一个安装路径
mkdir -p /usr/local/nginx
//3.指定安装路径为刚创建的路径
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-pcre
//4.安装pcre
make && make install
第六步:启停Nginx服务
//启动nginx服务
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

//测试相关配置文件是否正常
/usr/local/nginx/sbin/nginx -t

//关闭nginx服务
/usr/local/nginx/sbin/nginx -s stop

打开浏览器测试能否访问到测试页面,如图所示,即启动成功【ip addr 获取当前虚拟机IP地址,访问端口默认80】

8、安装mysql5.7.17数据库服务器

(1)mysql简介

(2)准备工作

第一步:关闭防火墙
//关闭防火墙命令
systemctl stop firewalld.service

//查看防火墙是否关闭
firewall-cmd --state
第二步:关闭selinux

进入config文件,将【SELINUX】的值改为【disabled】,如下图所示

vi /etc/selinux/config

第三步:安装 cmake 工具
安装命令:yum -y install cmake
第四步:下载boost库/mysql安装包

我这里下载的boost库是boost1.59.0,直接使用wget下载会快一点,下载成功后,直接进行解压

boost库历史版本下载地址:Boost Version History

wget https://nchc.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz
解压命令:tar -xf boost_1_59_0.tar.gz

MySQL这里下载的是mysql-5.7.17版本,直接在官网下载即可

MySQL官网地址:MySQL :: MySQL Downloads

下载成功后,上传至虚拟机,并进行解压

tar -xf mysql-5.7.17.tar.gz

第五步:yum安装其他依赖组件
yum -y install gcc gcc-c++ bzip2 bzip2-devel bzip2-libs python-devel ncurses ncurses-devel openssl openssl-devel
第六步:创建路径
mkdir -p /usr/local/mysql
mkdir -p /data/mydata
第七步:创建mysql用户
useradd -M -s /sbin/nologin mysql

(3)使用cmake工具对mysql5.7.17进行环境收集检验与配置相关模块

解压 mysql 源码包后,进入解压后的路径
cd mysql-5.7.17

使用cmake工具执行下面命令,进行环境收集检验与配置

cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \-DMYSQL_DATADIR=/data/mydata \-DSYSCONFDIR=/etc \-DWITH_INNOBASE_STORAGE_ENGINE=1 \-DWITH_ARCHIVE_STORAGE_ENGINE=1 \-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \-DWITH_READLINE=1 \-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \-DWITH_SSL=system \-DWITH_ZLIB=system \-DDEFAULT_CHARSET=utf8 \-DDEFAULT_COLLATION=utf8_general_ci \-DDOWNLOAD_BOOST=1 \-DWITH_BOOST=../boost_1_59_0 \-DENABLE_DOWNLOADS=1

各参数参数说明
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql指定mysql数据库安装目录
-DMYSQL_DATADIR=/data/mydata指定数据库文件路径
-DSYSCONFDIR=/etc指定配置文件路径
-DWITH_INNOBASE_STORAGE_ENGINE=1安装INNOBASE存储引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1安装ARCHIVE存储引擎
-DWITH_BLACKHOLE_STORAGE_ENGINE=1安装BLACKHOLE存储引擎
-DWITH_READLINE=1使用redline功能
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock连接文件位置
-DWITH_SSL=system表示使用系统上自带的SSL库
-DWITH_ZLIB=system表示使用系统上自带的ZLIB库
-DDEFAULT_CHARSET=utf8指定默认使用的字符集编码
-DDEFAULT_COLLATION=utf8_general_ci指定默认使用的字符集校对规则
-DDOWNLOAD_BOOST=1若无boost库则可自行下载
-DWITH_BOOST=../boost_1_59_0指定boost库的路径用于读取
-DENABLE_DOWNLOADS=1支持下载可选文件

(4)编译并安装

make -j 4 && make install

(5)初始化mysql

初始化后,会生成一个临时密码,这里需要记住临时密码【1RlVUip10g>j】

/usr/local/mysql/bin/mysqld \--initialize \--user=mysql \--basedir=/usr/local/mysql \--datadir=/data/mydata \--socket=/tmp/mysql.sock

(6)mysql的相关路径进行更改权限

chown -R mysql:mysql /usr/local/mysql /data/mydata

(7)修改配置文件

//进入配置文件进行修改
vi /etc/my.cnf

//文件内容修改如下
[mysqld]
datadir=/data/mydata
socket=/tmp/mysql.sock
symbolic-links=0
[mysqld_safe]
log-error=/usr/local/mysql/log/mysql.errlog
pid-file=/data/mydata/$hostname.pid

(8)启停mysql

第一次启动时会报如下错误,这是因为没有创建【mysql.errlog】文件导致,创建后重新启动即可

//创建 mysql.errlog 文件
touch /usr/local/mysql/log/mysql.errlog

//创建后要进入log目录下修改该文件的权限
chown mysql:mysql *

chown -R mysql:mysql /usr/local/mysql/log/mysql.errlog

启动与关闭 mysql 服务的命令如下:

//启动
/usr/local/mysql/support-files/mysql.server start

//关闭
/usr/local/mysql/support-files/mysql.server stop

(9)登录mysql

第一次登录的密码是之前生成的随机密码,填入随机密码,即可登录成功

/usr/local/mysql/bin/mysql -uroot -p

(10)修改mysql密码

修改完密码需要刷新权限

//修改密码
set password for 'root'@'localhost'=password('YYL123');

//刷新权限
flush privileges;

刷新权限时,如果出现下面报错,则是因为表不存在,这里创建一个对应表即可

创建表的步骤:

//mysql中操作

use mysql;
drop table if exists mysql.servers;

//建表
CREATE TABLE `servers` (
`Server_name` char(64) NOT NULL,
`Host` char(64) NOT NULL,`Db` char(64) NOT NULL,
`Username` char(64) NOT NULL,
`Password` char(64) NOT NULL,
`Port` int(4) DEFAULT NULL,
`Socket` char(64) DEFAULT NULL,
`Wrapper` char(64) NOT NULL,
`Owner` char(64) NOT NULL,
PRIMARY KEY (`Server_name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='MySQL Foreign Servers table';

(11)添加MySQL服务并设置mysql开机启动

//复制mysql.server到/etc/rc.d/init.d路径下并命名为mysql
cp -a /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysql

//添加一个mysql服务
chkconfig --add mysql

//查看mysql服务的状态
chkconfig --list mysql

chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级别等级0

等级0表示关机
等级1单用户模式
等级2无网络连接的多用户命令行模式
等级3有网络连接的多用户命令行模式
等级4不可用
等级5带图形界面的多用户模式
等级6重新启动

使用mysql服务的方式操作启停mysql服务

//启动mysql服务器
service mysql start
//关闭mysql服务器
service mysql stop
//重启mysql服务器
service mysql restart

(12)使用 mysql -uroot -p 登录服务器

设置mysql环境变量,软链接到/usr/sbin/目录下,使得mysql在任何目录都可直接使用 mysql -uroot -p 登录服务器

ln -s /usr/local/mysql/bin/* /usr/sbin/

9、部署php服务与nginx的整合

(1)PHP介绍

PHP是一种脚本语言,常用于做动态网站

(2)源码编译安装

第一步:安装依赖组件
yum -y install gcc gcc-c++ bzip2 bzip2-devel bzip2-libs python-devel ncurses ncursesdevel openssl openssl-devel

yum install -y libxml2-devel
第二步:解压php安装包

官网下载php安装包,并上传至虚拟机中进行解压

解压命令:tar -xf php-5.5.35.tar.gz

第三步:使用./configure进行环境收集检验与配置
cd php-5.5.35

mkdir -p /usr/local/php

./configure --prefix=/usr/local/php/ --enable-fpm --with-config-file=/usr/local/php/etc
第四步:编译安装
make -j 4 && make install

(3)修改php服务器配置文件

cp -a php.ini-production /usr/local/php/etc/php.ini
cp -a /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf

(4)启停php服务器

//启动php服务器
/usr/local/php/sbin/php-fpm 

//php的默认监听端口是:9000

//关闭php服务器
cd /usr/local/php/sbin && pkill php-fpm 

(5)整合nginx测试php

修改nginx配置文件,文件路径在/usr/local/nginx/conf/nginx.conf,修改后对 nginx进行重启即可

vi /usr/local/nginx/conf/nginx.conf

//配置文件内在location下增加下面内容并保存退出
location ~ \.php$ {
    root /usr/local/nginx/html;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}

//重启nginx服务器
/usr/local/nginx/sbin/nginx -s reload

其中,配置文件中修改的内容含义详解:

FastCGI是一个在HTTP服务器和动态脚本语言间通信的接口
fastcgi_pass 127.0.0.1:9000;设置监听端口
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;设置脚本文件请求的路径
include fastcgi_params;引入fastcgi的配置文件

(6)在nginx的网站发布路径下创建index.php文件

在nginx的/usr/local/nginx/html路径下新增一个index.php文件用于测试,文件内容如下:

vi /usr/local/nginx/html/index.php
<?php
phpinfo();
?>

(7)测试是否安装成功

如下图所示,即安装成功

六、Linux下Shell脚本编程介绍

1、shell编程语言的介绍

(1)shell简介

Shell 是一种脚本语言,又是一种命令语言。可以通俗一点来讲, Shell 脚本就是一系列命令的集合,可以在 Unix/linux上面直接使用,并且直接调用大量系统内部的功能来解释执行程序把一些重复性工作交给 shell 做,来实现自动化运维。 Shell 虽然没有 C/C++ Java Python 等强大,但也支持了基本的编程元素,例如: if for while case 等循环,还有变量、数组、字符串、注释、加减乘除逻辑运算等。

(2)常见的脚本语言

shell 、perl 、php 、python

(3)shell优点

  • 易用 : 直接在 linux 系统上使用,不需要编译
  • 高效 : 程序开发的效率非常高,依赖于功能强大的命令可以迅速地完成开发任务
  • 简单: 语法和结构比较简单,易于掌握

(4)shell应用场景

  • 监控 linux 系统的健康度
  • 数据的处理 : 日志的切割、分析、统计等
  • 与数据库交互 : 对数据库进行增,删,改,查等操作
  • 监控进程,自动化启停服务
  • 完成一些重复性的工作

2、shell编写第一个脚本

(1)编写脚本

新建一个【first.sh】文件,在文件中编写脚本内容

vi first.sh

//脚本内容
!/bin/bash
作者:YYL
编写时间:2024-03-23
功能:this is my first shell !
echo "this is my first shell !"

(2)执行脚本

方法1:直接使用 sh 命令执行

sh first.sh

方法2:先赋予文件可执行权限,在使用 ./ 执行

chmod 755 first.sh
./first.sh

3、shell脚本与crontab定时器的运用

(1)crond服务

以守护进程方式在无需人工干预的情况下来处理着一系列作业和指令的服务

(2)crond服务的启停命令

//启动
systemctl start crond.service

//查看状态
systemctl status crond.service

//停止
systemctl stop crond.service

//重新启动
systemctl restart crond.service

(3)crontab定时器的使用

语法选项含义内容格式
crontab 【选项】crontab -l列出crontab有哪些任务
crontab -e编辑crontab任务* * * * * 级别 命令
crontab -r删除crontab里的所有任务

crontab里的内容格式如下:

* * * * * 级别 命令

解析:五个星星分别代表【分、时、日、月、周】---从左到右

(4)crontab示例

crontab示例实现命令
每分钟执行 * * * * * 或者 */1 * * * *
每小时执行   0 * * * *
每天执行 0 0 * * *
每周执行 0 0 * * 0
每月执行 0 0 1 * *
每年执行 0 0 1 1 *
每天早上 6 点执行 0 6 * * *
每两个小时执行 0 */2 * * *
每小时的 10 分, 40 分执行 10,40 * * * *
每天的下午 4 点、 5 点、 6 点的 5 min 15 min 25 min 35 min 45 min 55 min 时执行命令 5,15,25,35,45,55 16,17,18 * * *

4、利用shell脚本企业实战nginx日志切割

(1)需求

  • nginx的日志文件路径
  • 每天0点对nginx accesserror日志进行切割
  • 以前一天的日期为命名

(2)脚本

新建shell脚本,命名为【nginx_cut.sh】,编写该脚本文件

#!/bin/bash
#Auto cut nginx log script.
#create by YYL
#create date:2024-03-24

#nginx日志路径
logs_path=/usr/local/nginx/logs
YesterDay=$(date -d 'yesterday' +%Y-%m-%d)

#移动日志并以日期改名
mv ${logs_path}/access.log ${logs_path}/access_${YesterDay}.log
mv ${logs_path}/error.log ${logs_path}/error_${YesterDay}.log

#向nginx主进程发送信号,重新生成日志文件
kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid)

七、企业实战

1、企业实战静态ip地址配置

(1)使用NAT模式

固定IP地址,一般使用NAT模式

点击虚拟网络编辑器,选择NAT模式,并关闭【使用本地DHCP服务...】,关闭后需要修改网卡信息

(2)修改ip地址为静态

进入网卡路径,修改相关网卡信息,以下是我的网卡相关信息

vi /etc/sysconfig/network-scripts/ifcfg-eno16777728
BOOTPROTO="static"
IPADDR=192.168.213.100
GATEWAY=192.168.213.2
NETMASK=255.255.255.0
ONBOOT="yes"


//修改以上信息,以下是我网卡信息

HWADDR="00:0c:29:dc:47:58"
TYPE="Ethernet"
BOOTPROTO="static"
DEFROUTE="yes"
PEERDNS="yes"
PEERROUTES="yes"
IPV4_FAILURE_FATAL="no"
IPADDR=192.168.213.100
GATEWAY=192.168.213.2
NETMASK=255.255.255.0
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_PEERDNS="yes"
IPV6_PEERROUTES="yes"
IPV6_FAILURE_FATAL="no"
NAME="eno16777728"
UUID="3199add9-379c-43a9-bab1-ae4e05c0f2cc"
ONBOOT="yes
网卡修改信息说明
BOOTPROTO="static"固定IP网址
IPADDR=192.168.213.100IP地址,可以根据子网ip进行设置
GATEWAY=192.168.213.2网关IP,即NAT模式中的网关IP
NETMASK=255.255.255.0子网掩码

(3)重启网卡

systemctl restart network.service

(4)ping不通域名

如果设置为固定IP地址后,ping不通,那么加上以下域名服务器解析地址即可

vi /etc/resolv.conf 

//配置内容
nameserver 114.114.114.114
nameserver 8.8.8.8
nameserver 1.1.1.1

(5)alias命令实现别名

//临时设置别名(重新登录后失效)
alias vinet='vi /etc/sysconfig/network-scripts/ifcfg-eno16777728'

//查看别名
alias

//取消临时别名
alias vinet

//永久设置别名
vi /root/.bashrc
//新增一条配置文件内容
alias vinet='vi /etc/sysconfig/network-scripts/ifcfg-eno16777728'

//加载使立即生效
source /root/.bashrc

2、CentOS7实战修改linux系统主机名

虚拟机中都默认主机名为localhost

(1)查看主机名命令

hostname

(2)修改主机名的命令

hostnamectl set-hostname YYLCS

(3)修改后重启使之生效

reboot

(4)修改/etc/hosts文件

进入【hosts】文件,修改文件信息

vi /etc/hosts

192.168.213.100 YYLCS

(5)测试能否ping

ping YYLCS

在YYLCS2机器上pingYYLCS机器,如下图所示,则说明修改成功

3、CentOS7实战ssh免密远程登录其它机器

(1)执行命令创建密钥

ssh-keygen -t rsa

(2)拷贝密钥至YYLCS2服务器

从YYLCS拷贝文件到YYLCS2并重命名为【authorized_keys】

scp /root/.ssh/id_rsa.pub root@YYLCS2:/root/.ssh/authorized_keys

(3)测试能不能免密登录YYLCS2

ssh YYLCS2

4、CentOS7实战搭建nfs文件共享服务器

(1)NFS介绍

NFS Network File System )即网络文件系统,它允许网络中服务器之间通过 TCP/IP 网络共享资源, NFS 的一个最大优点就是可以节省本地存储空间

(2)NFS体系组成

一台 NFS 服务器和若干台客户机,即一台NFS服务器共享给若干台客户机去访问

(3)环境准备

A 192.168.213.100      作服务端 B 192.168.213.101      作客户端

(4)在A服务端机器安装nfs-utilsrpcbind

  • nfs-utils包提供了NFS服务器程序和相应的管理工具
  • rpc则是能够获得nfs服务器端的端口号等信息
yum install -y nfs-utils rpcbind

(5)检查是否启动了rpcbind服务并监听着 111端口

成功安装rpcbind服务后,系统会自动启动服务,若没有自动启动,自己启动下即可

//启动rpcbind服务
sudo systemctl start rpcbind

netstat -tunlp | grep 111

(6)配置NFS服务的配置文件

首先创建一个共享目录供客户端去访问【/data/NFSdata】

mkdir -p /data/NFSdata

接着修改配置文件,配置文件路径在【/etc/exports】,配置信息如下:

vi /etc/exports

//修改配置信息内容
/data/NFSdata 192.168.213.101/24(rw,sync)
配置信息说明
/data/NFSdata表示你要共享的目录
192.168.213.101/24表示所允许访问的客户端IP
(rw,sync)rw:表示读写权限,sync:表示数据同步写入内存硬盘

(7)启动nfs服务

systemctl start nfs

(8)设置开机启动

systemctl enable rpcbind.service
systemctl enable nfs-server.service

(9)在B客户端机器安装nfs-utilsrpcbind

yum install -y nfs-utils rpcbind

(10)设置rpcbind服务开机启动

systemctl enable rpcbind.service

(12)挂载

在B客户端机器创建一个目录供服务端机器挂载

mkdir /NFS
mount -t nfs 192.168.213.100:/data/NFSdata /NFS
showmount -e 192.168.213.100

若要在客户端也能有操作的权限,则需要在服务端中对NFSdata目录赋予对应权限

chmod -R 777 NFSdata

5、CentOS7 实战部署ftp文件传输服务器(一)

(1)FTP文件服务器概述

FTP是一种文件传输服务器,默认使用 TCP 协议的 20 21 端口与客户端进行通信, 20 端口用于建立数据连接,并传输文件数据;21 端口用于建立控制连接,并传输 FTP 控制命令

(2)FTP数据连接模式

  • 主动模式:服务器向客户端主动发起数据连接(PORT 模式)
  • 被动模式:客户端向服务器主动发起数据连接(PASV 模式)

(3)FTP服务器软件的种类

凡是可通过文件传输协议 (File Transport Protocol) 下载文件服务器上的文件,以实现资源共享的,我们称之为ftp服务器 FTP 服务器软件包括 FileZilla Sener Serv-U IIS 等。而在 Linux 系统中, vsftpd 是目前 Linux/UNIX 领域 应用比较广泛的一款FTP 服务软件,特点是速度快,安全易用,并发量高,可以支持 15000 个用户并发连接

(4)FTP用户类型

  • 匿名用户:就是不需要用户名,密码,就能登录到服务器电脑里面
  • 本地用户:需要帐户名和密码才能登录,而且,这个帐户名和密码,都是在 linux 系统里面已经有的用户
  • 虚拟用户:同样需要用户名和密码才能登录,但是和上面的区别就是,在linux 系统中是没有该用户帐号

(5)搭建匿名访问 vsftpd 服务

//检查是否已经安装vsftpd软件包:
rpm -qa vsftpd

//yum 安装 vsftpd:
yum -y install vsftpd

//查找 vsftpd 的文件位置:
whereis vsftpd

//启动 ftp 服务:
systemctl start vsftpd

//查看启动服务情况
ps -ef | grep vsftpd

//查看监听的端口号:
netstat -tunlp | grep vsftpd

//查看防火墙的状态:
firewall-cmd --state

//关闭防火墙
systemctl stop firewalld.service

//创建测试文件:
mkdir -p /var/ftp/pub/ && echo "this is ftptest" >test.txt

//使用 windows 客户端访问(匿名用户访问时可以下载文件,但不能上传,若要上传,需要在配置文件/etc/vsftpd/vsftpd.conf中设置anon_upload_enable=YES,并且赋予pub目录权限 777)
ftp://192.168.10.100/

//

//安装 FTP 客户端工具:
yum -y install ftp

//连接vsftpd:
ftp 192.168.213.100

//下载文件:
get test.txt

//上传文件:
put test.txt

//退出:
quit 或者 exit

(6)配置本地用户访问 vsftpd 服务

关闭之前的匿名访问:
vi /etc/vsftpd/vsftpd.conf #编辑配置文件
anonymous_enable=NO

systemctl restart vsftpd #重新启动服务

mkdir -p /var/ftp/html #创建目录

useradd -g root -M -d /var/ftp/html -s /sbin/nologin ftptest #添加系统用户

chown -R ftptest:root /var/ftp/html #配置权限

passwd ftptest #设置密码

cd /var/ftp/html && echo "this is ftptest" >ftptest.txt #添加测试文件

使用 windows 客户端访问:
ftp://192.168.213.100/

配置文件/etc/vsftp/vsftpd.conf 的一些常用权限解释:

权限权限说明
anonymous_enable=YES允许匿名用户访问
write_enable=YES允许登录用户有写权限,属于全局设置
anon_root=var/ftp指定匿名用户登录的目录
anon_upload_enable=YES允许匿名用户有上传文件的权限
anon_mkdir_write_enable=YES允许匿名用户有新增目录的权限
chown_username=username设置匿名用户上传文件的属主名

注意:一般情况下,使用ftp客户端来访问vsftpd服务端较为麻烦,因此在企业中经常会下载【filezilla】软件来访问(官网下载即可,解压缩后直接使用),如下图所示,即连接成功

6、CentOS7 实战部署ftp文件传输服务器(二)

(1)配置虚拟用户的 vsftpd 服务

虚拟用户访问 vsftpd 服务是得经过用户认证的,虚拟用户的用户认证是通过 pam 方式去认证的, pam 文件里面指定了认证的db 文件, db 文件又是通过明文用户名和密码文件生成而来
  • 第一步:修改配置文件指定用户认证是pam方式认证
  • 第二步:修改pam配置文件指定db文件的路径
  • 第三步:生成db文件
第一步:指定 pam 文件

一般情况下,系统默认会指定 pam 文件

vi /etc/vsftpd/vsftpd.conf

pam_service_name=vsftpd
第二步:编辑 pam 文件,指定认证的db 文件
编辑  pam 文件,【vi /etc/pam.d/vsftpd】 ,把文件内容全部注释掉,在最上面加上以下俩行配置:
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd

​​​​​​​第三步:生成 db 文件
由于 db 文件是通过明文用户名和密码文件生成而来,所以先创建一个保存明文用户名和密码的文件,文件命名为【vuser_passwd.txt】
vi /etc/vsftpd/vuser_passwd.txt #该文件奇行为用户名,偶行为密码
//通过以下命令生成 db 文件:
cd /etc/vsftpd/ && db_load -T -t hash -f vuser_passwd.txt vuser_passwd.db
​​​​​​​第四步:修改配置文件
接下来就是根据需要和以上各文件信息来修改配置文件 /etc/vsftpd/vsftpd.conf 了,启用或更改以 下配置的值
vi /etc/vsftpd/vsftpd.conf

//修改配置内容:
anonymous_enable=NO #禁用匿名登录
ascii_upload_enable=YES
ascii_download_enable=YES
chroot_local_user=YES #启用限定用户在其主目录下


//手动添加配置内容:
guest_enable=YES #设定启用虚拟用户功能
guest_username=ftptest #指定虚拟用户的宿主用户,CentOS 中已经有内置的ftp 用户了
user_config_dir=/etc/vsftpd/vuser_conf #虚拟用户配置文件存放的路径
allow_writeable_chroot=YES #如果启用了限定用户在其主目录下需要添加这个配置

修改完配置文件后,需要重启ftp服务使之生效

systemctl restart vsftpd

第五步:测试虚拟用户的访问情况

ftp://192.168.213.100

这里输入虚拟用户以及密码,可以看到访问成功

第五步:对虚拟用户权限与路径进行配置
mkdir /etc/vsftpd/vuser_conf #创建一个目录存放文件

vi /etc/vsftpd/vuser_conf/xiaoming #创建一个以虚拟用户名的文件(文件名一定要与登录名一
样)
//配置文件内容
local_root=/var/ftp/xiaoming
write_enable=YES
anon_umask=022
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

配置完后,需要重启ftp服务器生效,如下图所示,即可访问成功

(2)配置系统用户的 FTP与配置虚拟用户的 FTP 共存

修改配置文件 /etc/pam.d/vsftpd ,把原来的 auth required 改为 auth sufficient,并且把之前的注释还原,重启ftp服务即可
vi /etc/pam.d/vsftpd

//修改配置文件内容
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd

版权声明:如无特殊标注,文章均来自网络,本站编辑整理,转载时请以链接形式注明文章出处,请自行分辨。

本文链接:https://www.shbk5.com/dnsj/73970.html