sublime Text
1---------------------文件目录结构
系统启动必须
/boot 内核、镜像文件、连接文件
/etc 配置文件
/lib 代码库(c++库等)
/sys 文件系统

指令集和
/bin 常用程序和指令
/sbin 系统管理员可食用的程序和指令

外部文件管理
/dev 存放外部设备
/media 其他设备如u盘
/mnt  临时挂在的文件系统如光驱

临时文件
/run  临时文件系统存储启动以来的信息
/list+found  保存非法关机产生的文件
/tmp 存放临时文件

账户
/root 
/home
/usr
/sur/bin
/usr/sbin
/usr/src 内核源码

运行过程中要用的 
/var 存放经常修改的数据,比如程序运行的日志文件(/var/log 目录下)。
/proc 管理内存空间!虚拟的目录,是系统内存的映射
/opt
/srv 该目录存放一些服务启动之后需要提取的数据。

命令帮助就找 man 中文手册
yum list|grep man.*zh
yum install -y man-pages-zh-CN.noarch
vim .bashrc
alias cman='man -M /usr/share/man/zh_CN'  创建别名
source .bashrc   启用。bashrc
cman ls  中文手册
man ls   英文手册


cd 切换目录
ls 列出文件列表
pwd 显示当前文件路径
touch /aa  创建文件aa
mkdir /bb  创建文件夹 -p是递归 -v显示过程
cp 源 目标      复制 -r递归
mv 源 目标路径   移动文件或者改名
rm -rf   强制删除
cat 查看文件全部内容
more  可翻页
head  显示头部默认10行
tail  显示尾部 tailf = tail -f   可以查看实时动态文件


2----------------------用户管理
cat /etc/passwd  用户基本信息文件
root:x:0:0:root:/root:/bin/bash
1用户名:2密码占位符x:3uid:4gid:5描述:6家目录:7shell命令解释器
uid :0特权用户 1~499 系统用户 1000+ 普通用户

cat /etc/shadow  用户密码文件
root:$6$fdz7W9WJdi/zX$KbfdA3BpaEiiiYEF6cpX1PQYJtnlonECs3rU15S6MiQ/ry9qOxYttYkMqJ6MfTNUZnCrht5Mmf8QyWpavwNR3.:18520:0:99999:7:::

1用户名:2密码加密值:3最后一次修改时间过了多少天:4最小间隔(0代表随时可以改密码):5密码有效期最大时间间隔9999无限期:6警告时间:7不活动时间:8时效时间:9保留

cat /etc/group 组信息文件
root:x:0:
1组名:2组密码:3组ID:4组成员

创建用户:
useradd user01    -d 指定家目录 -u 指定uid
grep user01 /etc/passwd
useradd VMuser -M -s /sbin/mologin   创建虚拟用户(-M不创建家目录,-s指定shell方式) 

设置密码
passwd user01 或 echo 123456|passwd --stdin  user01
keepass密码管理器


userdel  -r  user01 删除用户(会删除家目录)
usermod -s  /sbin/nologin  user01 修改用户属性
whoami 显示本用户
last 查看历史登录信息
[root@superman ~]# w
 16:32:22 up 109 days, 22:04,  1 user,  load average: 0.00, 0.02, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    180.164.91.13    14:59    6.00s  0.06s  0.00s w
  1        2        3                4       5           6      7
1-用户名
2-登录方式 (pts/x远程登录;tty1本地登录)
echo "请不要操作hosts文件" >/dev/pts/1 给另一台远程登录发信息  
3-连接的主机ip     
4-登录时间   
5-IDLE空闲时间  
6-消耗的cpu资源时间  
7-用户在干什么
用户提权sudo 
visudo == vi /etc/sudoers文件配置权限
 100 root    ALL=(ALL)       ALL
     user01   ALL=(ALL)      /usr/sbin*,!/usr/sbin/visudo命令的绝对路径which查看路径 ,逗号分隔
visudo -c 检查语法是否正确

groupadd  finance  创建组
groupdel  finance  删除组
groupmod  user01 -g 1002 修改组属性

-g   制定用户的基本组  基本组/etc/passwd的gid就是基本组
-G   制定用户的附属组
usermod user01 -g user02   把user01基本组改成user02的基本组
usermod  user01 -G user02  把user01加到user02 组里
gpasswd -d user01 user02  删除user01的附属组user02


vim /etc/vimrc  编辑文本配置的命令
set number 显示行数 在最后一行添加 
或者 vim ~/.vimrc

sudo  特权(提权)
以root权限给其授权
vim /etc/sudoers 找到%wheel  ALL=(ALL)  ALL

su user01
sudo  useradd  user03
sudo  root

3-------------用户权限
读r4 写w2 执行权x1
权限的三类对象 属主:u  属组:g  其他人:o  特殊对象:所有人:a

-rw-r--r-- 1 root root 16861 Nov 26 22:06 aa.txt
文件类型 属主 属组 其他人 链接 属主 属组 大小 创建时间 文件名
chmod 777 aa.txt     文件权限
chmod a=rwx aa.txt

chown  user01.hr  aa.txt   改属主组
chown  user01  aa.txt  更改属主
chown  .hr aa.txt      更改属组
chown  -R  hr  aa   更改属组    -R 递归使目录下的文件授权

ACL access control list  加强版权限
    访问    控制    列表

指定用户和组的权限扩展
setfacl -m  u:user01:rwx aa.txt
setfacl -m  g:hz:rwx aa.txt
设置 文件访问 -设置  对象:用户:权限 需要授权的文件

-rw-rwxr--+ 1 root root       52 Nov 27 14:50 aa.txt
后面有+号说明有隐藏的权限setfacl可附加更多的授权 可以叠加用getfacl查看
getfacl aa.txt 查看文件权限
# file: aa.txt
# owner: root
# group: root
user::rw-
user:user01:rwx
group::r--
mask::rwx
other::r--

清除权限   setfacl  -x u:user01 aa.txt
清除所有的扩展权限  setfacl   aa.txt

SetUID权限解读(针对所属主设置s权限,数字表示为4)
chmod u+s xxx   
chmod 4777 xxx 
收回s权限
chmod u-s xxx
chmod  0777   xxx

SetGID解读(针对所属组设置权限,数字表示为2)
设置权限方法
chmod g+s xxx
chmod 2777 xxx
收回权限方法:
chmod g-s xxx
chmod 0777 xxx

黏着位 t  解读(针对others设置,可以实现文件夹共享)
目录下面创建文件和删除自己创建的文件,删除其他人创建的文件权限不被允许
设置权限
chmod  o+t  xxx
chmod  1777 xxx
收回权限
chmod o-t  xxx  
chmod 0777 xxx

1、用chattr命令防止系统中某个关键文件被修改:
chattr +i /etc/resolv.conf   加锁
lsattr /etc/resolv.conf     查看i权限
chattr -i webapps  删除某个文件的

2、让某个文件只能往里面追加数据,但不能删除,适用于各种日志文件:
chattr +a /var/log/messages


umask掩码默认值0022   /etc/profile永久修改umask
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
判断uid>199 and 组名=用户名
    umask 002
else
    umask 022
fi
文件0666-0022
目录0777-0022

文件权限配置的结论:
1-root用户对所有的文件有绝对的权限
2-对于文件来说,写的权限和执行的权限,都需要读权限配合
3-如何想对文件进行操作,必须对文件赋予读权限
644

文件目录权限
1-root用户对所有的文件目录有绝对的权限
2-对于目录来说,写的权限和读的权限,都需要执行权限配合
3-如何想对目录进行操作,必须对目录赋予执行的权限
755

读写数据原理
从根目录开始查看-inode属性/block(套娃...)

/etc/skel (样板房)目录作用:
1-目录中可以存储运维操作说明
2-出问题,命令提示符出错,把样板房的.b*文件拷一份到家目录

4---------------------进程管理

kill -l 查看信号
1) SIGHUP 重新加载配置
9)SIGKILL 强制终止,无条件
15)正常关闭

进程的几种状态:
R(runing)运行
S(sleep)睡眠
T(stop)停止
Z zombie)僵尸程序


自定义查看优先级 优先级越小越优先
ps -axo pid,command,nice |grep 7000
创建一个睡眠示例程序
sleep 7000 &( &后台运行)
jobs 查看后台的进程不包括前台运行的 
fg 4(后台序号)  调到前台
bg 4 启动后台停止的程序
kill %4 杀死后台程序
创建程序时设置优先级
nice -n -5 sleep 8000 &

修改nice值
renice  -20 2669

虚拟文件系统proc
cat /proc/cpuinfo  cpu信息
cat /proc/meminfo  内存信息
cat /proc/cmdline  内核信息


5--------------管道和重定向
FD标识
0 是键盘输入,只读
1 标准输出
2 错误输出
3~255 文件
ln -s  123.txt  333  软链接
ln     123.txt  333  硬链接

输出重定向 >  >>
实例
date > time.txt   1> 等于 >
正确重定向 1>test.txt 或 1>>test.txt
错误重定向 2>test.txt 或 2>>test.txt
标准混合   &> test.txt

&> /dev/null  垃圾桶,黑洞


输入重定向 <  <<

编写邮箱 
mail -s '标题'  user01
1235445432内容.  回车发送

收邮件
su user01
mail   按邮件编号可查看q是退出

mail -s '标题'  user01 < word.txt
进程管道 |   多个命令组合 ps -aux | grep  vim
tee 管道(三通管道,及执行另一个命令,又保存前执行输入的一个副本)
cat  /etc/passwd |tee file.txt| tail -1

特殊参数 Xargs 用于连接小操作 格式转换
cat file.txt |Xargs rm -rvf

cat  >  /tmp/1.comfi  <<EOF
111111111
2222222
3333333
444444
EOF

5. ---------------磁盘管理


主引导记录(Master Boot Record,缩写:MBR),又叫做主引导扇区
 <=2T 用MBR默认4个主分区。   GPT >2T的硬盘
两种情况:4个主分区或者3个主分区一个扩展分区,扩展分区需要划分逻辑分区才能用

lsblk 列出块状磁盘
数据格式化慎重操作系统盘
fdisk /dev/vdb
命令(m 帮助)n
p   主分区
e   扩展分区
----------p
分区号1-4  1
起始分区默认从分区起始开始 (回车) (512为一个扇区)
前边会保留部分区间用来存放磁盘分区信息 起始和结束
+200G   设置1分区200G
命令(m 帮助)w   保存分区信息

分区格式:分区可以划分4个主分区或3个主分区+1个扩展分区(N个逻辑分区域)

partprobe /dev/vdb   刷新新分区

mkfs.ext4 /dev/vdb    分区格式化
mkfs -t ext4 /dev/vdb  同上
make file system extend4  创建 文件 系统 扩展  分块

手动挂载 mount -t ext4 /dev/vdb  /mnt/disk1
df -hT  查看磁盘信息
设置开机自动挂载
/etc/fstab 或者/etc/rc.local, 需要给源文件执行权限/etc/rc.d/rc.local
UUID=59d9ca7b-4f39-4c0c-9334-c56c182076b5 /     ext4    defaults    1           1
磁盘id(blkid查看uuid,也可以是绝对路径/dev/sda)                        挂载点 指定类型  挂载参数  是否备份磁盘  是否检查磁盘  

大于2T的磁盘分区
使用parted进行分区  help查看
parted /dev/sdc
help
mklable gpt   创建一个分区表(默认mbr)
mkpart  primary  0 2100G  创建一个分区大于2T 从0开始到2100G



交换分区
free -m 查看swap分区
命令(m 帮助)t
swap 82  代码
partprobe
mkswap /dev/vdb
swapon /dev/vdb
umount /dev/vdb 取消挂载,不会丢失文件,相当于U盘拔掉,在挂载就可以了


dd  if=/dev/zero  of=/mut/disk1  bs=1M count=1000 写数据一千次1M的

逻辑卷LVM 目的:管理磁盘的一种方式性质与磁盘无异   特点:随意扩张大小

多了三步:变成物理卷,加入卷组,制作逻辑卷
pvcreate /dev/vdb  创建物理卷
vgcreate  vg1  /dev/vdb   创建卷组(vg1是卷组名)
lvcreate -L 200G(大小) -n lv2(卷名) vg1(组名)     创建逻辑卷

mkfs.ext4 /dev/vg1/lv1   注意:/dev/卷组名/逻辑卷名   格式化
mkdir  /mnt/lv1   创建挂载点
mount /dev/vg1/lv1    /mnt/lv1  挂载

逻辑卷扩容
pvcreate  /dev/vdc     创建物理卷
pvs  查看物理卷
vgextent  vg1   /dev/vdc   扩展卷组
vgs 查看卷组
lvextent -L  +4G  /dev/vg1/lv1   逻辑卷扩容
lvs查看逻辑卷
resize2fs  /dev/vg1/lv1  刷新系统空间df -hT

安全阵列

inode 索引节点,记录原属性,占128bytes (文件数量)
block 块是基本单位大小4k     (文件大小)

inode号查看  ll -i text.txt   
df -i  查看可用inode   inode数量没有了就算有空间也不能存数据


ln -s /file1  /home/file1   创建软链接(符号链接就是快捷方式)
ln /file2  /file2-h1        创建硬链接(无法跨分区,源文件删除,硬链接内容还在)


RAID阵列 廉价磁盘冗余阵列


RAID0 条带,存储速度快100%*N,没容错

RAID1 镜像集 2块磁盘,容量50% 备份容错

RAID5 至少3块磁盘等大小(N盘数-1) 热备份可靠,高速

mdadm  -C /dev/md0 -l5 -n3 -x1 /dev/vd{b,c,d,e}
mkfs.ext4 /dev/md0  格式化
创建RAID  名字为/dev/md0,级别为5,n3三块数据盘,1x一块热备
四块盘,两块数据盘,一块校验盘,一个热备盘
mdadm  -D /dev/md0   查看RAID5详情信息
命令:mdadm

格式:mdadm [模式] <RAID设备名称> [选项] [成员设备名称]
使用参数    作用
-a  检测设备名称 
-n 指定设备数量 
-l 指定 RAID 级别 
-C 创建 
-v 显示过程 
-f 模拟设备损坏 
-r 移除设备 
-Q 查看摘要信息 
-D 查看详细信息 
-S 停止 RAID 磁盘阵列 
-x添加备份盘
--zero-superblock   移除RAID磁盘组员

6----------------查找和压缩

which或whereis: 命令查找
locate:文件查找,依赖数据库(updatedb)
find:文件查找,针对文件名

find最后可以跟动作
find  /(路径) -name(iname 不区分大小写)  '1.config'  按名查找
find  /etc     -size  +5M  (-5M小于,5M等于,+5M大于)  按大小查找
find  /       -maxdepth 5(五层) -a -name 'ifcfg*'    按目录深度查找
find  /   -user user01 按文件属主、属组查找
find  /   -group user01
find  /dev  -type  f(b块设备文件,f普通文件)  按文件类型
find  /   -perm 714  -ls 按文件权限查找
find  /   -perm 714  -delete(动作删除)
find  /etc -name  ifcfg* -ok(连接符) cp  {}(引用查到的路径)  /tmp  \:(结束符)

create ,filename,z(gzip压缩包工具),x(解压工具)
tar -cf  text.tar   /etc 打包
tar -czf text.gzip.tar.gz  /etc  gzip压缩包
tar -cjf text.tar.bz     /etc    bzip
tar -cJf text.tar.xz     /etc    xzip
优点:体积gzip,bzip,xzip 越来越小,缺点:压缩时间越来越长

tar  -vxf   text.gzip.tar.gz   解压缩
tar  -vxf   text.gzip.tar.gz   -C  /tmp 定向解压缩

7---------------------软件安装

RPM包 Red hat package manager   二进制包可直接安装
源码包 source code(需要解压安装)

Nginx  tengine(淘宝二次开发的)网站服务
源码包安装:环境组件
yum install -y gcc make prce prec-devel zlib-devel openssl-devel
yum install -y gcc-c++ /
yum install -y kernel-devel* /
yum install -y openssl-* /
yum install -y popt-devel /
yum install -y openssh-clients /
yum install -y libnl /
yum install -y libnl-devel /
yum install -y libnfnetlink-devel /
yum install -y popt
yum install -y pcre
yum install -y pcre-devel 
需要先安装环境:编译工具如python,根据源码安装
解压: tar -vxf  tengine.1.1.gz 
进入解压包文件夹:cd tengine.1.1
配置指定用户:./configure --user=www --group=www --prefix=/usr/local/nginx
编译:make
安装:make install
启用:/usr/local/mginx/sbin/nginx

lsof -i:80 查看端口是否被占用

watch  tail /etc/passwd 定时查看

yum工具

yum源配置
/etc/yum.repos.d/ 里面是官方yum源
本地yum配置:
[dvd]       名字
name=dvd    库的描述
enabled=1   启用
baseurl=file:///mnt/cdrom   源地址
gpgcheck=0   校验0不启用

yum clean all 清除所有缓存
yum makecache 更新yum缓存
yum repolist   查询yum源信息
yum search 包名   查询软件包
yum  provides vim 查看准备的包

/root/.bashrc开机启动项  mount /dev/cdrom  /mnt/cdrom 
systemctl stop firewalld  防火墙

yum install -y httpd  yum 安装程序可以处理依赖
yum remove -y httpd   yum 卸载  



8-------------------定时计划任务

一次性调度执行(at)
at  now  +2min  创建任务,在当前两分钟后
useradd uuu     创建用户uuu
<EOT>           结束


循环调度执行 (cron)
systemctl status crond


crontab -r  移除任务!
/var/spool/cron/  任务路径   
crontab -e   进入编辑
*  *  *  *  * command   *每分,每时,每日,每月,每周(0或7表示周天)
分 时 日 月 周
crontab -l 查看已创建的任务
cat /var/spool/cron/root  配置文件
cat  /etc/cron.deny  黑名单
ls /var/spool/postfix/maildrop/ 邮件服务postfix定时任务会产生小文件


*/5 * * * *  /usr/bin/ls /home 每隔5分钟执行一次
0 2 1,4,7 * *  /usr/bin/ls /home   每月的1,4, 7 号的2点0分执行
0 2 5-9 * * /usr/bin/ls/home  每月5到9日2点0分执行
* * * * *    时时刻刻都在执行,每分钟
0 * * * *    每小时的0分执行一次,整点执行
0 2 * * 5    每周五两点0分执行
0 2 2 6 5    六月的每周五两点执行和六月二号两点整执行 
两种形式: A: 月,日,时,分    B:周,时,分
计划任务执行一次会发送一封邮件,mail查看邮件


9-----------------------日志管理

日志进程rsyslog(系统专职日志进程)
tail -f  /var/log/messages   系统日志  
tail -f  /var/log/secure     认证,安全,登录
tail -f  /var/log/yum.log    yum日志
tail -f  /var/log/maillog    跟邮件po stfix相关  
tail -f  /var/log/cron       crond,at进程产生的日志
tail -f  /var/log/dmesg      和系统启动相关

rsyslog配置:
rpm -qc rsyslog   查看rsyslog配置文件 c(config)

vim  /etc/rsyslog.conf        主配置文件
rules 规则
authpriv.*     /var/log/secure  (认证设备日志存放文件)
设备.级别       存放位置

facility(设备) authpriv
级别

日志轮转logrotate

logrotate日志轮转(日志产生多就时间短点轮转,少时间就长一些)
weekly   轮转周期:按周, days 按天
rotate 4  保留4份
create    轮转后创建新文件
dateext 以时间作为文件的扩展名
compress   压缩

include  /etc/logrotate.d   子配置目录文件

单独设置的 :
/var/log/wtmp {
monthly   按月
minsize 1M  minsize 1M  设置两个是 and关系
create  0664 root(属主) utmp(属组) 轮转后创建新文件,并设置权限
rotate 1   保留1份
missing    丢失
}    
配置文件后跟{  }可以设置独立轮转



10--------------------网络管理network

systemctl status NetworkManager 总程序
systemctl status network   子程序 
nmcli device  查看网卡

修改网卡为eth0

vim /etc/default/grub
net.ifnames=0 biosdevname=0

重新加载 grub2-mkconfig -o /boot/grub2/grub.cfg

vim /etc/sysconfig/network-scripts/ifcfg-eth0 
DEVICE=eth0
ONBOOT=yes      打开网络连接开机启动
BOOTPROTO=none          dhcp自动获取,none手动配置
IPADDR=192.168.61.42    ip地址
NETMASK=255.255.255.0   子网掩码
PREFIX=16   16位
GATEWAY=192.168.61.1    网关地址
DNS2=114.114.114.114    DNS
DNS1=8.8.8.8


TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
IPADDR=10.40.200.1
PREFIX=16
GATEWAY=10.40.0.1
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens32
UUID=27a3b61b-4ccb-4ded-859d-9a02e2848f02
ONBOOT=yes


ss -lnutp 查看端口号 -l显示监听套接字 -n不解析地址,-t tcp,-u udp,p进程pid
netstat -lntup|grep 22  查看启用的端口

常用程序:yum install -y lrzsz sysstat elinks wget net-tools bash-completion


OSI七层模型: Open System Interconnection
应用层:  应用程序/原始数据 HTTP、HTTPS、FTP、Telnet、SSH、SMTP、POP3
表示层:  格式/压缩/加密   快速安全传递 系统格式兼容并适合传输的格式
会话层:  会话通信连接/全双工/半双工 
传输层:  分段/重组/端口号  传输控制协议(TCP)
网络层:  IP地址/寻址/路由  互联网协议(IP)
数据链路层:MAC地址/局域网  负责网络寻址、错误侦测和改错   
物理层:  传输介质/比特流   在局部局域网上传送数据帧(Data Frame)


TCP/IP

TCP/IP 五层模型 :
TCP/IP:数据单元
应用层:   应用数据单元 ,APDU应用协议数据单元
传输层:    segment DU  分段数据
网络层:    packet DU 包数据
数据链路层: frame DU  数据帧
物理层: bit DU 比特流数据01010101

封装(发送)  应用层-->传输层-->网络层-->数据链路层--> 物理层
解封(接受)  物理层--> 数据链路层-->网络层-->传输层-->应用层

TCP报文结构:
目标端口         源端口
    序列号:0
    确认号:N/A
syn:1  ack:0  fin:0
    data:


tcp三次握手:
主机A发送TCP报文,请求建立连接syn=1,序列号seq=x
主机B收到报文,会发送请求建立连接syn=1,seq=y,确认报文ack=x+1,
主机A收到报文,会发送确认建立连接ack=y+1
tcp四次挥手:
主机A发送报文,请求断开连接FIN=1
主机B收到报文,回复确认报文ACK=1断开连接
主机B发送报文,请求断开连接FIN=1
主机A收到报文,回复确认报文ACK=1断开连接

特殊三次挥手
主机A发送报文,请求断开连接FIN,ACK
主机B发送报文,请求断开连接FIN, ACK
主机A收到报文,回复确认报文ACK=1断开连接

tcp十一种状态集
tcp三次握手:
00:closed 关闭状态
01:closed-->listen 服务端监听状态
02:closed-->syn_sent
03:listen-->sys_rcvd
04:syn_sent-->established 建立连接
05:sys_rcvd-->established

tcp四次挥手:
01:established-->fin_wait1
02:established-->close_wait1
03:fin_wait1-->fin_wait2
04:close_wait-->last_ack
05:fin_waitl2-->time_wait
06:last_ack-->closed
07:time_wait-->closed

进制转换
十进制 
权位:个十百千万

二进制:机械有电无电10
位权:1-2-4-8-16-32-64-128(8位最大255)2的0~7次方 
1比特=0或1
1字节=1B=8比特

交换机:学习/广播/转发/更新   mac地址表
交换机vlan 和串口设置
enable  进入特权模式
config t   进入配置模式
vlan 10   创建vlan10
int f0/1   进入端口f0/1
switch access vlan 10   端口划分valn
int f0/2
switch mode trunk  配trunk   两台交换机相连的接口进行配置(主干线配置)
trunk不属于任何vlan

A类   1-126(127回环地址)
B类   128-191    
C类   192-223
私有地址:10.0.0.0   172.16.0.0  192.168.0.0

路由器隔离广播域,方便寻址! 连接世界又分离世界

包封装
路由表 show ip route
手动配置路由 ip route 192.168.2.0 255.255.255.0 f0/1

DNS域名解析服务
浏览器找寻www.baidu.com-->本地DNS缓存
-->本地hosts文件-->网卡配置的dns服务器
-->根域名服务器(.)-->顶级域名服务器(.com)
-->二级域名(baidu.com)-->授权服务器(www.baidu.com)

ARP地址解析协议



NAT网络地址转换协议


11-----------------------文件服务FTP(file transfer protocol)

yum  install vsftpd -y  安装ftp
systemctl start vsftpd  启动ftp
systemctl enable vsftpd 设为开机启动
需要关闭防火墙

lftp:
yum install -y lftp  客户端下载图形界面类型
lftp 192.168.1.200
ls 查看是否连接成功
get 123.txt  下载文件
mirror pub   下载文件夹

wget ftp://192.168.1.200/123.txt  -O /home/123.txt  wget直接下载
wget  - m ftp://192.168.1.200/ 下载文件夹    /虚拟目录代表ftp的根目录/var/ftp

启动ftp的上传功能

vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES   启用匿名访问
anon_upload_enable=YES 启用匿名上传
anon_mkdir_write_enable=YES  启用创建目录

mkdir /var/ftp/upload  创建允许上传的文件夹
chmod 777 /var/ftp/upload  需要进入upload目录上传

lftp 192.168.1.200
cd upload
put 22.txt  上传文件
get 22.txt  下载文件

NFS 网络文件系统(Network File System)

服务端  NAS网络存储
yum  install -y nfs-utils
mkdir /webdata         创建发资源的目录
echo 'nfs test ...' > /webdata/index.html

vim /etc/exports   nfs配置文件
/webdata 192.168.1.0/24(rw)
systemctl start nfs-server
systemctl enable nfs-server
exportfs -v 查看nfs服务

客户端
yum  install -y nfs-utils httpd
systemctl start httpd
systemctl enable httpd
showmount -e 192.168.1.200  查询nfs服务器可用目录
mount -t nfs 192.168.1.200:/webdata /var/www/html  手动挂载
浏览器访问客户机ip可以看到nas

RPM包管理
rpm -ivh wget-1.14-18.el7_6.1.x86_64.rpm  i安装 v可视 h百分比
rpm -q wget     查询
rpm -evh wget-1.14-18.el7_6.1.x86_64   e卸载
rpm -ql 包名         查看安装路径(query list)
rpm -qf  /etc/passwd 查看某文件是什么软件产生的
 --force 在安装的时候(强制安装)
 --nodeps 在卸载的时候不检查依赖关系

traceroute www.baidu.com  路由追踪
route -n 查看路由表
ip r d default 删除默认路由
ip r del 192.168.1.0/24 删除静态路由
ip r add default via 192.168.1.1 dev ens32 添加默认网关
ip r add 192.168.1.0/24 via  192.168.1.1 dev ens32 添加静态路由


systemctl list-units 查看启动的服务
systemctl reload httpd 重新加载配置


Apache服务器搭建和配置
yum install -y  httpd
vim /etc/httpd/conf/httpd.conf

DocumentRoot "/var/www/html"  网站跟根目录
Listen 80                     apache服务监听的端口
DirectoryIndex index.html    修改文件类型


源码包安装
yum install -y gcc make prce prec-devel zlib-devel openssl-devel
安装后可用命令
/usr/local/apache2/bin/apachectl -M  查看常见的模块(包括动静态模块)
/usr/local/apache2/bin/apachectl -l  查看加载的静态模块
/usr/local/apache2/bin/apachectl -t  检查配置文件
/usr/local/apache2/bin/apachectl  graceful  加载配置文件,但不重启
/usr/local/apache2/bin/apachectl  start/restart/stop 

设置用户验证登录网页
vim  /usr/local/apache2/conf/extra/httpd.vhosts.conf
<VirtualHost *:80>
    DocumentRoot "/data/www/abc"
    <Directory /data/www/abc>   #为将要访问的页面的目录
        AllowOverride AuthConfig
        AuthName  "zhao"
        AuthType  Basic
        AuthUserFile  /data/.htpasswd  #指定密码文件
        require valid-user
    </Directory>
</VirtualHost>

vim  /usr/local/apache2/conf/httpd.conf
搜httpd.vhosts.conf  去掉# 启动虚拟目录
htpasswd -c  /data/htpasswd zhao


Apache配置默认虚拟主机
vim  /usr/local/apache2/conf/extra/httpd.vhosts.conf

<VirtualHost *:80>
    DocumentRoot "/data/www/abc"   网站目录
    serverName  www.111.con   
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/data/www/" 
    serverName  www.test.con  
    ServerAlias  www.aaa.com 
</VirtualHost>

加本地解析hosts
192.169.1.2    www.111.com
192.169.1.2    www.aaa.com
192.169.1.2    www.test.com
本机域名访问  curl -x 192.169.1.2:80 www.111.com

rewrite规则
R=301  强制外部重定向
[F] 禁用url返回403状态码
NC 不区分大小写
[OR]  或者

vim  /usr/local/apache2/conf/httpd.conf
156行 ...rewrite.os 模块启用
481行 ...httpd.vhosts.conf 开启虚拟功能

vim  /usr/local/apache2/conf/extra/httpd.vhosts.conf

<VirtualHost *:80>
DocumentRoot "/data/www/" 
<IfModule mod_rewrite.c>
RewriteEngine on    #启用模块
RewriteCond %{HTTP_HOST} ^www.aaa.con$ [OR] 
RewriteCond %{HTTP_HOST} ^www.bbb.con$
RewriteRule ^/(.*)$ http://www.test.com/$s1 [R=301, L] #301永久跳转
</IfModule>
</VirtualHost>
输入www.aaa.con 或www.bbb.con 自动跳转到www.test.com

禁止指定user_agent
<VirtualHost *:80>
DocumentRoot "/data/www/" 
<IfModule mod_rewrite.c>
RewriteEngine on    #启用模块
RewriteCond %{HTTP_USER_AGENT} ^.*curl.* [NC,OR]  #禁用curl和chrome浏览器访问
RewriteCond %{HTTP_USER_AGENT} ^.*chrome.* [NC]   #不区分大小写
RewriteRule .* -[F]             #禁止
</IfModule>
</VirtualHost>

rewrite限制某个目录
RewriteCond %{REQUEST_URI} ^.*/tmp.* [NC,OR]  #禁止访问tmp目录
RewriteRule .* -[F]   

Apache配置日志切割与管理
vim  /usr/local/apache2/conf/httpd.conf
启用log模块,默认开启
搜LogFormat查看日志格式

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
-%h 是来源ip   -%u 访问的user   -%t 时间    -%r 动作

/usr/local/apache2/logs  日志文件
vim  /usr/local/apache2/conf/extra/httpd.vhosts.conf
<VirtualHost *:80>
    DocumentRoot "/data/www/" 
    serverName  www.test.con  
    CustomLog   "|/usr/local/apache2/bin/rptatelogs -l
    /usr/local/apache2/logs/test.com-access_%Y%m%d_log 86400" Combined #%Y%m%d规定年月日,86400秒为一天切割
</VirtualHost>

不记录指定日志类型
<VirtualHost *:80>
    DocumentRoot "/data/www/" 
    serverName  www.test
    SetEnvIf Request_URI ".*\.gif$" image-request
    SetEnvIf Request_URI ".*\.jpg$" image-request
    SetEnvIf Request_URI ".*\.png$" image-request
    CustomLog   "|/usr/local/apache2/bin/rptatelogs -l
    /usr/local/apache2/logs/test.com-access_%Y%m%d_log 86400" Combined 
    env=!image-request   #不保存以上格式的日志
</VirtualHost>

Apache配置静态缓存
vim  /usr/local/apache2/conf/httpd.conf
113 expires 模块开启
vim  /usr/local/apache2/conf/extra/httpd.vhosts.conf

<VirtualHost *:80>
DocumentRoot "/data/www/" 
<IfModule mod_expires.c>
ExpiresActive on    #启用模块
ExpiresType image/jpg "access plus 1 days"   #jpg缓存1天
ExpiresDefault "now plus 0 min"
</IfModule>
</VirtualHost>

apache防盗链

SetEnvIFNiCase Referer "^http://.*\.test\.com" local_ref #给网页做标注
<filesmatch "\.(txt|png|gif|doc|mp3|zip|rar)"> #规定哪些类型文件
Order Allow,Deny   #禁止引用
Allow from env=local_ref       #允许local_ref引用
</filesmatch>

访问控制
<Directory /data/www/>   #为将要访问的页面的目录
        AllowOverride None
        Options None
        Order allow,Deny
        Allow from all
        deny from 192.168.1.1  该ip地址为禁止访问的ip
</Directory>

 

posted on 2021-09-27 09:53  宇小白  阅读(62)  评论(0编辑  收藏  举报