导图社区 linux基础
Linux 基础命令 基本环境,介绍了安装Linux操作系统、目录和文件管理、程序安装及管理、账号和权限管理、磁盘和文件系统管理、进程和计划任务管理、系统故障分析和排查、Linux基础网络设置、FTP文件传输服务、DNS域名解析服务。
编辑于2023-08-23 10:09:46 北京市linux管理与服务
安装Linux操作系统
常见的linux发行版
RHEL 红帽 ,Ubuntu ,
基本的区别:ubuntu vs centos
GNU 开发一个类 尤尼克斯系统
gnu/linux
GPLv2
通用公共许可协议
linux系统内分区的表示
sd或hd表示硬盘设备的类型常见的就是sd scsi设备,hd早期ide设备
/dev/sda2
第一个逻辑分区如何表示
/dev/sda1 代表sd设备的第一块硬盘的第一个主分区
/dev/sda5 代表sd设备的第一块硬盘的第一个逻辑分区
文件系统类型
linux系统必备的两个文件系统类型
xfs
XFS一种高性能的日志文件系统
swap
交换文件系统,当真实内存不够用的时候,可以在硬盘上划定分区充当一部分内存用
支持的其它文件系统类型
ext4
jfs
ntfs
引导过程
⑴开机BIOS自检,加载硬盘。 ⑵读取MBR,MBR引导。 ⑶grub引导菜单(Boot Loader)。 ⑷加载内核kernel。 ⑸启动init进程,依据inittab文件设定运行级别 ⑹init进程,执行rc.sysinit文件。 ⑺启动内核模块,执行不同级别的脚本程序。 ⑻执行/etc/rc.d/rc.local ⑼启动mingetty,进入系统登陆界面
Systemd进程
PID =1
系统的主进程
CENTOS7启动级别
0-6七个级别
0 关机状态,使用该级别时将会关闭主机
1 单用户模式,不需要密码验证即可登录系统,多用于系统维护(维护用重点)
2 字符界面的多用户模式(不支持访问网络)
3 字符界面的完整多用户模式,大多数服务器主机运行在此级别(工作用重点)
4 未分配使用
5 图形界面的多用户模式,提供了图形桌面操作环境(学习用重点)
6 重新启动,使用该级别时将会重启主机
查看运行级别
runlevel
返回两个数字,第一位表示之前的运行级别,如果为n表示系统登入后没有切换过运行级别,第二位表示当前的支行级别 第一个为n 表示开机后没换级别
临时切换运行级别
init <0-6>
设置默认运行级别
/etc/inittab文件内容说明了修改默认运行级别的方法
systemctl set-default multi-user.target 级别3
systemctl set-default graphical.target 级别5
系统服务控制
systemctl
控制系统内的服务启动 关闭 查看状态,随服务器系统启动时自动启动
控制类型
start:启动
stop:停止
restart:重新启动 (停止并启动)
reload:重新加载 (重新读取一下配置文件)
status:查看服务状态
chkconfig/service
chkconfig --list #查看所有服务的状态
chkconfig --list 服务名 #查看指定服务的状态
chkconfig --level 级别列表 服务名 on|off #设置系统服务的启动状态
systemctl与service区别
systemctl服务脚本是放在
centos7才使用
/usr/lib/systemd/system/*.service
service服务脚本
centos6使用
/etc/init.d/
shell脚本
是否开机启动
systemctl enable|disable 服务名
chkconfig --level 级别列表 服务名 on|off
目录和文件管理
linux基本命令
命令格式
命令字 [选项] [参数]
以 “-”引导短格式选项(单个字符) 以“--”引导长格式选项(多个字符)
Linux 命令的分类
内部命令:属于 Shell 解释器的一部分 外部命令:独立于 Shell 解释器之外的程序文件
获取帮助信息
help 内部命令
命令 [-h|--help]
man 命令
/bin /sbin
bin 所有用户都可以用的命令
sbin管理员命令
ls cd mkdir rm cp mv touch
mkdir 用途创建文件夹
touch 创建文件
文本查看命令
cat more less head tail wc
cat命令
用途:显示出文本的内容不能翻动
more命令
用途:全屏方式分页显示文件内容并只可向下翻动
.less命令
用途:与 more 命令相同,但扩展功能更多(可上下翻动)
head命令
用途:查看文件开头的一部分内容(默认为10行)
head -n 文件名 …
n为数字可显示指定行数
.tail命令 -f 实时刷新文件 F/f区别
用途:查看文件结尾的少部分内容(默认为10行)
tail -n 文件名 …
n为数字可显示指定行数
-f 选项可监控文件变化,实时输出文件尾部最新添加的内容
-F
wc命令
-l:统计行数 -w:统计单词个数 -c:统计字节数
用途:统计文件中的单词数量(Word Count)等信息
搜索从头至尾或从尾至头
/ 从头搜索
? 从尾至头搜索
文件内容检索命令
grep
-v -i
-i:查找时忽略大小写
-v:反转查找,输出与查找条件不相符的行
条件 ^ $
“^……”表示以……开头,“……$”表示以……结尾
“^$”表示空行
压缩 默认-6 级别 9压缩率最高
gzip
解压
gzip -d
gunzip
压缩包格式 .gz
bzip2
解压
bzip2 -d
bunzip2
压缩包格式 .bz2
tar打包命令
注意,默认只打包并不压缩
常用选项
打包压缩
tar -czvf 包文件名.tar.gz 打包的文件或目录
解包解压
tar -xzvf 包文件名.tar.gz -C 解包目标目录
c x z j v f
-c:创建 .tar 格式的包文件
-x:解开 .tar 格式的包文件
-v:输出详细信息
-f:表示使用归档文件
-t:列表查看包内的文件
-C:解包时指定释放的目标文件夹
-z:调用gzip程序进行压缩或解压
-j:调用bzip2程序进行压缩或解压
-J:压缩成.xz 格式
查看包内容
-t
vim文件编辑器
vim三个模式
命令
作用
输入、编辑
作用
末行
作用
三种模式切换方法
进入命令模式:按esc键
进入末行模式:要先回到命令模式在按 :
进入编辑模式:要先回到命令模式 按 i o a
常用命令快捷键
yy,p,dd,G,gg
程序安装及管理
linux系统常见软件包格式
rpm
适用红帽系统
deb
适用debain系统
源码包
适用于多数linux
常见目录及作用
/usr/bin
/usr/sbin
/etc
rpm包管理命令rpm
增
安装
rpm [选项] RPM包文件 ...
-U:升级某个rpm软件,若原本未装,则进行安装
-F:更新某个rpm软件,若原本未装,则放弃安装
特别选项--force --nodeps
--force:强制安装所指定的rpm软件包
--nodeps:安装、升级或卸载软件时,忽略依赖关系
-i:安装一个新的 rpm 软件包
查
查已经安装的在数据库里的软件
rpm -q[子选项] [软件名]
-qa:查看系统中已安装的所有RPM软件包列表
-qi:查看指定软件的详细信息
-ql:查询指定软件包所安装的目录、文件列表
-qc:仅显示指定软件包安装的配置文件
-qd:仅显示指定软件包安装的文档文件
-qf : 根据文件查安装包
未安装的rpm格式的软件包文件
rpm - qp[子选项] 路径/RPM包文件
-qpi:通过.rpm包文件查看该软件的详细信息
-qpl:查看.rpm安装包内所包含的目录、文件列表
-qpc:查看.rpm安装包内包含的配置文件列表
-qpd:查看.rpm安装包内包含的文档文件列表
源码编译安装
常见源码包格式
.tar.gz
.tar.bz2
步骤及作用
配置
源码目录下 运行config文件 跟上启动模块安装位置等
编译
make
gcc
c++
cmake
安装
make install
账号和权限管理
账号管理
分类
root
uid=0
普通用户
~/.bash_profile:用户每次登录时执行
~/.bashrc:每次进入新的Bash环境时执行
~/.bash_logout:用户每次退出登录时执行
程序用户
标示是/sbin/nologin
增
useradd -d -s -g -G
-u:指定 UID 标记号
-d:指定宿主目录,缺省为 /home/用户名
-e:指定帐号失效时间
-g:指定用户的基本组名(或UID号)
-G:指定用户的附加组名(或GID号)
-M:不为用户建立并初始化宿主目录
-s:指定用户的登录Shell
-r:创建系统用户uid小于一千
删
userdel
-r : 表示连用户的宿主目录一并删除
改
passwd
-l -d
-d:清空用户的密码,使之无需密码即可登录
-l:锁定用户帐号
-S :看锁定状态
usermod
-d -s -g -G
-L -U
-l:更改用户帐号的登录名称
-L:锁定用户账户
-U:解锁用户账户
查
/etc/passwd
七个字段含义
用户名:密码占位符:UID:GID:描述:宿主目录:登录shell
/etc/shadow
!!
一个! 表示账号锁定 或密码锁定 ;两个表示账号密码都锁定
组账号
增
groupadd
groupadd [-g GID] 组账号名
删
groupdel
groupdel 组帐号名
改
gpasswd
-a:向组内添加一个用户
-d:从组内删除一个用户成员
-M:定义组成员列表,以逗号分隔
查
/etc/group
/etc/gshadow
基本组和附加组概念
基本组:创建用户时创建的
附加组:用户加入别人的组
常用用户级组管理命令
users、w 、who
users 显示当前哪些用户登录在系统上。(只显示用户名)
w 显示当前哪些用户登录在系统上。除显示用户登入终端时间等信息列表,还可显示当前系统负载情况。
who 显示当前哪些用户登录在系统上。显示用户登入终端时间等信息列表(无表头)
id groups
id命令:查询用户身份标识
groups命令:查询用户所属的组
权限管理
查看
ls -l
查看目录下所有文件详细信息(第一列为访问权限信息)
ls -ld
查看目录的详细信息(第一列为访问权限信息)
-rwxrwxrwx.
。 为seLinux控制
- 文件 d 文件夹 l 链接
解读
读
r 4
写
W 2
执行
x 1
数字表示
r=4 w=2 x=1 -=0
管理
chmod [ugoa] [+-=] [rwx] 文件名或目录
-R 递归
chown 属主:属组 文件名或目录
-R 递归
磁盘和文件系统管理1
分区
查看硬盘及分区情况
fdisk -l
分区操作
fdisk 分区设备
fdisk交互指令
m:查看操作指令的帮助信息
p:列表查看分区信息
n:新建分区
d:删除分区
t:变更分区类型
w:保存分区设置并退出
q:放弃分区设置并退出
分区id号
82 83 8e
83:Linux默认格式
82:交换分区
8e:逻辑卷
分区表发生变化要执行partprobe命令 刷新存分区表
partprobe 硬盘设备
使用前操作
创建文件系统格式化
swap
mkswap
创建交换文件系统
mkswap 交换分区设备
swapon
使用交换分区命令
swapon 交换分区设备
swapoff
取消使用交换分区命令
swapoff 交换分区设备
查询
free
/proc/meminfo
主文件分区 Ext4 XFs
mkfs -t 文件系统类型 分区
mkfs.文件系统类型 分区
挂载使用
查看
mount
-a 默认挂载重新刷新一次
-t 文件系统类型
不带任何参数选项表示查询当前系统的所有分区设备挂在情况
du
目录空间
df
查挂载分区空间
dd
创建多大空间
挂载
mount -t 文件系统类型 分区设备 挂载点
光驱:/dev/sr0 /dev/cdrom
iso文件:iso9660
-o loop 表示一个回环设备
自动挂载
/etc/fstab
分区设备 挂载点 文件系统类型 default 0 0
磁盘和文件系统管理2
逻辑卷
基本概念
作用
动态调整磁盘容量,从而提高磁盘管理的灵活性(方便我们随意的对分区大小进行调整)
pv vg lv pe
一块4M
pv物理卷 vg卷组 lv逻辑卷
命令
创建pv vg lv
pvcreate 设备名1 [设备名2 … …]
vgcreate 卷组名 物理卷名1 物理卷名2
lvcreate -L 容量大小 -n 逻辑卷名 卷组名
lvextend -L +大小 /dev/卷组名/逻辑卷名
扩展vg lv
lvextend -L +10G /dev/mail_store /mbox
过程
第一步:对硬盘分区并设置为8e类型,并转换为物理卷pv 第二步:创建卷组,就是将刚才的物理卷,放到盒子里 第三步:创建逻辑卷,就是从盒子里拿空间以做逻辑卷使用 其它:对逻辑卷进行扩容或减小操作
XFS_growfs 扩展后执行
pvcreate 设备名1 [设备名2 … …] vgcreate 卷组名 物理卷名1 物理卷名2 lvcreate -L 容量大小 -n 逻辑卷名 卷组名 lvextend -L +大小 /dev/卷组名/逻辑卷名
磁盘配额
实现磁盘限额的条件
不同的文件系统磁盘配额实现方法不同
磁盘限额的特点
作用范围
具体文件系统分区
针对指定的文件系统(分区)在xfs(可以在目录)或ext4(只能在分区上)文件系统上实现磁盘配额,具体方法有差异,有些文件系统不支持磁盘限额。
限制对象
用户 用户组
限制类型
体积空间
磁盘容量(默认单位为 KB)是指达到多少Mb或Gb后不再能使用磁盘文件数量 是指达到多少数量的文件后不能再使用磁盘。
文件节点数
查看df -i
限制方法
软限制
达到限制后还可以继续使用
硬限制
硬性条件,达至后不可继续使用。
启用文件系统的配额支持
方法
自动挂载
/etc/fstab defaults,usrquota,grpquota
手动挂载
mount -o usrquota,grpquota
配额设置
xfs_quota
-x -c
-x:启动专家模式,在当前模式下允许对配额系统进行修改的所有管理命令可用
-c:直接调用管理命令,如limit,report等
子命令
limit bsoft bhard isoft ihard -u -g
-u:对用户限制 -g:对组限制 bsoft:磁盘容量软限制 bhard:磁盘容量硬限制 isoft:文件数量软限制 ihard:文件数量硬限制
report -u -g -i -b
其它命令
启用关闭quotaon、quotaoff
查询
quota -u -g
quota -u 用户名
quota -g 组名
repquota
repquota 文件系统
进程和计划任务管理
进程
概念
在 CPU 及内存中运行的程序代码
动态执行的代码
查询
ps
aux
u 按用户名和启动时间的顺序来显示进程;
a 显示所有用户的所有进程(包括其它用户);
x 显示无控制终端的进程;
-elf
-e 显示所有进程,环境变量
-f 全格式
-l 长格式
用户 pid %cpu %mem stat command
PID进程id号
%CPU 进程占cpu的比例
%MEM 进程占用内存的比例
STAT 进程的状态
常见状态:
R //正在运行可中在队列中可执行的;
<优先级
+前台
S //处于休眠状态;
COMMAND 进程对应的命令或程序
top
第一行,最后部分(load average: 0.00, 0.01, 0.05)表示计算机在1分钟,5分种,15分种内的平均 负载情况 第二行,表示当前进程的统计信息 第三行,表示cpu的使用情况,其中id表示cpu空闲比例,值越大cpu越空闲。 第四行,表示内存的使用情况 第五行,表示swap交换分区的使用情况 底部表格部分 pid进程id号 %CPU 进程占cpu的比例 %MEM 进程占用内存的比例 S 进程的状态 COMMAND 进程对应的命令或程序
-d指定刷新时间
动态
状态列表示的常见状态
pgrep 根据特定条件查询进程 PID 信息
-l -U -t
-l:显示进程名
-U:指定特定用户
-t:指定终端
pstree
以树的形式显示进程间的父子关系
pstree -aup
-a:显示完整信息
-u:列出对应用户名
-p:列出对应PID号
进程操作
启动
将程序切至后台的方法
&
Ctrl+z
查看后台支行的程序
jobs
fg
杀死
kill
用于终止指定PID号的进程
killall
用于终止指定名称的所有进程
pkill
-U -t
-U:根据进程所属的用户名终止相应进程
-t:根据进程所在的终端终止相应进程
常用进程信号 1=HUP 3=QUIT 9=KILL
计划任务
一次性计划任务
at [hh:mm] [yymmdd]
HH:MM] 表示时间
[yyyy-mm-dd] 表示日期
Ctrl+d保存
周期性计划任务
crond服务必须运行,计划任务才有可能被执行
/var/spool/cron/
任务编辑
格式 分钟 小时 日期 月份 周几 命令或脚本
时间的表示方式
* 表示该范围内的任意时间
, 表示间隔的多个不连续时间点
- 表示一个连续的时间范围
/ 指定间隔的时间频率
任务命令
crontab -e -l -r
添加编辑计划任务
crontab -e [-u 用户名]
查看计划任务
crontab -I [-u 用户名]
删除计划任务
crontab -r [-u 用户名]
系统故障分析和排查
解决故障的思想
通过分析日志解决故障
日志
分类
系统日志
/var/log
messages
该文件几乎记录了系统发生的所有错误信息(或者是重要的信息),所以这个文件相当重要;如果系统发生莫名的错误时,这个文件是必查的日志文件之一。
dmesg
该文件记录系统在开机时内核检测过程中所产生的各项信息。
用户日志
/var/log
wtmp
utmp
secure 安全日志
lastlog
该文件记录了系统上所有帐号最近一次登入系统时的相关信息。
程序日志
日志服务程序
rsyslogd
分析查看日志工具
cat tail head grep awk sed
用户日志分析工具
who w
last 正常登录记录
lastb 异常登录记录
日志管理策略
及时作好备份和归档 延长日志保存期限 控制日志访问权限 集中管理日志
常见系统故障
mbr
mbr作用
表现
grub
grub作用
表现
忘记root密码
文件系统错误
xfs_repair命令修复
磁盘空间不足
查看
df -i -h
磁盘坏道
badblocks命令修改
Linux基础网络设置
查看测试
ifconfig
可以查看计算机内所有网络接口(网卡)信息
hostname
返回当前主机名
ping 用icmp协议 互联网控制消息协议
测试网络存活
traceroute
测试从当前主机到目的主机之间经过的网络节点
route
查看或设置主机中路由表信息
-n:将路由记录中的地址信息显示为数字形式
netstat
查看系统的网络连接状态、路由表、接口统计等信息
lsof 查看链接
nslookup
测试DNS域名解析
IP
设置
临时设置
ifconfig
设置ip地址
ifconfig 网络接口名 ip地址 [netmask 子网掩码]
ifconfig 网络接口名 ip地址[/掩码长度]
启动关闭网卡
ifconfig ** up|down
ifup|ifdown **
route
设置网关
删除 route del default gw 网关IP地址
添加 route add default gw 网关IP地址
添加指定网段路由 route add -net 网段地址 netmask 子网掩码 gw IP地址
固定设置
设置网卡
配置文件位置:/etc/sysconfig/network-scripts/ifcfg-ens**
内容
获取ip方式
dhcp\静态\none
ip地址
IPADDR=
网关
GATEWAY=
dns
DNS
网卡启动状态
主机名
hostnamectl set-hostname 主机名
/etc/hostname
设置dns
/etc/resolv.conf
nameserver ip
主机名映射
/etc/hosts
作用
保存本机需要使用的DNS服务器的IP地址
重启网络
systemctl restart network
dhcp
作用
为大量客户机自动分配地址,提供集中管理
减轻管理和维护成本、提高网络配置效率
端口 68
配置文件
/etc/dhcp/dhcpd.conf
全局
default-lease-time、max-lease-time全局配置项,
subnet区域
option domain-name-servers
服务器地址
range
分配ip地址范围
option routers
网关地址(通常设定为本机ip地址)
host {}
hardware ethernet 参数:指定对应主机的 MAC 地址 fixed-address 参数:指定为该主机保留的 IP 地址
option subnet-mask 设置子网掩码
FTP文件传输服务
FTP服务基础理论
作用
传输文件
使用两个端口
tcp21
用于发送FTP命令信息
tcp20
用于上传、下载数据
数据连接类型
主动模式:服务端从 20 端口主动向客户端发起连接
被动模式:服务端在指定范围内某个端口被动等待客户端连接
FTP 用户的类型
匿名用户:anonymous 或 ftp
本地用户:帐号名称、密码等信息保存在 passwd、shadow 文件中
虚拟用户:u 使用独立的帐号/密码数据文件
配置文件
/etc/vsftpd/vsftpd.conf
用户控制列表文件
ftpusers
user_list
内容
全局配置
userlist_enable
是否启用 user_list 列表文件
userlist_deny
是否禁用 user_list 中的用户
匿名
anon_root
匿名用户的 FTP 根目录
anon_upload_enable
允许上传文件
本地用户
local_enable=YES:是否启用本地系统用户
local_umask=022:本地用户所上传文件的权限掩码
local_root=/var/ftp:设置本地用户的 FTP 根目录
chroot_local_user=YES:是否将用户禁锢在主目录
local_max_rate=0:限制最大传输速率(字节/秒)
虚拟
注意事项:他使用了匿名和本地用户的一些配置项
1.建立虚拟 FTP 用户的帐号数据库文件
文件编辑 奇数用户名偶数密码
db_load加密刚才的文件文件
2、vsftp把认证的过程交给系统的pam
设置系统的pam模块
/etc/pam.d/***
3、在vsftpd配置文件内进行配置
启用虚拟用户
guest_enable
设置虚拟用户映射的程序用户
useradd -s /sbin/nologin
guest_username
把pam认证功能开启
pam_service_name
4、实现不同用户不同权限,不同的ftp根目录
对应每一个虚拟用户创建一个单独的配置文件
mkdir
虚拟用户配置文件名=虚拟用户名
在主配置文件内使用用户配置文件
user_config_dir
DNS域名解析服务
DNS 系统的作用及类型
作用正向解析反向解析
正向解析:根据主机名称(域名)查找对应的 IP 地址
反向解析:根据 IP 地址查找对应的主机域名
缓存域名服务器
作用
通过向其他域名服务器查询获得域名 -> IP 地址记录
将域名查询结果缓存到本地,提高重复查询时的速度
主域名服务器
作用
特定 DNS 区域的官方服务器,具有唯一性
负责维护该区域内所有域名 -> IP 地址的映射记录
从域名服务器
作用
也称为 辅助域名服务器
其维护的 域名 -> IP 地址记录 来源于主域名服务器
dns工作原理
BIND服务器端程序
主配置文件
/etc/named.conf
数据(域名至ip的映射记录)文件
/var/named/
主程序
/usr/sbin/named
端口
53 tcp udp
配置
主配置文件
全局配置
options{}
directory
域配置
zone 域名 in{}
type
master
slave
hint
file
allow-transfer
反向解析域
数据配置文件
soa
解析记录
PTR 指针
泛域名解析
NS 域名服务器(Name Server)记录
MX 邮件交换(Mail Exchange)记录
A 地址(Address)记录,只用在正向解析区域中
CNAME 别名(Canonical Name)记录
检测配置文件是否正确
named-checkconf
named-checkzone
安全与高级应用
1.Web网站服务
apache特点
什么是web服务
网页的应用程序,动态web站点
主要特点 开放源代码、跨平台应用 支持多种网页编程语言 模块化设计 、运行稳定、良好的安全性
版本2.2&2.4
支持php,python
编译安装
.configure 常用选项
prefix 指定安装路径
enable-so 启动动态加载模块
enable-rewrite 网页地址重写
enable-charset-lite 启用字符集
enable-cgi 启用cgi脚本
enable-ssl 加密访问
enable-modules 模块编译到apache中
安装后目录说明
bin
httpd
主要程序文件
apachectl
启动脚本
安装目录下/etc下的init.d
conf
httpd.conf
配置文件
extra
httpd_vhosts.conf
返回客户端错误信息包含邮件地址
虚拟web主机配置文件
logs
access_log
数据日志文件
error_log
错误日志文件
htdocs
默认网站根目录
httpd.conf
常用配置参数
ServerRoot 服务目录
ServerAdmin 管理员邮箱
DocumentRoot 网页文档的根目录
Linten 监听的IP地址,端口号
DirectoryIndex 默认的索引页文件
Include 需要包含进来的其他配置文件
servername 网站域名名称
Web站点部署过程
1.确定网站名称、IP地址
2.配置并启动httpd服务
3.部署网页文档
4.在客户机中访问Web站点
5.查看Web站点的访问情况
2.Web网站服务
访问控制
作用
控制对网站资源的访问
为特定的网站目录添加访问授权
实现方式
两个
根据客户地址
根据用户授权
配置实现
Drietory配置区域
主配置文件httpd.conf文件内<Driectory *>***</Driectory> 区域内
客户地址
Require语句
允许IP地址访问
Require all granted denay
Require ip 地址
拒绝IP地址访问
Require denied granted
用户授权
过程
1、创建用户账号文件
./htpasswd -c /usr/local/httpd/conf/.httpdpwd webadmin
常用选项
-c: 自动创建文件,仅应该在文件不存在时使用
-p: 明文密码
-d: CRYPT格式加密,默认
-m: md5格式加密
-s: sha格式加密
-D: 删除指定用户具体使用案例如下图所示
2、Directory应用账号文件配置
vim /usr/local/httpd/conf/httpd.conf
AuthName "AWStats Directory" 受保护的领域名称
AuthType Basic 设置认证的类型
AuthUserFile /usr/local/httpd/conf/.httpdpwd 用户认证账号文件
Require valid-user 要求通过认证才能访问
虚拟web主机
概念
在同一台服务器中运行多个Web站点,其中每一个站点并不独立占用一台真正的计算机
方式
基于域名
基于端口
基于IP地址
配置方法
/usr/local/httpd/conf/extra/httpd-vhosts.conf
配置端口 邮箱 站点根目录 域名 别名 错误日志文件 数据日志文件
VirtualHost配置区域
每个区域对应一个虚拟web主机
Directory配置区域进行授权
主配置文件里添加允许命令
httpd日志分析工具
AWStats
webalizer
apachetop
3.MySQL数据库系统
特点
c/s 默认给我的c端命令行工具
多线程、多用户
基于c/s(客户端/服务器)架构
简单易用、查询速度快
mysql
对比oracle
oracle 对象关系数据库管理系统
面向对象
mysql 开源型数据库管理系统
Qracle安全功能比mysql相对安全
Orcale由表空间 msql没有表空间
oracle是大型数据库 mysql中小型数据库
oracle可以设置用户权限,访问权限、读写等 mysql没有
oracle事务支持上比mysql
mysql没有行锁定 oracle支持行锁定
安装
三种方式
rpm包安装
二进制安装
源码编译安装
专用编译工具
cmake
编译安装需要使用安装编译工具
配置选项
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql 指定mysql安装位置 -DSYSCONFDIR=/etc 指定mysql配置文件my.cnf位置 -DDEFAULT_CHARSET=utf8 数据库进和以mysql用户身份支行 -DDEFAULT_COLLATION=utf8_general_ci 指定字符校验方法 -DWITH_EXTRA_CHARSETS=all 指定mysql扩展语言(中文可以正常存储)
初始化mysql root用户密码
mysql -uroot set password=password('123.com')
主配置文件
名称、位置
/etc/my.cnf 主配置文件
配置区域及主要内容
defualt-character-set=utf8 设置mysql客户端默认字符集
skip-grant-tables 跳过权限校验
port = 3306 设置3306端口
basedir=/usr/local/mysql 设置mysql的安装目录
datadir=/data/mysql 设置Mysql数据库的数据的存放目录
max_connections 允许最大连接数
character-set-server=utf8 创建新表时将使用的默认存储引擎
默认端口
3306
bin目录下主要程序
mysql
主程序 客户端工具
mysqladmin
修改密码
mysqladmin -u root [-p] password 新密码
mysqldump
数据库的备份与恢复
备份所有数据库 mysqldump -u root -p --all-databases > all-data.sql
使用专用备份工具 mysqldump mysqldump -u root -p mysql user > mysql-user.sql
恢复操作 mysql -u root -p [数据库名] < /备份路径/备份文件名
mysqld
守护进程
基本应用
mysql命令登入服务
mysql -u -p -h -P
-u用户名
-p 密码
h IP地址
-P 端口号
常用管理语句
数据库的增删查
CREATE DATABASE 数据库名
创建
DROP DATABASE 数据库名
删除
INSERT INTO 表名(字段1,字段2,) VALUES(字段1的值,字段2的值)
插入
数据表的增删查
use 打开数据库
DROP TABLE [数据库名.]表名
UPDATE 表名 SET 字段名1=值1[字段名2=值2] WHERE 条件表达式
授权
grant
设置用户权限
如何开启mysql远程访问
GRANT 权限列表 ON 数据库名.表名 TO 用户名@来源地址 [INENTIFIED BY '密码']
使用grant 在来源地址输入相应地址 ,%代表所有
sql语句
增删改查
一次插入多行
INSERT INTO table(column1,column2...) VALUES (value1,value2,...);
排序order by
asc正序默认
desc 倒叙
取部分记录limit
去重
select distinct *(字段名) from 表名
联合查询
left join
左连接
right join
右连接
inner join
内连接
常用的索引类型
主键索引
普通索引
唯一索引
全文索引
复合索引
去重索引
mysql备份还原
备份命令
mysqldump -u 用户名 -p 数据库名.数据表 > 导出的文件名
恢复命令
mysql -uroot -p [数据库名] < /备份路径/备份文件名
备份工具
4.LAMP平台部署及应用
lamp
平台作用
企业成熟的可提供动态Web站点应用及开发环境
有动态语言开发、数据库支持
web应用平台 测试 开发
组成
linux、Apache、Mysql/marigdb、PHP/Perl/Python
优势
成本低廉 可定制、易于开发 方便易用、安全和稳定
lamp组合工作流程
用户向web服务器发送请求,访问点击站点内容,服务器接收请求,web服务器给php发送请求,php调用mysql查询后发送给web在发送用户
php安装
./configure
apxs2
开启httpd的php支持模块
mysql
使php可以连接mysql
prefix
指定安装路径
mysqli/pdo
客户端工具 丢了无法执行mysqli语句
php开发的mysql模块
mcrypt
加密模块被ssl取代
mbstring
多字节字符
php.ini
default_charset = "utf-8" 设置默认字符编码 upload_max_filesize = 2M 允许动过网页上传的最大体积 post_max_size = 8M 允许通过post提交的内容最大体积 date.timezone = "Asia/Shanghai" 时区设置或简写PRC表示中华人民共和国
httpd配置以支持php脚本的解析
LoadModule php7_module modules/libphp7.so 加载PHP程序模块(该配置项存在) AddType application/x-httpd-php .php 支持.php网页文件 DirectoryIndex index.php index.html 设置站点默认索引页
phpMyAdmin
数据库管理套件 使用PHP语言编写,Web界面对Mysql数据库进行管理
5.AWK应用
awk作用
允许您创建简短的程序,这些程序读取输入文件、为数据排序、处理数据、对输入执行计算以及生成报表,还有无数其他的功能。
awk的原理
对一个文本进行分析,打开这个文件,读取文本里第一行的内容,赋给变量$0,对每段进行切分,默认空格分隔,依次赋给直到最后,打印出来
命令格式
常用选项
-F
指定输入文件折分隔符
-f
从脚本文件中读取awk命令
-v
赋给一个用户定义变量
awk常用语句
{print等语句}
打印脚本
BEGIN{}
执行前的语句
END{}
处理完所有的行后要执行的语句
常用内部变量
$n $0
当前记录的第n个字段,字段间由FS分隔
完整的输入记录
$0 赋值给$0
一条记录的整个内容
FS NF RS OFS ORS
字段分隔符(默认时任何空格)
一条记录的字段的数目
记录分隔符(默认时一个换行符)
输出字段分隔符,默认值与输入字段分隔符一致
输出记录分隔符(默认值是一个换行符)
面试实例
现有一个文本N行 每行由空格分类为不等的字段 要求输出每行的最后一个字段
分析apache的日志,统计访问前10的ip地址 sort 排序 uniq 统计去重 head
常用分析检索语句
awk -F: '{print NF}' /etc/passwd //显示每行有多少字段
awk -F: '{print NF}' 查询的文件 //输出文件每行有多少字段
awk -F'[:#/]' '{print NF}' 查询的文件 //指定三个分隔符,并输出每行字
ls -l|awk 'BEGIN{sum=0} !/^d/{sum+=$5} END{print "total size is:",sum/1024,"KB"}' 计算/home目录下,普通文件的大小,使用KB作为单位
6.Shell脚本应用一
什么是shell
常见的shell
/bin/sh
/bin/bash
/sbin/nologin
区别
shell脚本
概念
shell脚本=若干系统命令+脚本文件基本格式+脚本语言特定语法+解决问题的思想
作用
命令解释器翻译官 人机交互的桥梁,介于内核与用户之间,负责解释命令行 执行脚本完成繁琐的工作内容
脚本基本格式
第一行的作用
#!告诉系统用的是那个shell脚本文件
#
注释信息
脚本运行方法
路径
脚本文件路径 标准的 (脚本声明生效) 需要权限 ./first.sh
指定shell
sh bash 指定脚本文件路径 (不会生效) sh first.sh
当前shell
source . 脚本文件路径 (不会生效) source fitst.sh
用当前用户的shell./执行方式需要执行权限,sh和source执行方式不需要执行权限
特殊符号
重定向
作用
交互式硬件设备
标准输入:从该设备接收用户输入的数据
标准输出:通过该设备向用户输出数据
标准错误:通过该设备报告执行出错信息
< > >> 2> 2>> &>
> 将输出结果保存到指定的文件(覆盖原有内容)
>> 将输出结果追加到指定的文件
2> 将错误信息保存到指定的文件(覆盖原有内容)
2>> 将错误信息追加到指定的文件中
&> 将标准输出、标准错误的内容保存到同一个文件中
标准错误输出重定向至标准输出
2>&1
管道
作用
将左侧的命令输出结果,作为右侧命令的处理对象
双连接符
&&
上一条命令执行成功才执行下一条命令
shell变量
概念
用于计算机中的数据在内存中的表示
管理linux系统提供特定参数两层意思:变量名:使用固定的名称,由系统预设或用户定义 变量值:能够根据用户设置、系统环境的变化而变化
自定义变量
变量名=变量值
变量名约束
变量名以字母或下划线开头,区分大小写约束
变量值:'' "" ``
双引号:通过$符号引用其他变量值
单引号:禁止引用其他变量值,shell中特殊符号都被视为普通字符
反撇号:$小括号 引号或括号里面的命令会优先执行
交互式定义
read语句
read [-p “信息提示”] 变量名
变量作用范围
export
让一个变量在其子shell中需要export
整数变量的运算
expr (+ - \* / %)
expr 变量1 运算符 变量2 [运算符 变量3]
10/3
+ - * / % 取余
不能用小数不能用整数
变量引用
$变量名
输出 echo
环境变量
env查看系统的所有环境变量
常用的环境变量
PATH
PATH变量记录的路径,PATH路径下的文件,可以在任何位置执行,通过which可执行文件命令来找到命令对应文件位置
配置文件
/etc/profile
/该文件内设置的环境变量对全部用户有效
~/.bash_profile
~表示宿主目录,该文件内设置的环境变量只对单个用户有效
/etc/bashrc
使用bash shell用户全局变量
~/.bashrc
当前用户的bash信息(aliase、umask等)
~/.bash_logout
每个用户退出当前shell时最后读取的文件
用户登录系统读取相关文件的顺序: /etc/profile > ~/.bash_profile > ~/.bashrc > /etc/bashrc > ~/.bash_logout
位置变量
概念
通过命令行给脚本程序传递参数
脚本后面的参数位置
获取脚本输入的参数
表示$n
$n,n为1~9之间的数字
超过9用{}
范围1-9
{10}~${n} 扩展位置参数变量 第10个位置变量必须用{}大括号括起来 当一条命令或脚本执行时,后面可以跟多个参数,我们使用位置变量来获取并表示这些参数。$1 代表第 1 个参数,$2 代表第 2 个参数,依次类推。
预定义变量
$# $* $? $0 $@ $$
$# 表示命令行中位置参数的个数
$* 表示所有位置参数的内容
$?表示前一条命令执行后返回的状态,0表示执行正确,非0表示异常
$0 表示当前执行脚本或程序的名称
$@ 传给脚本的所有参数的列
数组显示的
$$ 脚本运行的当前进程ID号
获取当前脚本的pid
系统不能改
7.Shell脚本应用二
条件测试操作方法
test
test 条件表达式
[ 条件测试操作 ]
中括号内部要有空格
文件测试
[ 操作符 文件或目录 ]
-d -e -f -r -w -x
-d 是否为目录(directory)
-e 文件或目录是否存在(exist)
-f 是否是文件(file)
-r 是否具有读取权限(read)
-w 是否具有写入权限(write)
-x 是否具有执行权限(excute)
整数值比较
[ 整数1 操作符 整数2 ]
-eq -ne -gt -lt -ge -le
-eq 第一个数等于第二个数(equal)
-ne 第一个数不等第二个数(not equal)
-gt 第一个数大于第二个数(greater than)
-lt 第一个数小于第二个数(leasser than)
-le 第一个数小于或等于第二个数(leasser or equal)
-ge 第一个数大于或等于第二个数(greater or equal)
字符串比较
[ 字符串1 = 字符串2 ] [ 字符串1 != 字符串2 ] [ -z 字符串 ]
= != -z
= 第一个字符和第二个字符相等
!= 第一个字符和第二个字符不等
-z 检查输出的字符串是否为空
逻辑测试
[ 表达式1 ] 操作符 [ 表达式2 ] ... [ ! 表达式 ]
-a -o ! && ||
&& 而且,必须每个命令都成立,使用test时&&可以替换为-a (与)
|| 或者,多条件中成立一条即可,使用test时||可以替换为-o (或)
! 否定,当前所有条件都不成立是,测试结果为0 (非)
if语句
if语句的分支指的是不同测试结果所对应的执行语句(一条或多条)
单分支
对于单分支的选择结构,要求针对条件成立的情况下执行操作
if 条件测试操作
then 命令序列
fi
双分支
说明:对于双分支的选择结构,要求针对条件成立,条件不成立,两种情况分别执行不同的操作
语法
if 条件测试操作
then 命令序列1
else 命令序列2
fi
多分支
说明:对于多分支的选择结构,可以测试多个条件,不同条件成立执行不同操作
if 条件测试操作1
then
命令序列1
elif条件测试操作2
......
else
命令序列3
fi
常用的脚本
判断一个进程是否存在
cat chkprocess.sh #!/bin/bash read -p "请输入需要判断的进程名(httpd):" process pgrep $process &>/dev/null if [ $? -eq 0 ] then echo "进程$process存在" else echo "进程$process不存在" fi
判断目标主机是否存活
#!/bin/bash ping -c 3 -i 0.2 -W 3 $1 &> /dev/null if [ $? -eq 0 ] then echo "Host $1 is up." else echo "Host $1 is down." fi ping命令选项说明 -c : 3个测试包 -l : 间隔0.2秒 -w : 超时3秒
8.Shell脚本应用三
for
特点
读取不同的变量值,用来逐个执行统一组命令
语法
for 变量名 in 取值列表
do
命令序列
done
取值列表获取方法
默认以空格作为分隔的多个内容直接放在in关键字后面
从命令中取值(如Ls cat等命令)
while
特点
重复测试某个条件,只要条件成立则反复执行
语法
while 条件测试操作
do
命令序列
done
避免死循环
exit break
改变条件
lei
后面跟变量名++ 或 --
case
特点
针对变量的不同取值,分别执行不同的命令序列
语法
case 变量值 in
模式1)
命令序列1
;;
模式2)
命令序列2
;;
........
*)
默认命令序列
其他值
esac
所有的case都可用多分支if语句表达
常用脚本
批量添加用户脚本
#!/bin/bash PREFIX=“stu” i=1 while [ $i -le 20 ] do useradd ${PREFIX}$i echo "123456" | passwd --stdin ${PREFIX}$i &> /dev/null let i++ done --------------------------------------- sh uaddwhile.sh grep "stu" /etc/passwd | tail -3
i:来控制用户名称的编号,初始赋值为1,并且当取值大于20时终止循环。 let i++ 等同于i=`expr $i + 1 ` 使变量i的值增加1,当执行第一次循环后i的值将变为2,执行第2次 循环后i的值变为3;以此类推。
批量删除用户脚本
#!/bin/bash PREFIX=“stu” i=1 while [ $i -le 20 ] do userdel -r ${PREFIX}$i let i+ done --------------------------------- sh udelwhile.sh id stu20
函数
https://www.runoob.com/linux/linux-shell-func.html
https://zhuanlan.zhihu.com/p/613049285
9.系统安全及应用
账号安全控制
系统账号清理 userdel -r games 将非登录用户的Shell设为/sbin/nologin usermod -s /sbin/nologin lisi 锁定长期不使用的账号 usermod -L lisi passwd -l lisi 删除无用的账号 userdel -r games 锁定账号文件passwd、shadow chattr +-i
passwd -l -u -S usrmod -L -U
-S 查看锁定账号状态
-u 解锁账号
-L 锁定账号
-U 解锁账号
chattr +-i lsattr
+i 锁定账号配置文件
-i 解锁定文件
lsattr /etc/passwd /etc/shadow 查看锁定的文件
密码安全控制
设置密码有效期
chage -M -d
-M 有效期 -d强制修改密码
-0 下次登录修改密码
设置密码复杂程度
/etc/pam.d/login
设置密码重试次数
/etc/pam.d/system-auth下
auth required pam_tally2.so deny=3 unlock_time=600 account required pam_tally2.so
禁止空口令账号登录系统
/etc/pam.d/system-auth
登入操作安全控制
超时自动注销登录
/etc/profile
命令历史记录数量限制
/etc/profile
history
注销时自动清空命令历史记录
~/.sh_logout
history -c
注销时自动清空命令历史记录
快速执行历史命令
! +编号
用户切换与提权
su
选项 -
-:当前用户不仅切换为指定用户的身份,同时所用的工作环境也切换为此用户的环境(包括PATH 变量、MAIL 变量等),使用 - 选项可省略用户名,默认会切换为 root 用户。
特点
需要知道对方账号不安全
特点切换用户
安全控制(授权用户使用su命令方法)
/etc/pam.su
sudo
命令用法
sudo要执行的命令
sbin下的
特点
切换至root身份去执行命令,只需要知道自己的密码即可
安全控制
visudo /etc/sudoers
用户名 主机名列表=管理命令列表
%用户名
组
管理命令列表支持 * !
!取反 *所有
日志
/var/log//sudo
弱口令检测
jr
端口扫描
nmap
10.远程访问及控制
服务端
openSSH
sshd
sshd.service
服务脚本
端口
22
ssh概念
对比telnet
ssh端口号可以更改
非常安全的协议,共享并发送加密信息
ssh使用公钥用于对访问服务器的用户验身份
telnet端口号23
telnet不是一种安全通信协议,并不适使用任何安全机制
telnet不适用任何验证策略及数据加密方法
telnet不用于通过公共网络访问网络设备和服务器
为客户提供安全的shell环境,用于远程管理
配置文件
/etc/ssh/sshd_config
常用配置项
Port 22 //端口号
PermitRootLogin no //是否禁止root用户远程登入
PermitEmptyPasswords no //是否允许空密码用户远程登入
LoginGraceTime 2m //登录超时时间
MaxAuthTries 6 //重试次数
allowusers 用户名 用户名@主机地址
空格分割的用户列表或用户名@客户机IP地址列表,表示允许用户登入
黑白名单
denyusers 表示拒绝用户不能与allowusers同时使用
验证类型
密码验证
密钥证书验证
公钥加密私钥解密
客户端
常用客户端
xshell
putty
ssh命令
ssh命令 —远程安全登录 格式:ssh user@host -l:指定连接用户 -p:指定端口 没有指定用户系统当前的用户 sftp命令 —安全FTP上下载 格式:sftp user@host
使用ssh通道的应用
scp
scp命令 —远程安全复制 格式1:scp user@host:file1 file2 将远程文件拷贝到本地 格式2:scp file1 user@host:file2 将本地文件拷贝到远程
sftp
对比ftp
1.FTP不提供任何安全通道来的主机之间传输文件;而SFTP协议提供了一个安全通道(ssh),用于在网络上的主机之间传输文件
2.FTP使用TCP/IP协议 SFTP是SSH协议的一部分,是一种远程登录信息
FTP端口使用TCP21 SFTP是在客户端和服务器之间通过SSH协议TCP端口22
FTP密码和数据以纯文本格式发送,不加密,安全想不高 SFTP会在发送之前加密数据,二进制形式安全性高
rsync
数据镜像备份工具
支持本地两个目录之间的同步,也支持远程同步,它可以将本地内容,同步到远程服务器
刷新文件系统缓存,强制将修改过的数据块写入磁盘,并且更新超级快。一般重启系统前执行sync命令
1.可以镜像保存整个目录树和文件系统 2.可以保留原有的权限,owner,group,时间,软硬链接,文件属性等信息 3.传输效率高,只比较变化的 4.支持匿名传输,也可以做验证,加强安全
密钥对验证的SSH体系
第一步
客户机创建密钥对
ssh-keygen -t rsa 加密算法 //连续回车后会在宿主目录下生成密钥对文件
过程及默认位置名称
私钥文件:id_rsa 公钥文件:id_rsa,pub
第二步、第三步
ssh-copy-id -i
公钥文件 user@host
公钥库文件
验证密码后,会将公钥自动添加到目标主机user宿主目录下的
~/.ssh/authorized_keys
第四步
TCP Wrappers概述
工作原理
访问控制限制
工作在传输层 保护服务ftp、ssh
配置方法
访问控制策略的配置文件
/etc/hosts.allow
/etc/hosts.deny
内容格式
服务列表:客户机地址列表
11.iptables防火墙一
工作原理
包过滤机制
转发
地址转换
netfilter
内核态
iptables
用户态
作用
过滤
重定向
nat地址转换
iptables结构
四表
作用、顺序
raw:确定是否对该数据包进行状态跟踪
mangle表:为数据包设置标记
nat表:修改数据包中的源、目标ip地址或端口
filter表:确定是否放行该数据包(过滤)
五链
作用、顺序
INPUT:处理入站数据包
OUTPUT:处理出站数据包
FORWARD:处理转发数据包
POSTROUTING链:在进行路由选择后处理数据包
PREROUTING链:在进行路由选择前处理数据包
入站
PREROUTING INPUT
出站
OUTPUT POSTROUTING
转发
PREROUTING FORWARD POSTROUTING
规则
作用、顺序
按顺序依次检查、匹配即停止(LOG策略例外)
log记录日志继续处理
若找不到相匹配的规则,则按该链的默认策略处理
表链包含关系
nat filter
nat
PREROUTING链
POSTROUTUTING链
OUTPUT链
filter
INPUT链
FORWARD链
OUTPUT链
语法
iptables [ -t 表名 ] 选项 [ 链名 ] [ 条件 ] [ -j 控制类型 ]
选项
-I -A -D -F -L -P
添加新的规则
-A 在链的末尾追加一条规则
-l 在链的开头(或指定序号)插入一条规则
查看规则列表
-L 列出所有的规则条目
-n 以数字形式显示地址、端口等信息
-v 以更详细的方式显示规则信息
--line-numbers 查看规则时,显示规则的序号
删除、清空规则
-D 删除链内指定序号(或内容)的一条规则
-F 清空所有的规则
修改策略
-P
为指定的链设置默认规则
控制类型
ACCEPT DROP REJECT LOG SNAT DNAT REDICTER MASQUERADE
ACCEPT:允许通过
DROP:直接丢弃,不给出任何回应
REJECT:拒绝通过,必要时会给出提示
LOG:记录日志信息,然后传给下一条规则继续匹配
REDICTER:端口映射端口转发
MASQUERADE:地址欺骗
条件
通用匹配条件
-p
协议名
-s -d
源地址、目的地址
-i -o
入站网卡、出站网卡
隐含匹配条件
--sport --dport
源端口、目的端口
tpc-flags
SYN
ACK
检查范围、被设置的标记
icmp-type
8
回显应答
3
回显请求
0
不可达
ICMP类型
特点:必须要根据协议一块用
显示匹配条件
mac
MAC 地址匹配
-m mac --mac-source MAC地址
multiport
多端口匹配
-m multiport --sports | --dports 端口列表
state
状态匹配
-m state --state 连接状态
iprange
ip范围匹配
-m iprange --src-range IP范围
time
时间段控制
如何控制某个端口的连接数
要求以“-m 扩展模块”的形式明确指出类型 包括多端口、MAC地址、IP范围、数据包状态等条件
12.iptables防火墙二
snat
概念
源地址转换,修改数据包的源地址
场景
局域网主机共享单个公网ip地址接入internet
语法实例
iptables -t nat -A POSTROUTING -s 内网ip -o 网关公网网卡 -j SNAT --to-source 外网ip
iptables -t nat -A POSTROUTING -s 内网ip -o 网关公网网卡 -j MASQUERADE
地址欺骗
dnat
概念
目标首地址转换,修改数据包的目标地址
场景
在Intenet中发布位于局域网内的服务器
语法实例
iptables -t nat -A PREROUTING -i 网关公网网卡 -d 外网ip -p 协议 --dport 端口 -j DNAT --to-destination 内网ip
ip_forward开启方法
/etc/sysctl.d/99-sysctl.conf
net.ipv4.ip_forward=1
sysctl -p
echo 1 > /proc/sys/net/ipv4/ip_forward
sysctl -w net.ipv4……
iptables备份还源
要求安装 iptables-server
iptables-save
备份
iptables-restore
导入
/etc/sysconfig/iptables
开机自动导入规则
iptables和firewall区别
子主题 1
13.YUM仓库服务与PXE网络装机
yum仓库
yum机制
与rpm区别
解决依赖关系
搭建
集合rpm软件包
createrepo命令建仓库数据库
仓库数据库
repodata
仓库软件提供方式
ftp://
http://
https://
file://
yum命令
指定仓库配置
/etc/yum.repos.d/*.repo
内容
[仓库id] name baseurl enabled gpgcheck gpgkey
dnf命令使用
增
yum -y install
删
yum -y remove
改
yum -y update
查
yum list
yum info
yum search
group操作
查询软件包组 yum grouplist [包组名]... yum groupinfo <包组名>...
安装软件 yum groupinstall <包组名>
升级软件 yum groupupdate
卸载软件 yum groupremove <包组名>...
pxe装机
工作过程
1.客户机发出DHCP请求,向PXE服务器申请IP地址。
2.DHCP服务器响应PXE客户机的请求,分配一个IP地址给客户机,并且告知客户机:TFTP(简单文件传输协议)服务器的IP地址和PXE引导程序文件pxelinux.0。
3.客户机向TFTP服务器发起获取pxelinux.0引导程序文件的请求。
4.TFTP服务器响应PXE客户机的请求,将其共享的pxelinux.0文件传输给PXE客户机。
5.PXE客户机通过网络来启动到系统安装主界面。
6.PXE客户机向文件共享服务器发起获取centos或windows系统安装文件的请求。
7.文件共享服务响应PXE客户机的请求,将共享的系统安装文件传输给PXE客户机。
8.PXE客户机进入到安装提示向导界面,用户需要手动来完成系统的操作
用到的服务
pxe
批量装机,支持远程装机
tftp
启动引导程序
dhcp
ftp/http
提供安装操作文件
ks
自动装机
内存2G 内核2G 硬盘30G
生成一个自动化安装脚本(应答文件)
yum -y install system-config-kickstart
system-config-kickstart
操作-完成ubuntu安装
14.rsync远程同步
配置rsync源服务器
安装软件
远程增量备份软件
创建编辑配置文件
/etc/rsyncd.conf
启动rsync服务
--daemon
配置文件
全局配置
use chroot = yes //为了安全,禁锢在宿主目录 port = 873 //监听的端口 log file = /var/log/rsyncd.log //日志文件位置 pid file = /var/run/rsyncd.pid //存放进程的文件位置 hosts allow = 192.168.11.0/24 //允许访问的客户端地址 [wwwroot] //模块名称 path = /var/www/html/ //源文件存放的路径 comment = backup apache web page //描述 read only = yes //是否为只读 dont compress = *.gz *.bz2 //同步时不在压缩的文件类型 auth users = backuper //指定连接到该模块的用户列表,只有列表里的用户才能连接到模块, 用户名和对应密码保存在secrts file中 read only = false 指定该模块是否可读写,即能否上传文件,false表示可读写,true 表示可读不可写。所有模块默认不可上传 write only = false # 指定该模式是否支持下载,设置为true表示客户端不能下载。所有模 块默认可下载 secrets file = /etc/rsyncd_users.db //存放账户信息的数据文件
共享模块配置
path
路径
read only
是否写入
auth user
允许用户
secrts file
账号密码文件
创建secrts file
用户名:密码
rsync命令的用法
格式
rsync 选项 源目录 目标目录
上行 下行
#usr/bin/rsync -avz --delete --password-file=/etc/server.pass backuper@192.168.4.200::wwwroot /myweb/
#rsync -rlzH --delete --password-file=/etc/server.pass /var/www/html/ backuper@192.168.4.200::wwwroot
远程服务器表示
用户@服务器地址::共享模块名
rsync://用户@服务器地址/共享模块名
选项
avz
归档、详情、压缩
--delete
删除目标位置有原始位置没有的文件
--password-file
=/passwd.file密码文件位置
rsync+inotfily实时同步
rsyn+crond与inotfily的区别
计划任务频率高,服务器承受大,频率不高,做不到实时同步
inotfily安装
inotifywait
持续监控、实时输出结果
inotifywatch
短期监控,任务完成后有结果
inotifywait命令
inotifywait命令语法 #inotifywait -mrq -e modify,create,move,delete /var/www/html
-m 持续进行监控
-r 递归监控所有子对象
-q 简化输出信息
-e 指定要监控哪些事件类型
/var/www/html表示要监控的文件夹
rsync+inotifwait同步操作脚本
[root@localhost ~]# vi /opt/inotify_rsync.sh #!/bin/bash INOTIFY_CMD="inotifywait -mrq -e modify,create,attrib,move,delete myweb" RSYNC_CMD="rsync -rzH --delete --password-file=/etc/server.pass /var/www/html/ backuper@192.168.65.128::wwwroot /myweb" $INOTIFY_CMD | while read DIRECTORY EVENT FILE do if [ $(pgrep rsync | wc -l) -le 0 ] ; then $RSYNC_CMD fi done
备份的概念
备份方式 全量备份 增量备份 本地备份 异地备份-远程备份 热备份 冷备份
企业级应用
1、Squid代理服务器
代理的概念
帮助用户去获取服务资源,
分类
游戏代理
视频代理
web代理
squid(应用层代理服务软件)
代理的类型
传统代理
适用于Internet,需明确指定服务端
透明代理
适用于共享上网网关,不需指定服务端而是通过默认路由、防火墙策略将Web访问重定向
反向代理
服务器提供服务必须通过代理服务器,客户机只需要向反向代理服务器请求服务
Web代理的工作机制
客户端向代理服务器请求web服务代理服务器查看自身缓存,缓存有则回复客户端请求,缓存无 则向web服务器请求web服务器回应代理服务器代理服务器回复客户机,然后再自身缓存一份
缓存网页对象,减少重复请求
使用代理的好处
提高Web访问加速隐藏客户机的真实IP地址
squid应用
传统代理实现
http_port {squid-address:3128}
(本机ip可以省略)默认端口
reply_body_max_size 10 MB
允许通过代理访问的文件最大体积
透明代理实现
http_port {squid-address:3129} transparent
透明代理设置时修改默认端口为当前内容
网关设置
ip_forward(开启系统的路由转发功能)
方法一:
vim /etc/sysctl.d/99-sysctl.conf //sysctl.d/储存内核参数的net.ipv4.ip_forward=1 //添加路由转发的功能 [root@localhost ~]#sysctl -p //直接设置启动生效
方法二:
sysctl -w net.ipv4.ip_forward=1
方法三:
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables端口映射
iptables -t nat -I PREROUTING -i eth0 -s 192.168.11.0/24 -p tcp --dport 80 -j REDIRECT --to 3128 //eth0 为内网网卡,将访问本机的80端口的请求重定向到3128端口中
ACL访问控制
内容
定义具体条件内容
定义控制方法
acl 列表名 列表类型 内容
列表类型
src源地址 dst 目标地址 port 目标端口 dstdomain目标域 time访问时间
http_access allow|deny 列表名
匹配顺序
匹配即终止
配置acl位置
vim /etc/squid.conf
2、lnmp平台
nginx
特点
高可靠:稳定性master进程管理调度请求分发到worker;worker进程响应请求 ;一master多worker热部署:1.支持长时间运行不重启平滑升级 2.可以快速重载配置高并发:单台物理服务器可支持30 000~50 000个并发请求,(epoll模型内核级)响应快:尤其在处理静态文件上,响应速度很快低消耗:cpu和内存1w个请求内存平平均使用在2-3MB分布式支持:反向代理 七层负载均衡
vs httpd
HTTP 可以在大多是计算机操作系统中运行,模块化设计,支持多种网页编程语言,由于其多平台和安全性被广泛使用。Nginx是一款轻量级web服务软件,能够支支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定。
nginx安装目录
sbin
nginx
logs
html
conf
nginx.conf
nginx服务管理
启动
./sbin/nginx
./sbin/nginx -t
配置文件语法检查
关闭
killall -s QUIT nginx
./sbin/nginx -s stop
重载配置文件
killall -s HUP nginx
./sbin/nginx -s reload
nginx应用
nginx.conf
全局
worker_processes
启动进程,通常设置成和cpu的数量相等
I/O事件
worker_connections
单个后台worker process进程的最大并发链接数
http区域
实现虚拟web主机
server{}
listen
侦听80端口
server_name
定义访问域名
location{}
定义虚拟目录映射的
root
定义服务器的默认网站根目录位置
index
定义首页索引文件的名称
lnmp
作用
目前最为成熟的一种企业网站应用模式(应用平台),可提供动态Web站点应用及开发环境(动态:程序开发成的 对接数据库)
工作原理
1、FastCGI将Http Server和动态脚本语言分离开2、Nginx专门处理静态请求,转发动态请求3、PHP/PHP_FPM专门解析PHP动态请求默认使用9000端口
平台搭建注意事项
安装php
PHP-FPM是一个PHPFastCGI管理器,就是实现 PHP 脚本与 Web 服务器(通常是 Nginx)之间的通信的,从而构建起 PHP 解释器与 Web 服务器之间的桥梁。
在./configure的时候带 –enable-fpm参数即可开启PHP-FPM配置nginx支持php解析nginx/conf/nginx.confroot /var/www/qingmei; //站点根目录提升到location之外location / { index index.php index.html; //添加index.php索引}location ~ \.php$ { //添加,访问.php页面的配置端 root /var/www/qingmei; fastcgi_pass 127.0.0.1:9000; //添加,php-fpm监听的地址 fastcgi_index index.php; //添加,php首页文件 include fastcgi.conf; //添加,包括fastcgi.conf样本配置文件}
配置nginx实现php支持
[root@jianfeng ~]# vim /usr/local/nginx/conf/nginx.confserver {listen 80;server_name www.qingmei.com;root /var/www/abc; #把root变量站点根目录定义提升上层location / {#root /var/www/qingmei; #注释掉,默认使用上层的root变量index index.php ndex.html ; #添加默认索引页}#添加以下定义如何处理php文件location ~ \.php$ {fastcgi_pass 127.0.0.1:9000; #Nginx通过本机的9000端口将PHP请求转发给PHPFPM进行处理。fastcgi_index index.php; #添加,php首页文件include fastcgi.conf; #Nginx调用fastcgi接口处理PHP请求。}}
3、tomcat服务
软件基金会的一个核心项目Tomcat支持最新的Servlet 和JSP规范。Tomcat 技术先进、性能稳定,而且开源免费,是流行的Web应用服务器,是开发和调试Java程序的是首选
tomcat安装
1、安装jdk
jdk java开发应用平台(java环境)
查看当前系统默认安装jdk版本java -version
2、二进制安装tomcat
安装目录
bin
startup.sh
启动
shutdown.sh
关闭
configtest.sh
检测配置文件
conf
server.xml
tomcat的主配置文件 host配置
web.xml
tomcat的应用程序的部署描述符文件
webapps
ROOT
默认站点根目录
tomcat应用
server.xml
server.xml主配置文件内容
Server节点
Tomcat实例的最顶层元素,对应Tomcat服务器,仅一个。 port:指定监听关闭Tomcat服务器请求的端口。端口用于标记网络上的一个进程,由此一个端口只能唯一的标记一台主机上的一个进程,但是一个进程可以对应多个端口。
Service节点
监听来自客户端的http请求,一个Server节点可以有多个Service节点。
Host节点
一个Engine节点可以有多个Host节点,即多个虚拟主机。 name:指定虚拟主机的名字(域名)。
Context节点
主要设置Service的虚拟目录和默认站点。 docBase:指定站点根目录
基于域名的虚拟web主机
常用端口
8080端口是Tomcat默认监听
8005端口是用来关闭TOMCAT服务的端口(端口负责监听关闭tomcat的请求)
8009端口建立HTTP链接
布置java应用的方式
.jsp
.war
.jar
直接运行不必安装tomcat
nginx+tomcat
该架构解决tomcat性能瓶颈
实现nginx负载均衡
1、定义集群结构在http配置区域upstream{}
2、使用nginx反向代理功能将用户的请求转发至upstream(http->server{})
nginx反向代理实现负载均衡集群
nginx.conf文件设置 http{ .....//这里表示省略原有内容 upstream tomcatserver { //设定负载均衡的服务器列表(原配置文件中没有需添加) server 192.168.11.254:8080 weight=1; server 192.168.11.253:8080 weight=1; .....//这里表示可以添加更多的列表 //上面列表为负载服务器IP及端口列表,weight是权重值,数越大权值越高,优先级越高 } server { ... location / { ....//这里表示省略原有内容 proxy_pass http://tomcatserver; //开启nginx返向代理功能。代理tomcatserver(上面列表名称)服务器列表 } } }
web术语
pv 页面访问数量 uv 一个ip访问多少页面 ip ip访问次数qps 每秒查询次数 并发量DAU 每日活跃用户
Nginx调度算法
轮询
加权轮询
ip哈希算法
url哈希算法
4、kvm虚拟化平台
条件
操作系统
64位
内核版本2.6.20
集成到内核中,之前版本内核需要下载
硬件
支持虚拟化
开启
64位
查看是否支持虚拟化
/proc/cpuinfo
英特尔vmx adm的虚拟化svm
kvm应用
虚拟机常用管理命令
virsh
查看#virsh list --all
强制关闭#virsh destroy centos6.5
启动#virsh start centos6.5
关闭#virsh shutdown centos6.5
挂起暂停#virsh suspend centos6.5
启用#virsh resume centos6.5
自动启动#virsh autostart centos6.5
导出配置文件#virsh dumpxml centos6.5 > /etc/libvirt/qemu/centos2222.xml
删除虚拟机#virsh undefine centos6.5
重新定义虚拟机#virsh define centos6.5.xml
查看文件内容 #virt-cat -a
编辑文件内容 #virt-edit -a
克隆
virt-clone -o centos6.5 -n centos2 -f /data_kvm/store/centos2.qcow2
-o指定克隆的虚拟机名 -n 新的虚拟机名称 -f新的虚拟机磁盘文件(完整路径)
快照
创建
virsh snapshot-create centos6.5
//centos6.5为要创建快速的虚拟机名称
查看快照版本详细信息
virsh snapshot-current centos6.5
恢复到指定快照
virsh snapshot-revert centos6.5 1234567890
//删除指定快照
virsh snapshot-delete centos6.5 1234567890
qemu-img
查看磁盘文件格式
qemu-img info /data_kvm/store/qingmei_kvm.img
转换磁盘文件格式
qemu-img convert -f raw -O qcow2 /data_kvm/store/centos.img /data_kvm/store/centos.qcow2
磁盘镜像格式
raw
启动的虚拟机会比 QCOW2 启动的虚拟机 I/O 效率更高一些(25%)
速度快,体积大
qcow2
是一种当下比较主流的虚拟化磁盘格式,具有占用空间小,支持加密,支持压缩,支持快照的特点
网络模式
nat
默认
桥接
文件位置
/etc/libcirt/qemu
5、lvs负载均衡
集群概念
由多台主机构成,但对外只表现为一个整体。
三种集群类型
负载均衡
主要目的提高应用系统的相应能力,尽可能处理更多的访问请求,减少延迟,提供并发量,提高负载
高可用
主要目的提高应用系统的可靠性,尽可能地减少中断时间,确保服务的连接性
高性能运算
主要目的提高应用系统的CPU运算速度,扩展硬件资源和分析能力,获得大型、超级计算机的高性能运算(HPC)能力
负载均衡结构三层
负载调度器·
这是访问整个群集系统的唯一入口,也称之为群集IP地址
硬件 梭子鱼、H5、绿盟
软件:nginx/varnish/haproxy
服务器池
群集所提供的应用服务(如http、ftp等)由服务器池承担,其中每个节点具有独立的RIP(Real IP ,真是IP地址),只处理调度器分发过来的客户机请求
共享存储
为服务器池中的所有节点提供稳定,一致的文件存储服务,确保整个群集的统一性
lvs负载均衡集群三种模式
nat
类似于防火墙的私有网络结构,负载调度器作为所有服务器节点网关,服务器使用私有IP地址,有负载调度器为其转发
tun
采用开放式网络结构,负载调度器和web服务器使用的都是公网地址,然而这些服务器节点分散在互联网中的不同位置
dr
采用半开放网络结构,与TUN网络模式类似,只不过节点并不是分散在各地,与调度器位于同一个物理网络集合上两个优点
lvs负载均衡调度算法
轮询
将受到的访问请求按照顺序轮流分配给群集中的各节点,均等的对待每一台服务器
加权轮询
根据真实服务器的处理能力轮流分配受到的访问请求,调度器可以自动查询各节点的负载情况,并动态调整权重
最少连接
根据真实服务器已建立的连接数量进行分配,将受到的访问请求优先分配给连接数量最少的节点
加权最少连接
在服务器节点的性能差异较大的情况下,可以为真实服务器自动调整权重,权重较高的节点将承担更大比例的活动连接负载
nfs
作用
Linux之间的共享服务
依赖两个软件
rpcbind
rpcbind服务
nfs-utils
nfs服务
共享设置
/etc/exports
共享目录 目标(权限)
客户端使用
rpcbind nfs-utils
mount -t nfs
ipvsadm
作用
添加负载策略
添加调度器
ipvsadm -A -t vip:port -s 调度算法
添加服务器池服务器
ipvsadm -a -t vip:port -r rip:port 集群模式 -w 权重
lvs启用方法
modprobe ip_vs
lsmod | grep ip_vs
6、keepalived双机热备
作用原理
健康检查
故障切换
热备
vrrp
vip飘移地址
配置文件
global_defs{}
router_id qingmei_R1 //本地路由名称,不可冲突
vrrp_instance{}
state MASTER //状态为备份状态
interface eth1 //承载虚拟IP 的物理接口
virtual_router_id 1 //虚拟路由器的ID号,就是组号,同一个热备组要保持一致
priority 100 //优先级,数越高,优先级越大
advert_int 1 //通告间隔时间,单位为秒
authentication //认证信息,成员要保持一致
auth_type PASS //认证类型
auth_pass 123123 //认证密码
virtual_ipaddress //虚拟IP地址,又称之为漂移地址,可以有多个
virtual_server{}
delay_loop 6 //健康检查的间隔时间(秒)
lb_algo rr //轮询调度算法
lb_kind DR //直接路由群集工作模式
real_server 222.222.222.1 80 { //第一个web节点的地址和端口
TCP_CHECK { //健康监测方式
connect_timeout 3 //连接超时时间(秒)
nb_get_retry 3 //重试次数
delay_before_retry 3 //重试间隔时间
connect_port 80 //监测端口
查看漂移地址
ip addr show dev ens32
操作
keepalived+lvs-dr
keepalived+nginx
keepalived+haproxy
keepalived+mysql主从
脑裂
指在一个高可用(HA)系统中,当联系着的两个节点断开联系时,本来为一个整体的系统,分裂为两个独立节点,这时两个节点开始争抢共享资源,结果会导致系统混乱,数据损坏。对于无状态服务的HA,无所谓脑裂不脑裂;但对有状态服务(比如MySQL)的HA,必须要严格防止脑裂。
7、haproxy集群
对比
lvs
性能最好,实施配置复杂,维护成本相对较高;接近物理调度80%
nginx
upstream模块支持群集功能,但是对群集节点健康检查功能不强,高并发性能没有
haproxy
是一款高性能的负载均衡软件。因为其专注于负载均衡这一些事情,因此与nginx比起来在负载均衡这件事情上做更好,更专业。
haproxy特点
四层、七层负载均衡区别特点
四层负载平衡:IP+PORT转发
七层负载平衡:协议+内容交换
调度算法
轮询
RR
最少连接
LC
基于来源访问
SH
haproxy安装应用
lua是一种轻量小巧的脚本语言
haproxy.cfg
需要创建
五个配置区域
global 全局
主要用来控制Haproxy启动前的进程及系统相关设置
默认
mode
控制使用几层协议
配置一些默认参数,如果frontend,backend,listen等段未设置则使用defaults段设置
listen
用来匹配接收客户所请求的域名,uri等,并针对不同的匹配,做不同的请求处理。
前端
定义一个名为----的应用
bind *:80
default_backend servers #用户请求转发到名称为servers的后端模块处理
后端
server server2 192.168.65.134:80 check inter 2000 rise 2 fall 5
#check inter 2000 #表示haproxy服务器和节点之间的一个心跳频率
#rise 2 #表示两次正确证明服务器可用
#fall 3 #表示连续三次检测不到心跳频率则认为该节点失效
向后端服务器发送http请求
请求
get
GET 用于从指定资源请求数据
post
POST 用于将数据发送到服务器来创建/更新资源。
应答
正确
200+
用于表示请求成功
300+
请求重定向到其它URL
异常
400+
用于指出客户端的错误
500+
用于支持服务器错误
8、mysql主从复制
概念
是用来建立一个和主数据库完全一样的数据库环境,称为从数据库;主数据库一般是准实时的业务数据库
作用
数据热备
作为后备数据库,主数据库服务器故障后,可切换到从数据库继续工作,避免数据丢失。
keepalived
mha
架构扩展
业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘I/O访问的频率,提高单个机器的I/O性能
读写分离
使数据库能支撑更大的并发。在报表中尤其重要。由于部分报表sql语句非常的慢,导致锁表,影响前台服务。如果前台使用master,报表使用slave,那么报表sql将不会造成前台锁,保证了前台速度
主从复制的三种方式
基于sql语句
默认
技术成熟 binlog 文件较小
binlog 中包含了所有数据库更改信息,可以据此来审核数据库的安全等情况
binlog 可以用于实时的还原,而不仅仅用于复制
主从版本可以不一样,从服务器版本可以比主服务器版本高
基于行
任何情况都可以被复制,这对复制来说是最安全可靠的
和其他大多数数据库系统的复制技术一样
多数情况下,从服务器上的表如果有主键的话,复制就会快了很多
混合
主从复制原理
主从复制图解析
1. 主数据库db的更新事件(update、insert、delete)被写到binlog
2. 从数据库发起连接,连接到主数据库
3. 此时主数据库创建一个binlog dump thread线程,把binlog的内容发送到从库
4. 从数据库启动之后,创建一个I/O线程,读取主数据库传过来的binlog内容并写入到relay log.
5. 从数据库会创建一个SQL线程,从relay log里面读取内容,从Exec_Master_Log_Pos位置开始执
行读取到的更新事件,将更新内容写入到slave的db.
主从复制实现
1、通过配置文件开启主服务库binlog日志线程
/etc/my.cnf
log-bin
binlog 线程名字
server-id
保证唯一
2、登入主数据库查看主服务状态
show master status;
file
bin-log日志文件名称
pos
bin-log日志文件对应的位置
3、通过配置文件开启从服务库线程
/etc/my.cnf
server-id
保证唯一
4、设置从服务器同步主服务器数据
master_host='192.168.17.101',master_user='slave1',master_password='Qm123.com',master_log_file='mysql-index.000002',master_log_pos=333
master_host 主master的IP
master_user 主master允许登录,拥有replication slave权限
master_password 用户的密码
需要通过mysql > show master status; 在master执行
master_log_file 主master记录的bin-log日志文件名称
master_log_pos 主master记录的bin-log日志文件对应的位置
查看同步是否成功
show slave status\G
IO和SQL线程
读写分离
谁读谁写
主写从读
实现方式
使用数据中间件(数据库代理服务器)
mycat
业务应用直接实现
9、nagios监控
特点功能
监控硬件
CPU、 load、disk、 usage、system logs,也包括Windows主机(使用NSClient++ plugin)
监控服务
SMTP、POP3、HTTP、NNTP、ICMP、SNMP、FTP、SSH
报警
在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信通知。
nagios原理
插件位置
在nagios主目录下的/libexec里放有nagios自带的可以使用的所有插件
插件名字 check_***
nrpe插件
工作流程
1. Nagios 执行安装在它里面的check_nrpe 插件,并告诉check_nrpe 去检测哪些服务。
2. 通过SSL,check_nrpe 连接远端机子上的NRPE daemon
3. NRPE 运行本地的各种插件去检测本地的服务和状态(check_disk,..etc)
4. 最后,NRPE 把检测的结果传给主机端的check_nrpe,check_nrpe 再把结果送到Nagios状态队列中。
5. Nagios 依次读取队列中的信息,再把结果显示出来
报警状态
0(OK)表示状态正常/绿色
1(WARNING)表示出现警告/黄色
2(CRITICAL)表示出现非常严重的错误/红色
3(UNKNOWN)表示未知错误/深黄色
Nagios根据插件返回来的值,来判断监控对象的状态,并通过web显示出来,以供管理员及时发现故障
nagios监控配置
cgi.cfg //控制cgi访问的配置文件
nagios.cfg //nagios主配置文件
resource.cfg //变量定义文件
objects //为目录,里面存放配置文件模板,用于定义nagios对象
10、mfs分布式文件系统
概念
分布式软件系统
由通信网络互联的多处理机体系结构上执行任务的系统。
分布式文件系统
指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点(可简单的理解为一台计算机)相连
mfs特点
可靠性、可扩展性、容错性、数据一致性
MFS是基于FUSE(用户空间文件系统)机制的,所以支持含有FUSE的操作方式的系统
组成结构
元数据服务器
在整个体系中负责管理文件系统,维护元数据
元数据概念
数据储存信息
元数据日志服务器
备份Master服务器的变化日志文件
数据存储服务器
chunk块默认大小64mb
真正存储数据的服务器
客户端
可以像挂载NFS一样,挂载MFS文件系统
数据读取过程
1. 客户端向元数据服务器发出读请求
2. 元数据服务器把所需数据存放的位置(Chunk Server的IP地址和Chunk编号)告知客户端
3. 客户端向已知的Chunk Server请求发送数据
4. Chunk Server向客户端发送数据
数据写入过程
2. 元数据服务器与Chunk Server进行交互,但元数据服务器只在某些服务器创建新的分块
Chunks,创建成功后由Chunk Servers告知元数据服务器操作成功
3. 元数据服务器告知客户端,可以在哪个Chunk Server的哪些Chunks写入数据
4. 客户端向指定的Chunk Server写入数据
5. 该Chunk Server与其他Chunk Server进行数据同步,同步成功后Chunk Server告知客户
端数据写入成功
6. 客户端告知元数据服务器本次写入完毕
实践元数据服务器还原
1、日志服务器
cd /usr/local/moosefs/var/mfs
scp -rp ./* root@mfsmaster:/usr/local/moosefs/var/mfs/
元数据服务器
mfsmaster start
11、puppet自动化运维工具
pupet
1. 客户端向元数据服务器发送写入请求
1. Puppet是一个不错的选择,稳定性和成熟是你选择的关键因素。 它对于DevOps团队具有异构环境和技能范围的大型企业很有好处。
价格
1. Puppet可以使用免费开源版本,同时也提供收费企业版每年每节点$ 112与批量折扣付费商业企业
优点
1. 通过Puppet Labs建立良好的支持社区。
2. 它有最成熟的接口,几乎在每个操作系统上运行。
3. 简单的安装和初始设置。
4. 在这个空间中最完整的Web UI。
5. 强大的报告功能。
安装
基于ruby语言开发的Lnux、Unix、windows平台的集中运维自动化工具
运行结构
单机
客户端口执行命令主动从服务器拉取运维任务
C/S
客户端以守护进程方式运行客户端服务puppetagent
等待服务推送运维任务
自动运维过程
c/s结构:服务端运行使用puppet kick向客户机发布自动化运维任务(单机模式不需要该步骤) 1.客户端通过facter搜集变量,通过SSL发送给服务器 2.服务器解析主机,配置生成伪代码,返给客户端 3.客户端执行“伪代码”,反馈给服务器结果 4.服务器将执行结果写入日志
facter
通过ssl加密收集及检测分析客户端配置信息的一个工具
注意事项
运维任务脚本通过ssl加密传输
为了保证安全,Client 和 Master 之间是基于 SSL 和证书的,只有经 Master证书认证的 Client 才能与 Master 通信。
维护预期状态
运维任务脚本结构
manifests
init.pp
这是该模块的初始(入口)文件, 导入一个模块的时候, 会从 init.pp 开始执行。可以把所有的代码都写到 init.pp 里面,也可以分成多个 pp 文
件,init 再去包含其他文件,定义 class 类名的时候必须是 ssh,这样才能实现调用。
files
是该模块的文件发布目录,Puppet 提供一个文件分发机制,类似 rsync的模块
templates
目录包含 erb 模型文件, 这个和 file 资源的 template 属性有关( 很少用)