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>