Linux基础知识汇总

零散知识点:基本的命令集合、Linux基本常识、yum搭建、网络配置(链路聚合)、磁盘分区(格式化和虚拟内存)、权限分析、压缩备份、shell脚本、SELinux和防火墙、别名、vim的一些使用技巧、源码包编译安装、RAID阵列卡、进程管理、破解root密码、实时同步(监听与同步)

服务:Apache的web服务以及https安全web服务、FTP共享服务、邮件服务、samba服务、NFS共享服务、iscsi磁盘共享、Mariadb数据库、DNS服务(分离解析)、PXE网络装机、cobbler装机


互联网中常见协议及端口号

协议含义端口
http超文本传输协议80
https安全的超文本传输协议443
ftp文件传输协议21
tftp简单的文件传输协议69
dns域名解析协议53
smtp发邮件协议25
pop3收邮件协议110
snmp网络管理协议161
telnet远程管理协议23

Linux目录结构(man hier)

/boot存放系统引导必需的文件,包括内核、启动配置
/bin、/sbin存放各种命令程序
/dev存放硬盘、键盘、鼠标、光驱等各种设备文件
/etc存放Linux系统及各种程序的配置文件
/root、/home/用户名 分别是管理员root、普通用户的默认家目录
/var存放日志文件、邮箱目录等经常变化的文件
/proc存放内存中的映射数据,不占用磁盘
/tmp存放系统运行过程中使用的一些临时文件

命令集合:
  1. du -sh [目录或者文件]……  ---> 查看文件或目录的大小

  2. history ---> 查看历史命令 
          -c ---> 表示清空历史命令

  3. date ---> 查看当前时间
       -s "yyyy-mm-dd HH:MM:SS" --> 修改时间
       +"%Y-%m-%d %H:%M:%S" ---> 按照"年-月-日 时:分:秒"输出

  4. ln [选项] [源文件的位置] [快捷方式]  ---> 创建硬连接
       -s ---> 创建软连接

  5. crontab [选项] [-u 用用户名] ---> 设置计划任务 -e修改   -l列出已有的计划任务  -r删除所有计划任务

  6. tailf 实时跟踪日志信息  其日志等级分为0-7 一共8个级别 ,3级为错误,3级以上需要重视

  7. journalctl | grep [关键词]  ---> 按照关键字查找日志信息
     journalctl -u [服务名] ---> 按照服务名查看日志信息
     journalctl --since="yyyy-mm-dd HH:MM:SS" --until="yyyy-mm-dd HH:MM:SS" ---> 按照修改时间日志信息

  8. systemctl isolate graphical.target ---> 临时调整Linux运行模式为图形模式
     systemctl isolate multi-user.target ---> 临时调整Linux运行模式为字符模式
     systemctl set-default …….target ---> 永久调整Linux运行模式为……
     systemctl get-default ---> 查看当前Linux运行模式
     systemctl is-active 服务名 ---> 查看服务当前是开启还是没开启
     systemctl is-enabled 服务名 ---> 查看服务当前是否开机自启

  9. ssh-keygen ---> 用于无密码登陆,创建公钥,交互式,不过只要一直按回车即可
     ssh-copy-id  user@IP---> 将公钥部署到相应的服务器上

  10. uname -r ---> 查看内核信息
      lscpu ---> 查看CPU信息
      cat /proc/meminfo ---> 查看内存大小和空想情况
      cat /etc/redhat-release ---> 查看当前系统版本

  11. less ---> 进行分屏阅读,实用于长文章,功能和cat差不多
      head -[数字] [文件]---> 输出文件的前n行的内容 默认为10行
      tail -[数字] [文件]---> 输出文件的后n行的内容 默认为10行

  12. cp [被复制文件1] …… [复制到的目录]--->  以最后一个为复制的目标位置进行复制
      \cp  -r  [目录] …… [复制到的目录]  ---> 复制目录,反斜是用来取消别名,这里是为了不因为重复而回答yes
        一个常见的考题:
        rm -rf /opt/*      # 作用是: 清空/opt目目录内容
        cp -r /mnt/ /opt/test # 作用是: 将/mnt放入入/opt命名为test
        cp -r /mnt/ /opt/test # 作用是: 将/mnt放入入/opt/test目目录下 

  13. wget [软件包的URL网址] -O [/目录路径/新文件] ---> 从网站中下载文件,没有-O就是下载到当前路径,不过如果有指定下载位置,必须在路径后面写上文件名!
      scp  [文件地址]  [user]@[IP]:[拷贝到的目录] ---> 把本地文件传递到其他服务器上 

  14. passwd [用户名] ---> 交互式设置密码
      echo '[密码]' | passwd --stdin [用户名] ---> 非交互式设置密码

  15. grep  [关键字]  [文件名] ---> 从文件中按照要求找出符合匹配要求的数据
      find  [目录]  -user [用户]  -type  [f文件 ,d 目录] -exec [命令,其中{}代表] \; 

  16. showmount -e  [服务端IP地址] ---> 查看NFS服务器的共享目录列表


Linux的基本常识:
  
  1. 常见的Linux发行版本
     Red Hat Enterprise Linux 5/6/7
     Suse Linux Enterprise 12
     Debian Linux 7.8
     Ubuntu Linux 14.10/15.04

  2. Linux中常见的文件系统:
     EXT4,第四代扩展文件系统,RHEL6系列默认 ---> mkfs.ext4
     XFS,高级日志文件系统,RHEL7系列默认 ---> mkfs.xfs
     SWAP,交换空间(虚拟内存)  ---> mkswap

  3. 基本通配符
      *:任意多个任意字符
      ?:单个字符
     [a-z]:多个字符或连续范围中的一个,若无则忽略
     {a,min,xy}:多组不同的字符串,全匹配

  4.账号与组相关的配置文件:
     用户相关:/etc/passwd  /etc/shadow
     组相关:/etc/group   /etc/gshadow


yum搭建:

  服务端 : 
     1. 搭建http服务或者ftp服务

     2. 在服务指定目录下创建一个目录,放入大量的rpm包

     3. 用createrepo [目录] 生成一个清单文件
  
     4. 启服务

  客户端:
    如果没有服务端,自己想直接把光盘作为软件仓库就需要进行挂载,再书写yum配置文件。
     mount  /dev/cdrom  [挂载点]
     也可以修改挂载文件/etc/fstab 达到永久挂载 格式为

/dev/cdrom  [挂载点]  iso9660  defaults,ro 0 0

     书写yum配置文件,在/etc/yum.repos.d/*.repo

[rhel7]        #仓库标识,仓库的名字
name=rhel7.0     #仓库的描述信息
baseurl=服务位置     #指定服务端位置,最好浏览器进行复制粘贴,如果是本机挂载的yum仓库,服务位置就写file:///[挂载点],注意是三个斜线,其中第三个斜线代表绝对路径中的根
enabled=1         #启用该文件
gpgcheck=0         #不检测红帽的签名信息

    配置完成后,清除缓存后测试一下
    yum clean all
    yum repolist           #看到很多包就表示yum搭建成功


网络:

  配置IP:

nmcli connection modify [网卡名] ipv4.method [manual静态、auto动态] ipv4.addresses '[IP/子网掩码]' ipv4.dns  [DNS服务器地址] connection.autoconnect yes

   链路聚合:
     1.创建虚拟网卡:( man teamd.conf 找到热备的部分,config后面写上'{复制查到的内容}')

nmcli connection add type team con-name team0 ifname team0 autoconnect yes config '{[man帮助找到的内容]}'

     2.创建成员:

nmcli connection add type team-slave con-name team0-1 ifname [真实网卡] autoconnect yes master team0

     3.配置IP

nmcli connection modify team0 ipv4.method manual ipv4.addresses '[IP/子网掩码]' connection.autoconnect yes

    4.激活 :
nmcli connection up team0
nmcli connection up team0-1


  IPv4地址:32个二进制组成,以 点 分隔 4 部分,最终用4个十进制表示
  IPv6地址:128个二进制组成,以 冒号 分隔 8 部分,每部分由 4个16进制数表示
             每段内连续的前置 0 可省略、连续的多个 : 可简化为 ::


分区 : MBR  GPT  LVM逻辑卷

   分区信息存放在/dev下,命名的方法是/__[a-z][0-99]
     前两位是分区接口,SCSI是sd,IDE是hd
     第三位是磁盘号 , 第四位是分区号
  
  lsblk  查看当前磁盘和分区的情况
  blkid  查看某个具体分区的格式化情况
  partprobe  刷新分区情况

  MBR : 
     分区特点: 最多4个主分区,一般是3个主分区,一个拓展分区,其中从拓展分区中分出逻辑分区
     分区命令: fdisk [/dev/磁盘名] --->  交互命令,进入后使用n(创建)、d(删除)、w(保存退出)、q(不保存退出)
     分区使用: mount挂载使用
     注意点: 1.一般创建拓展分区是把所有剩余空间都给扩展分区
              2.在查看编号的时候,主分区是按照顺序来,逻辑分区号=逻辑分区号+主分区数+1(扩展分区)

  GPT :
     分区特点: 可以有128个主分区
     分区名命令:parted ---> 交互命令,进入后
    mktable(指定分区类型)、mkpart(创建分区)、print(打印当前分区情况)、unit(指定大小的单位)

  LVM :
     创建: 1.创建卷组 --->  vgcreate  [卷组名称]  [分区磁盘系统位置]
            2.创建逻辑卷 ---> lvcreate  -L  [大小]  [逻辑卷名]  [卷组名]
     扩大: 1.卷组扩大 ---> vgextend  [卷组]  [分区磁盘1]  [分区磁盘2] ......
            2.逻辑卷扩大 --->lvextend  -L  [大小]  /dev/[卷组名]/[逻辑卷名]
       !注意:扩大后需要进行拓展格式化,不能直接使用,格式化要用专用命令。
    PE : 卷组划分空间的单位,修改PE值 : vgchange  -s  [PE大小]  [卷组名]
            逻辑卷创建或扩大的时候可以用 -l [PE的个数]
     删除: 1.删除卷组 ---> vgremove [卷组名]
            2.删除逻辑卷 ---> lvremove /dev/[卷组名]/[逻辑卷名]

格式化

  常见文件存储系统
    格式化命令: mkfs.[文件系统]  [磁盘位置/dev/……]
    拓展已经被格式化的磁盘专用命令:
     ext4文文件系统:resize2fs
     xfs文文件系统:xfs_growfs

  虚拟内存: 
    将磁盘分区格式化为交换分区: mkswap  [磁盘位置]
    将格式化后的交换分区启动:swapon -a
    查看交换分区情况 : swapon -s
   /etc/fstab 书写格式:

[存储路径]  swap  swap  defaults  0  0

权限 
  访问方式(权限)
    读取:允许查看内容-read   r
    写入:允许修改内容-write  w
    可执行:允许运行和切换-execute   x

  对于文本文件,文件的权限是用于开放和限制自身文件的操作
     r:cat  less  head  tail
     w:vim   >   >>
     x:Shell脚本  可以运行
  对于目录,目录的权限是用于开放和限制目录下子文件和子目录的操作
     r:能够 ls 浏览此目录内容
     w:能够执行 rm/mv/cp/mkdir/touch/ 等更改目录内容的操作
     x:能够 cd 切换到此目录 ,并且可以根据子文件的权限情况对子文件进行操作

  权限适用对象(归属)
    所有者:拥有此文件/目录的用户-user --> u
    所属组:拥有此文件/目录的组-group --> g
    其他用户:除所有者、所属组以外的用户-other --> o

  设置基本权限
    使用 chmod 命令
    chmod  [选项]  [归属关系][+-=][权限类别]   [文档1]  [文档2] ……
         选项 -R  代表递归赋权 

  判断用户权限:        
    1.判断用户的角色      顺序:所有者>acl>所属组>其他人   匹配及停止
    2.查看相应权限位置的权限设置

  Permission denied : 权限不足
  command not found: 命令没有找到

  设置文档归属
    使用 chown 命令
    chown [-R] 属主 文档...
    chown [-R] :属组 文档...
    chown [-R] 属主:属组 文档...

  Set GID
    附加在属组的 x 位上,属组的权限标识会变为 s
    适用于目录,Set GID可以使目录下新增的文档自动设置与父目录相同的属组

   Set UID
     附加在属主的 x 位上,属主的权限标识会变为 s
     适用于可执行文件,Set UID可以让使用者具有文件属主的身份及部分权限

  Sticky Bit
     附加在其他人的 x 位上,其他人的权限标识会变为 t
     适用于开放 w 权限的目录,可以阻止用户滥用 w 权限(只能操作属于的文档)

   Acl策略
       可以但多为一个人设置权限
        setfacl  [选项]  u:用户名:权限  文档 
        setfacl  [选项]  g:组名:权限  文档
           -m 创建   -x  删除    -b  清空
        getfacl  [文档]...    查看某文档的acl权限情况

   权限修改是即时生效的,可是用户加入组,需要用户重新登录才能生效


压缩备份
tar压缩  
    Linux常见的压缩格式及命令工具和选项代表字符:
    gzip ---> .gz  ----> z
    bzip2 ---> .bz2 ----> j
    xz ---> .xz  ----> J

   压缩  tar -[格式代表字符]  - cf  [(路径)/tar包]   [被压缩的文件]     # 选项f后面必须立刻接上空格和tar包位置
   解压  tar  -xf  [(路径) / tar包]  -C  [解压的目标目录]      # 选项f后面必须立刻接上空格和tar包位置
   查看压缩包的目录  tar -tf [(路径)/tar包]

zip打包

  zip  [-r]  [包].zip  [被打包的文文件或目目录]............
  unzip  [包].zip  -d  [解压路路径]


脚本
  规范Shell脚本的一般组成
    #! 环境声明(以下所有代码利用哪一个程序解释)
    # 注释文本
    可执行代码
  重定向输出
    > :  只收集正确输出
    2>:只收集错误输出
    &>:正确输出与错误输出都收集

  $[] :代表运算  +   -   *  /    %(取余数运算)
  $( ):将命令的输出,当作参数,参与其他命令执行
  黑洞设备:/dev/null

  变量

  变量名要求
   等号两边不要有空格
   变量名只能由字母/数字/下划线组成,区分大小写
   变量名不能以数字开头,不要使用关键字和特殊字符
   若指定的变量名已存在,相当于为此变量重新赋值
   变量=变量值(中间不能有空格!)

  判断

    if [条件测试1];then
        命令序列1
    elif [条件测试2];then
        命令序列2
    elif [条件测试3];then
        命令序列3
         ......

    else
        命令序列n
    fi

  循环

    for 变量 in [被选值1]  [被选值2]  或者 {1..n}(造数)
    do
       
    done

  注意事项:

   1.if判断中每次用到判断都要在后面加上;then 在判断结束后加上fi
   2.if的开始标志是then 结束标志三fi    循环的开始标志三do  结束标志三done


SELinux
  三种运行行行模式 Enforcing Permissive Disabled
  其配置文文件为 /etc/selinux/config

命令:
  getenforce ---> 查看SELinux的模式
  setenforce ---> 临时更更改SELinux模式,不过只能在Enforcing和Permissive间切换
  getsebool -a ---> 查看布尔值
  setsebool ---> 设置布尔值
  chcon  -R  --reference=[目目录a]  [目目录b] ---> 将a的安全上下值赋给b
  semanage  port  -l  |  grep  [软件] ---> 查看某软件的端口口号
  semanage  port  -a  -t  http_port_t  -p  tcp  8909 ---> 修改某软件的开放端口口号(修改的时候会消耗很多内存,耐心心等待)

firewall
  防火墙,一般影响两台设备间的通信
四种模式:
  public 允许一部分 默认允许ssh,dhcp,ping
  trusted 全允许
  block 全禁止,并且反馈给客户
  drop 全禁止,并且不反馈

命令:
  firewall-cmd --get-default-zone ---> 查看防火墙默认安全模式
  firewall-cmd --set-default-zone=[安全模式] ---> 设置防火墙默认安全模式
  firewall-cmd --zone=public --add-service=[服务名,如http ,ftp] ---> 默认
  firewall-cmd --zone=[安全模式] --add-service= [服务] ---> 给某个模式加服务
  firewall-cmd --zone=[安全模式] --add-forward-port=port=[客户请求访问的端口号]:proto=tcp:toport=[转变后的端口号] ---> 端口转发
  firewall-cmd --permanent ………………  ---> 对防火墙进行永久配置


别名
  alias  [别名]='[命令]'  ---> 临时创建别名
  unalias [别名名称] ---> 取消已设置的别名

  永久修改别名,需要修改配置文件/etc/bashrc(所有用户别名有效,优先级最高)
  /root/.bashrc(root用户专用别名)    /home/[用户]/.bashrc(用户专用别名)   
  直接在空白处,把临时设置别名的命令打进去即可,不过这个要重新登陆才能使用


vim用法:

命令模式:
  Home 键 或 ^、数字 0     跳转到行首
  End 键 或“$”键  跳转到行尾
  1G 或 gg 跳转到文件的首行
  GG 跳转到文件的末尾行
  yy、[要复制几行]yy 复制光标处的一行、指定多行
  p、P 粘贴到光标处之后、之前
  x 或 Delete键   删除光标处的单个字符
  dd、[要删除几行]dd 删除光标处的一行、指定多行
  d^ 从光标处之前删除至行首
  d$ 从光标处删除到行尾
  C(大写) 从光标处删除到行尾,并且进入插入模式
  /[查找的字符串] 向后查找字符串
  n、N 跳至后/前一个结果
  u撤销
  U 撤销对当前行的所有修改
  Ctrl + r 取消前一次撤销操作
  ZZ 保存修改并退出
 
末行模式:
  :w 保存当前文件
  :q! 放弃已有更改后强制退出
  :wq 或 :x  保存已有修改后退出
  :r /etc/filesystems 读入其他文件内容
  :s/[将被替换的字符串]/[替换为字符串] 替换当前行第一个
  :s/[将被替换的字符串]/[替换为字符串] /g 替换当前行所有的
  :1,6  s/[将被替换的字符串]/[替换为字符串] /g 替换第1-6行所有的
  :%  s/[将被替换的字符串]/[替换为字符串] /g 替换文件内所有的
  :set nu|nonu显示/不显示行号
  :set ai|noai启用/关闭自动缩进

不过,新机可能没有vim,需要用yum下载,如果没有vim,编辑文件只能用vi


源码包编译安装

  0. 装包gcc make

  1. 解压源码包,tar解压或者zip解压

  2. 配置 ./configure

  3. 编译 make

  4. 安装 make install


RAID阵列概述

  RAID 0,条带模式
     同一个文档分散存放在不同磁盘,并行写入以提高效率,至少需要2块磁盘

  RAID 1,镜像模式
     一个文档复制成多份,分别写入不同磁盘,多份拷贝提高可靠性,效率无提升,至少需要2块磁盘

  RAID 5,高性价比模式
     相当于RAID0和RAID1的折中方案,需要至少一块磁盘的容量来存放校验数据,至少需要3块磁盘

  RAID 6,高性价比/可靠模式
     相当于扩展的RAID5阵列,提供2份独立校验方案,需要至少两块磁盘的容量来存放校验数据,至少需要4块磁盘

  RAID 0/1或者叫RAID 10(用的很少)
     整合RAID 0、RAID 1的优势,并行存取提高效率、镜像写入提高可靠性,至少需要4块磁盘

  硬RAID:由RAID控制卡管理阵列
     主板 ---> 阵列卡---> 磁盘 ---> 操作系统--->  数据
  软RAID:由操作系统来管理阵列
     主板 --->  磁盘---> 操作系统--->  RAID软件--->  数据


进程管理

  pstree  树型结构显示进程
    -a 显示完整的命令行
    -p 列列出对应PID编号

  ps aux  列出正在运行的所有进程,显示的和下面的命令不一样,显示自己的PID
  ps -elf 列出正在运行的所有进程,显示PPID(父进程的ID信息)

  top 一直查看进程
  pgrep 按照条件查看进程
     -l :输出进程名,而不仅是 PID
     -U :检索指定用户的进程
     -t :检索指定终端的进程
     -x :精确匹配完整的进程名

  who 查看登录用户信息(还有w、users也可以查看用户登录情况,不过不常用)

  命令后面加上 & 执行,表示放入后台执行
  执行命令中 ctrl + z 表示命令停止并且放入后台

  jobs 查看后台进行信息
  bg  [编号]  将后台某编号的进程,启动继续在后台运行
  fg  [编号]  将后台某编号的进程,恢复到前台运行

  kill  [PID]   ---> 杀死进程 ,加上-9表示强制杀死
  killall   ---> 表杀死相关的所有进程
  pkill  -9  -u  [用户]  ---> 强制踢出一个用户


破解root密码

  1. 重启系统,进入 recovery 恢复模式(修复模式) 
     按e键,找到 linux16 行,末尾添加 rd.break console=tty0,再按 ctrl + x 启动

  2. 可写方式重新挂载 /sysroot,并切换到此环境
     mount  -o  remount,rw  /sysroot
     chroot  /sysroot 

  3. 将root用户的密码重新设置
    echo  [密码]  |  passwd  --stdin  root

  4. 重设SELinux安全标签(安全增强版Linux)
    touch  /.autorelabel    #让SElinux失忆
     或者关闭SELinux ,也就是修改/etc/selinux/config
     修改第七行 SELINUX=disabled

  5. 先后执行 exit、reboot 完成修复


持续监听实现目录实时同步
  
1. 同步技术:
   使用rsync命令,使用如下
   rsync [选项] [源目录]  [同步到的目标目录]
     -n :测试同步过程,不做实际修改
     --delete :删除目标文件夹内多余的文档
     -a :归档模式,相当于-rlptgoD
     -v :显示详细操作信息

     -z :传输过程中启用压缩/解压

  常用组合 : rsync -avz [源目录]  [同步到的目标目录]

  当然源目录或者目标目录也可以是其他服务器的目录,用法是:
    下行 ---> rsync [选项] user@host:远程目录  本地目录
    上行 ---> rsync [选项] 本地目录  user@host:远程目录

  同步与复制的差异
    复制:完全拷贝源到目标
    同步:增量拷贝,只传输变化过的数据

 注意:源目录后面有/ 代表将源目录下
        没有/ 的话就是把目录完全拷贝到目标目录

2. 监控目录变化
  使用的是 inotifywait 命令
  
  1. 装包 inotify-tools ,不过这个是源码包,需要编译安装,具体看上面的源码包编译安装流程

  2. 安装后,如果没有做一些特殊部署,可以直接使用命令
     -m  持续监控(捕获一个事件后不退出)
     -r  递归监控、包括子目录及文件
     -q  减少屏幕输出信息
     -e  指定监视的modify、move、create、delete、attrib等事件类别,不写的话默认监视所有。
    常用组合为: inotifywait  -rq  [目录]  监听一次

3. 综合应用,实现实时同步
  原理:用while循环写一个死循环,但监听到变化的时候就进行一次同步,在服务端运行这个脚本,当修改了这个目录,就自动同步。
  书写同步的脚本:

#!/bin/bash

Watch_Root=[监听的目录]
Same_Root=[ user@IP: ][同步到的目录位置]

while  inotifywait  -rqq  $Watch_Root      
do
 rsync --delete -az $Watch_Root  $ Same_Root
done &        # 符号&表示放入后台执行

注意: 目录必须写绝对路径,并且监听路径后面必须是/结尾!


服务清单:

服务作用需要的软件和相关服务名配置文件或者配置命令
Yum软件仓库自动解决依赖关系安装软件主配置文件:/etc/yum.conf
客户端配置文件:/etc/yum.repos.d/*.repo
NTP时间同步配置客户端自动与服务端同步时间客户端软件:chrony
服务名:chronyd
客户端配置文件:/etc/chrony.conf
cron计划任务按照设置的时间间隔
为用户反复执行某一项固定的系统任务
服务端软件包:cronie、crontabs
系统服务:crond
使用 crontab 命令
任务记录文件存放路径:/var/spool/cron
LDAP认证实现网络用户和用户集中管理客户端软件:sssd、authconfig-gtk
服务名:sssd
SELinux增强Linux系统安全性getenforce       #查看当前SELinux状态
setenforce  0     #设置当前SELinux状态
修改固定配置: /etc/selinux/config 文件 
Samba共享实现Linux与Windows跨平台共享文件夹服务端软件包:samba
客户端软件:cifs-utils
系统服务:smb
服务端主配置文件:/etc/samba/smb.conf
客户端开机自动挂载使用,需要在挂载的时候输入帐号密码
NFS共享实现Linux与Linux平台共享文件夹• 服务端所需软件包:nfs-utils
• 系统服务:nfs-server
服务端 主配置文件修改 /etc/exports
客户端挂载使用,其中共享目录书写格式为
[IP]:[服务端目录位置] 
iSCSI网络磁盘服务器提供磁盘空间,客户机连接并当成本地磁盘使用服务端软件:targetcli
客户端软件:iscsi-initiator-utils
服务端服务名:target
客户端服务名:iscsid(刷新iqn)、iscsi(加载服务端共享磁盘)
•服务端运行targetcli命令进行配置
•客户端修改配置文件/etc/iscsi/initiatorname.iscsi#指定客户端声称的名字
数据库存储数据,方便查询、备份数据服务端软件:mariadb-server
服务端服务名:mariadb
主配置文件:/etc/my.cnf
Web服务为客户端提供网页内容服务端软件:httpd、mod_wsgi(提供动态页面)
服务端服务名:httpd
主配置文件:/etc/httpd/conf/httpd.conf
调用配置文件:/etc/httpd/conf.d/*.conf
安全Web服务为客户端提供安全加密网页内容服务端软件:httpd、mod_ssl
服务端服务名:httpd
修改配置文件 /etc/httpd/conf.d/ssl.conf
邮件服务 为用户提供电子邮箱存储空间(用户名@邮件域名)
 处理用户收到和发出的邮件 
服务端软件:postfix
服务端服务名:postfix
主配置文件:/etc/postfix/main.cf
DNS服务器正向解析:根据注册的域名查找其对应的IP地址服务端软件:bind、bind-chroot
服务端服务名:named
• 主配置文件:/etc/named.conf    #设置本机负责解析的域名
• 地址库文件:/var/named/        #主机名与IP地址的对应关系
rsyslog服务日志服务,负责管理系统日志服务端软件:rsyslog
服务端服务名:rsyslog
• 常见的日志文件
  /var/log/messages 记录内核消息、各种服务的公共消息
  /var/log/dmesg    记录系统启动过程的各种消息
  /var/log/cron     记录与cron计划任务相关的消息
  /var/log/maillog  记录邮件收发相关的消息
  /var/log/secure   记录与访问限制相关的安全消息
DHCP服务动态主机配置协议,用来简化主机地址分配管理服务端软件:dhcp
服务端服务名:dhcpd
主配置文件:/etc/dhcp/dhcpd.conf
tftp服务简单的文件传输协议 服务端软件:tftp-server
服务端服务名:tftp
  默认共享数据路径:/var/lib/tftpboot

Apache 
搭建服务器
  1. 装包 httpd

  2. 配置 /etc/httpd/conf/httpd.conf 主配置文件

  3. 启服务 httpd

对其进行特殊要求的部署:
  1. 修改域名 --> vim /etc/httpd/conf/httpd.conf 中的 ServerName行

  2. 修改网页文件根目录 --> vim /etc/httpd/conf/httpd.conf 中的 DocumentRoot 

  3. 虚拟主机 --> 修改配置文件 /etc/httpd/conf.d/[自己设置虚拟主机配置的名字].conf

<virtualhost [IP,一般是*]:[端口,一般是80]>
ServerName [域名]
DocumentRoot [网络根目录]
</virtualhost>

  4. 设置权限(一般默认/var/www下所有子目录对所有人有访问权限,其他地方默认没有权限)--> 修改配置文件 /etc/httpd/conf.d/[自己设置权限配置的名字].conf ---> 设置SELinux的安全上下文值

<Directory [目录的绝对路径]>
  Require all granted | denied  # 全体禁止访问或者允许
  Require ip [IP]     # 只允许某IP访问
</Directory>

    **** 设置完权限要设置SELinux 的安全上下文值  
    chcon -R --reference=[目录a]  [目录b]  # 把a目录的上下文值给b目录

  5. 部署Python的动态页面 ---> 装包,修改 conf.d/[虚拟主机配置文件].conf 
    yum install -y mod_wsgi
    vim /etc/httpd/conf.d/[虚拟主机的配置文件]

<VirtualHost *:80>
  WsgiScriptAlias  [客户端网络路径]    [服务器实际原始路径]
</VirtualHost>

  6. 修改端口 ---> 修改配置文件vim /etc/httpd/conf.d/[虚拟主机的配置文件] --->修改SELinux的开发端口
    vim /etc/httpd/conf.d/[虚拟主机的配置文件]

Listen 8909
<VirtualHost *:8909>
  WsgiScriptAlias [客户端网络路径]    [服务器实际原始路径]
</VirtualHost>

    semanage port -l | grep http
    semanage port  -a  -t  http_port_t  -p  tcp 8909

注意:
   1. 每次修改配置文件都要重启服务
   2. 虚拟主机存在的时候,直接用IP,会调用第一个虚拟主机的信息,客户端调用的时候,出现端口不匹配或者域名不匹配,当中有一个不匹配时,会根据端口信息调用该端口中的第一个虚拟主机。
   3. 搭建Apache服务的时候,需要考虑的几个问题:1.部署的服务是否有权限  2. 修改到新的路径下,要设置权限并且修改目录的上下文值(部署到/var/www以外的地方)3. 设置SELinux的默认端口,并且配置文件中要写Listen(修改端口信息)

https 安全web 构建 
  1.装包 mod_ssl

  2.部署 
   网站证书、根证书 :/etc/pki/tls/certs/
   私钥 : /etc/pki/tls/private/

  3.修改配置文件 /etc/httpd/conf.d/ssl.conf 59-60、100、107、122行

  4.重启httpd服务


FTP
  1.装包vsftpd

  2.重起vsftpd服务

  3.本机测试验证
  curl ftp://172.25.0.11

  4.默认vsftpd共享路径 /var/ftp/


邮件服务器
  1.装包 postfix

  2.配置 /etc/postfix/main.cf

  3.启服务 systemctl restart postfix

  发邮件 echo '[邮件内容]' | mail -s '[邮件标题]' -r [发件人] [收件人]
  收邮件 main -u [用户]


samba服务
搭建服务端:
  1.装包 samba

  2.创建用户 A ,并且加入samba服务
   useradd [用户]
   pdbedit -a [上面创建的用户]  --->  交互设置密码

  3.配置 /etc/samba/smb.conf
    最后加入

[名字]
 path = [共享目目录]
 write list = [允许读写的用用户名]

  4.关闭防火墙,设置seliux的布尔值
    getsebool -a | grep samba
    setsebool samba_export_all_ro (samba_export_all_rw) on

  5.启服务smb

搭建客户端:
  1.装包cifs-utils

  2.挂载 mount -o user=[用户],pass=[密码] //[IP]/共享名字  /[挂载点]
    永久挂载文件书写

//[IP]/共享名  [挂载点] cifs defaults,user=[用户名],pass=[密码],_netdev 0 0

nfs共享
搭建服务端
  1.装包 nfs-utils

  2.配置 /etc/exports
/[共享目录]  [共享给的IP,也可以是网段](ro)   #只读共享
/[共享目录]  [共享给的IP,也可以是网段](rw)   #读写共享

  3.启动服务nfs-server

  4.如果是做读写,需要给共享目录赋权
    chown  :nfsnobody  /[共享目录]
    chmod  g+s  /[共享目录]

搭建客户端
  挂载 mount [IP]:/[共享路径]  [挂载点]
  永久挂载
[IP]:/[共享路径]  [挂载点]   nfs   defaults,_netdev 0 0


iscsi
搭建服务端
  1. 分区,从磁盘中分一个区(fdisk),不用格式化。

  2. 关闭防火火墙

  3. 装包 targetcli

  4. 配置  targetcli(里面创建5个模块)
/> backstores/block  create  name=[名字] dev=[磁盘]
/> iscsi/  create  [iqn命名,作为iscsi的名字]
/> iscsi/[tab键]/tpg1/luns  create  /ba[tab键]4
/> iscsi/[tab键]/tpg1/acls  create  [iqn命名,用用于验证用用户名] 5
/> iscsi/[tab键]/tpg1/portals  create  [本机用用于传递的IP] ip_port=[端口号,默认为3260]

  5.重启服务 target

搭建客户端
  1. 装包 iscsi-initiator-utils

  2. 配置 /etc/iscsi/initiatorname.iscsi 验证用户名
    (可以用用man iscsiadm中的example来找)
   iscsiadm --mode discoverydb --type sendtargets --portal [IP] --discover  配置选择服务端的IP

  3. 启服务iscsid  iscsi


mariadb数据库

配置:
    装包: yum install -y mariadb-server
    起服务: systemctl restart mariadb

修改密码:
     mysqladmin -u [用户名]  [-p[旧密码]] password '新密码'

登录:
     mysql  -u  [用户名]  -p[密码]  -h  [IP或者localhost]     # -p后面没有空格 -h 指定以什么IP登陆

导入备份:
     mysql -u [用户名] -p[密码] [库] < [文件]

基本操作:
   show databases  查看所有库的基本信息
   use database [库名]    前往某个库
   show tables    查看库中的表的基本信息

   对用户创建并赋权
   grant [增删改查的权限] on [库].[表] to [用户名]@[登陆IP] identified by [密码];

   对表进行查找
   select [表1].[表中数据的字段1],[表2].[表中数据的字段2]……  from  [表1],[表2]……  where [表].[字段] = '' and ……;

   对表进行删除
   delete from [表1],[表2]……  where [表].[字段] = '' and ……;

   对表进行增加
   insert into [表] values ('[按照表的要求写入数据1]','[按照表的要求写入数据2]' …… );

注意点:
   1. mariadb 进去数据库的命令是mysql  , 设置密码是 mysqladmin
   2. ***注意登录或者改密码时候-p后面要紧跟密码,不能有空格
   3. mariadb 数据库中,每个语句要家;
   4. 增删改查中where用于设置条件,其连接方式是and,其他是用[ , ]  所以要注意分开记忆。


DNS

DNS服务器

  1.搭建DNS:
      装包: bind bind-chroot
      配置: 主配置文件/etc/named.conf
            地址库文件 /var/named/*
      起服务: named

  2.多区域DNS, 主配置文件中写多个zone, 每个对应创建一个地址库文件

  3.特殊解析:
      轮询 : 地址库文件中同样的域名写多次,但是每次解析的IP不一样,第一次有客户段请求解析的时候,DNS会返回第一个IP,第二个来的时候会返回第二个,以此类推。
      泛域名 : 用通配符*代表地址位
      别名 : CNAME 

  4.子域授权:
    在两个服务器上搭建DNS,其中一个是父域,一个是子域,父域中把子域的信息录入

  5.递归解析:
    默认开启

  6.每个Linux 都有个文件/etc/hosts 这文件也可以解析DNS,他解析优先级高于DNS

  7.分离解析 让不同用户解析的结果也不一样

  8.缓存服务器

DNS服务器的配置文件,总和:

如果是缓存DNS服务器,只有一个主配置文件,没有地址库文件:

options {
  directory       "/var/named";
  forwarders {  [缓存服务器查找的DNS服务器,一般是网络中的DNS服务器];  };
};

完整的正常DNS服务器:

   /etc/named.conf 主配置文件:

options {
  directory "/var/named";  #指定地址库文件存放位置
  recursion no;      #禁用递归解析,不写的话默认开启
};
 
acl "[acl名]" { [A的IP1];  [网段 如 192.168.110.0/24];  …………};     #类似变量
view  "[名字1]"  {						#用于分离解析
  match-clients {  [上面定义过的acl表];  };
  zone  "[域名1]"  IN  {
    type  [master/slaver];
    file  "[为A解析的库文件名]";
  };
  zone  "[域名2]"  IN  {
    type  [master/slaver];
    file  "[为A解析的库文件名]";
  };
};
 
view  "[名字2]"  {
  match-clients {  [B的IP1]; …………  };
  zone  "[域名1]"  IN  {
    type  [master/slaver];
    file  "[为B解析的库文件名]";
  };
  zone  "[域名2]"  IN  {
    type  [master/slaver];
    file  "[为B解析的库文件名]";
  };
};
 
view  "[名字3]"  {
  match-clients {  [any代表所有];  };
  zone  "[域名1]"  IN  {				#两个zone代表多区域DNS
    type  [master/slaver];
    file  "[为其他解析的库文件名]";
  };
  zone  "[域名2]"  IN  {
    type  [master/slaver];
    file  "[为其他解析的库文件名]";
  };
};

PXE 自动装机

  思路:dhcp--->tftp--->安装清单--->菜单目录--->rpm包共享--->自动应答

1.DHCP 配置
  装包:dhcp
  配置:/etc/dhcp/dhcpd.conf
subnet  [网网段].0  netmask  255.255.255.0    {        # 分配的网段
  range [IP- 起点 ]  [IP- 终点 ];                # 分配 IP 地址范围
  option  domain-name-servers [DNS 服务器器 IP];        # 分配的 DNS 服务器
  option  routers  [ 网网关 IP];                # 分配的网关地址
  default-lease-time  600;
  max-lease-time 7200;
  next-server 192.168.4.7;                      # 指定下一服务器IP地址
  filename "pxelinux.0";                        # 指定网卡引导文件名称
}

2.搭建tftp
  装包:tftp-server
  启服务: tftp
  部署 pxelinux.0 文件 :
    yum provides */pxelinux.0 #查询仓库中哪个包产生改文件
    yum -y install syslinux
    rpm -ql syslinux | grep pxelinux.0 #查询安装清单
    cp /usr/share/syslinux/pxelinux.0  /var/lib/tftpboot/   #将文件拷⻉到tftp下

3,部署菜单文件 : /var/lib/tftpboot/pxelinux.cfg/default
  部署菜单文件中需要的模块
  图形的模块 vesamenu.c32
  背景图片 splash.png
  启动内核 initrd.img
  驱动程序 vmlinuz
  修改菜单文件: cp  isolinux/isolinux.cfg -O /var/lib/tftpboot/pxelinux.cfg/default    (day19)

4.搭建web或者ftp共享

5.自自动问答
  装包:system-config-kickstart
  修改本地yum源:把标识修改为[development]
  运行:system-config-kickstart
  利用web或者ftp共享应答文件
  修改菜单文件指定应答文件
  菜单文件核心模块:
label    linux
  menu  label  Install  RHEL7                        # 菜单选项显示内容
  menu  default                                    # 读秒结束默认选择
  kernel  vmlinuz                                    # 加载内核
  append  initrd=initrd.img  ks=http://192.168.4.7/ks.cfg        # 加载驱动,指定问答文文件

实现PXE网络批量装机需要具备哪些条件,各组件的作用,如何实现无人值守安装?
  DHCP服务器:为客户机提供IP地址等参数,并告知下一个服务器地址、启动文件名
  TFTP服务器:为客户机提供启动文件、启动菜单配置、用来安装系统的内核及初始镜像文件
  yum软件仓库:通过HTTP或FTP方式为客户机提供安装树资源(RHEL7光盘目录结构)
  实现kickstart无人值守安装:
    1)提前准备一份安装过程中所涉及问题的答案清单(即应答文件)
    2)然后将此文件部署到客户机可下载的位置
    3)通过修改pxelinux.0的启动配置,使客户机装系统时自动调用应答文件实现面交互


Cobbler自动装机
  
  这网络自动装机,和PXE差不多,原理也一样,只是把PXE做了一个封装,让我们实现更轻松,不过相对而言,个性化设计会比PXE复杂,总体思路还是比较简单:装包、配置主配置文件和dhcp文件、部署引导文件(直接解压)、然后依次启4个服务。

  0. 搭建一台CentOS服务器,完成网络配置、yum仓库的配置、关闭防火墙和SELinux

  1. 装包 解压zip压缩包,并安装里面的rpm包
    unzip  Cobbler.zip -d /opt
    unzip /opt/Cobbler/cobbler.zip -d /opt
    yum install -y /opt/cobbler/*

  2. 配置 修改配置文件/etc/cobbler/settings

next_server:   [本服务器的IP]     #设置下一个服务器还为本机
server:   [本服务器的IP]          #设置本机为cobbler服务器
manage_dhcp:   1                #设置cobbler管理dhcp服务
pxe_just_once:   1              #防止客户端重复安装操作系统

   配置 cobbler的dhcp文件: /etc/cobbler/dhcp.template 
   把文件中的网段修改成服务器的网段,用全文替换的方法噶
    :%s  /192.168.1/[网段,即IP的前三个字段]/g    #全文替换

  4. 部署引导文件 
     在原来解压的大压缩包中有引导文件包 cobbler_boot.tar.gz
    tar -xPf  /Cobbler/cobbler_boot.tar.gz   #绝对路径释放

  5.启动相关服务 cobblerd ---> httpd ---> tftp ---> rsyncd(同步服务)

  6.同步刷新cobbler配置
    cobbler sync   #检测配置是否正确
     当出现 *** TASK COMPLETE ***  代表搭建成功

  7. 光盘部署和个性化修改

     挂载光盘到挂载点,再使用下面的命令,导入数据,导入后可以取消挂载重新再挂一个,重复操作,实现多操作系统搭建:
    cobbler import  --path=挂载点   --name=导入系统命名(随意起)  #导入安装镜像数据

    cobbler list    #查看有哪些系统
    cobbler profile remove --name=CentOS7-x86_64  #删除菜单信息
    cobbler distro remove --name=CentOS7-x86_64   #删除镜像信息
  
     如果想自定义部署ks应答文件,system-config-kickstart生成ks文件,并且放到指定的目录下:/var/lib/cobbler/kickstarts/,再部署进去:
    cobbler profile edit --name=[list查到的菜单名字]  --kickstart=/var/lib/cobbler/kickstarts/自定义.cfg

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值