博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux学习阶段性总结servers
阅读量:6431 次
发布时间:2019-06-23

本文共 21821 字,大约阅读时间需要 72 分钟。

Services01(较杂乱的小点)

搭建环境

1.创建两台虚拟机2.将两台虚拟机,修改名字,一个取名A  一个取名B    设置虚拟机A            为eth0IP地址:192.168.4.7/24            永久的主机名:svr7.tedu.cn     设置虚拟机B            为eth0IP地址:192.168.4.207/24            永久的主机名:pc207.tedu.cn3.真机远程管理两台虚拟机4.Yum仓库的设置    真机搭建Web服务,共享光盘所有内容(开机自动挂载)    1.将所有的loop设备全部卸载    2.mount -a      df -h     #查看是否挂载成功    3.scp直接拷贝到配置文件(A->B)

Yum仓库

1)网络yum
baseurl为网络服务(web,ftp,nfs等)
2)本地yum
baseurl为本地镜像(iso光盘,iso9660开机自动挂载)
3)自定义yum
1.具备非光盘的软件包
将真机的数据传递给虚拟机A
scp /路径/源文件 root@IP地址 :/路径/
scp /root/桌面/tools.tar.gz root@192.168.4.7:/root/ (密码验证,如果传了公钥可以免交互)
2.虚拟机A上,tar解包到根目录下
tar -xf /root/tools.tar.gz -C /
ls /tools/other/
3.建立仓库数据文件
createrepo /tools/other/
ls /tools/other/repodata/
4.虚拟机追加写入一个仓库 /tools/other 是一个仓库
vim /etc/yum.repos.d/rhel7.repo
[rhel7]
name=rhel7
baseurl=
enabled=1
gpgcheck=0

[other]             name=hahaxixi             baseurl=file:///tools/other     #指定本机为Yum仓库             enabled=1             gpgcheck=0     5.yum repolist     刷新仓库     6.几个测试软件       sl  cmatrix     oneko& #放入后台运行

目录结构

认识Linux的目录层次:
– man hier

常见一级目录的用途

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

权限的数值表示

权限的数值化
– 基本权限:r = 4,w = 2,x = 1
chmod 755 /nsd01
– 附加权限:SUID = 4,SGID = 2,Sticky Bit = 1
历史命令
管理/调用曾经执行过的命令
– history:查看历史命令列表
– history -c:清空历史命令
– !str:执行最近一次以str开头的历史命令
调整历史命令的数量
vim /etc/profile
HISTSIZE=1000 //默认记录1000条
!ls #执行最近一条历史命令以ls开头的
统计目录的大小
du -sh /boot/
zip归档工具,跨平台的压缩工具
命令格式: zip -r /路径/压缩包名 /路径/被压缩的源文件

zip -r /root/test.zip   /home/  /mnt/  /etc/passwd

命令格式: unzip /路径/压缩包名 -d /释放的路径

unzip /root/test.zip -d /opt
软连接与硬连接,快捷方式

制作快捷方式:  ln  -s   /路径/源文件     /路径/快捷方式的名字    ln -s  /etc/redhat-release       /abc i节点: 编号标识硬盘的一块存储区域ln,创建软连接    – 软连接 --> 原始文档 --> i节点 --> 文档数据    – ln -s  原始文件或目录   软连接文件     若原始文件或目录被删除,连接文件将失效     软连接可存放在不同分区/文件系统ln,创建硬连接    – 硬连接 --> i节点 --> 文档数据    – ln  原始文件   硬连接文件    若原始文件被删除,连接文件仍可用    硬连接与原始文件必须在同一分区/文件系统         echo 123 > /opt/A         cat  /opt/A         ln -s /opt/A   /opt/B   #软连接         ln  /opt/A   /opt/C     #硬连接         ls -i  /opt/       查看i节点         rm -rf /opt/A   #当删除源文件,只有硬连接可用         ls -i  /opt/

wc 统计命令 (别名为wc -lcm 行 字节 字符)

wc -l : 只统计行数 请统计/etc/以 .conf结尾的文件有多少个(包含子目录) find /etc/ -name  "*.conf"  |  wc -l

vim文本编辑器

光标跳转

Home 跳转到行首
End 跳转到行尾
1G 或 gg 跳转到文件的首行
G 跳转到文件的末尾行
12G 跳转到文件的第12行

复制/粘贴/删除

复制 yy、#yy    复制光标处的一行、#行粘贴 p         粘贴到光标处之后x 或 Delete键      删除光标处的单个字符dd、#dd       删除光标处的一行、#行d^       从光标处之前删除至行首d$       从光标处删除到行尾C(大写)          从光标处删除到行尾,并且进入插入模式u                撤销上一次操作

查找/撤销/保存

/word        向后查找字符串“word”n、N          跳至后/前一个结果u        撤销最近的一次操作Ctrl + r     取消前一次撤销操作(反撤销)ZZ(大写)       保存修改并退出

末行模式操作

:r /etc/filesystems 读入其他文件内容

字符串替换

:s/root/admin        替换光标所在行第一个“root”:s/root/admin/g      替换光标所在行所有的“root”:1,10s/root/admin/g  替换第1-10行所有的“root”:%s/root/admin/g     替换文件内所有的“root

开关参数的控制

:set  nu|nonu   显示/不显示行号:set  ai|noai   启用/关闭自动缩进

补充: vim 可视模式 在命令模式下 按 ctrl+v 进入可视模式 可以选择列

按 大写的 I 进入插入模式,然后输入内容 按Esc退回到命令模式(批量注释)
vim 默认配置文件 ~/.vimrc
初始化vim操作,每次使用vim命令首先执行的内容
set nu #开启行号
set ai #启用自动缩进
set tabstop=2 #一个tab键等于 两个空格
systemctl控制

服务的控制

开启服务  systemctl  start  服务名 停止服务  systemctl  stop   服务名 重起服务  systemctl  restart  服务名 设置开机自起             systemctl  enable   服务名 设置开机不自起            systemctl  disable  服务名 查看当前是不是开机自起        systemctl  is-enabled  服务名

模式的控制

纯文本字符模式 :    multi-user.target 图形模式  :  graphical.target

当前切换模式

#systemctl isolate graphical.target #切换到图形模式
#systemctl isolate multi-user.target #切换到字符模式

修改默认进入的模式

#systemctl get-default #查看默认进入的模式
#systemctl set-default graphical.target #修改默认的模式
#systemctl get-default
#reboot #重起验证
源码编译安装

rpm包:rpm yum 简单 不灵活

利用gcc与make

源码包---------------------->可以执行的程序 ---------->运行安装

灵活,功能与安装位置 可以自由选择

源码包编译安装:

步骤1:安装gcc与make编译开发工具    gcc make步骤2:tar解包,释放源代码至指定目录    tar -xf /tools/inotify-tools-3.13.tar.gz -C /mnt/    ls /mnt/    cd /mnt/inotify-tools-3.13/步骤3:  ./configure 配置,指定安装目录/功能模块等选项                         作用1:检测系统是否安装gcc                         作用2:功能与安装位置 可以自由选择         --prefix= 指定安装位置    cd /mnt/inotify-tools-3.13/    ./configure  --prefix=/opt/myrpm常见报错:没有安装gccchecking for gcc... nochecking for cc... nochecking for cl.exe... no步骤4:make 编译,生成可执行的二进制程序文件步骤5:make install 安装,将编译好的文件复制到安装目录验证:    ls /opt/    ls /opt/myrpm/    ls /opt/myrpm/bin/

Services02

DNS服务基础:    域名解析   只负责将域名解析ip地址DNS服务器的功能    – 正向解析:根据注册的域名查找其对应的IP地址    – 反向解析:根据IP地址查找对应的注册域名,不常用所有完整的域名都要以点结尾:  www.qq.com.   www.baidu.com.                        .   根域    一级域名:   .cn    .us    .hk    .tw   .kr  .com  .net 二级域名:     .com.cn   .net.cn   .org.cn .edu.cn ......三级域名:    nb.com.cn  dawai.com.cn   haha.com.cn  haxi.com.cnFull Qualified Domain Name,完全合格主机名(FQDN)

– 系统服务: named

– 默认端口: 53
– 运行时的虚拟根环境:/var/named/chroot/(遇到***时会被困到这个目录下)

主配置文件:/etc/named.conf #设置本机负责解析的域名 tedu.cn

地址库文件:/var/named/ #主机名与IP地址的对应记录

搭建基本的DNS服务

解析tedu.cn
服务端:虚拟机A
1.安装一个可以提供域名解析的软件
bind-chroot 提供虚拟根支持,牢笼政策
bind 域名服务包
2.修改主配置文件/etc/named.conf
options {
directory "/var/named";}; #设置地址库文件路径
zone "tedu.cn" IN { #设置负责解析的域名
type master; #设置本机为主DNS服务器
file "tedu.cn.zone"; #设置地址库文件名字
};
3.建立地址库文件/var/named/tedu.cn.zone
cp -p /var/named/named.localhost /var/named/tedu.cn.zone -p:权限不变进行拷贝

vim  /var/named/tedu.cn.zone    tedu.cn.      NS      svr7         #指定本区域DNS服务器    svr7          A       192.168.4.7  #指定DNS服务器的IP地址    www           A       1.1.1.1    ftp           A       2.2.2.24.重起服务客户端:虚拟机B验证DNS解析     #echo nameserver 192.168.4.7 > /etc/resolv.conf      #nslookup   www.tedu.cn  #测试域名解析

搭建多区域的DNS

解析qq.com域名1.修改主配置文件(追加写入)zone  "qq.com"  IN  {              type master;                   file "qq.com.zone";        };2.建立地址库文件 /var/named/qq.com.zone(新建)qq.com.       NS      svr7        svr7          A       192.168.4.7  www           A       30.30.30.30ftp           A       4.4.4.4

特殊的解析记录

一、DNS的轮询 (简单的负载均衡)虚拟机A:vim /var/named/tedu.cn.zonetedu.cn.        NS      svr7svr7            A       192.168.4.7www             A       192.168.4.10www             A       192.168.4.20www             A       192.168.4.30ftp             A       2.2.2.2systemctl restart named虚拟机B:验证ping -c 1 www.tedu.cnping -c 1 www.tedu.cnping -c 1 www.tedu.cn二、泛域名解析虚拟机A:vim /var/named/tedu.cn.zone*               A       10.20.30.40tedu.cn.        A       50.60.70.80systemctl restart named虚拟机B:nslookup   haha.tedu.cnnslookup   xixi.tedu.cnnslookup   tedu.cn三、有规律的泛域名解析    stu1.tedu.cn--------》192.168.10.1        stu2.tedu.cn--------》192.168.10.2        stu3.tedu.cn--------》192.168.10.3        ......        stu50.tedu.cn--------》192.168.10.50    $GENERATE 造数工具 虚拟机A:    vim /var/named/tedu.cn.zone     *               A       10.20.30.40     tedu.cn.        A       50.60.70.80    $GENERATE  1-50  stu$   A  192.168.10.$systemctl restart named虚拟机B:    nslookup  stu32.tedu.cn    nslookup  stu50.tedu.cn    nslookup  stu51.tedu.cn四、解析记录的别名虚拟机A:       vim /var/named/tedu.cn.zone    tts            CNAME    ftp    systemctl restart named虚拟机B:    nslookup  tts.tedu.cn    nslookup  ftp.tedu.cn

DNS子域授权

向 父域的DNS虚拟机A 解析 子域的域名 可以得到 虚拟机B 的结果

父域:   www.tedu.cn    虚拟机A           子域:  www.bj.tedu.cn  虚拟机B一、虚拟机B  搭建子域的DNS    1.bind-chroot bind    2.修改主配置文件/etc/named.conf    options {    directory   "/var/named";    };zone  "bj.tedu.cn"  IN  {             type master;                    file "bj.tedu.cn.zone";     };    3. 建立地址库文件/var/named/bj.tedu.cn.zone    cp -p /var/named/named.localhost /var/named/bj.tedu.cn.zone    vim  /var/named/bj.tedu.cn.zone     (追加写入,不要管关于主从dns的配置)    bj.tedu.cn.      NS       pc207            pc207             A       192.168.4.207      www               A       1.2.3.4    4.systemctl restart named   #重起服务二、虚拟机A:父域    1.修改地址库文件/var/named/tedu.cn.zone    tedu.cn.        NS      svr7    bj.tedu.cn.     NS      pc207    svr7            A       192.168.4.7    pc207           A       192.168.4.207    2.重起named服务测试验证    nslookup www.bj.tedu.cn 192.168.4.7        Server:     192.168.4.7        Address:    192.168.4.7#53        Non-authoritative answer:   #非权威解答        Name:   www.bj.tedu.cn        Address: 1.2.3.4

DNS解析过程:

递归解析:指DNS服务器与其他DNS服务器交互,最终将解析结果带回来的过程 (客户端--》dns服务器为递归)
迭代解析:指DNS服务器与其他DNS服务器交互,最终将告知下一个DNS服务 (dns服务器到根域查询为迭代)
验证迭代查询
dig命令,更专业的DNS测试工具 (host,nslookup总共三个dns查询命令)

缓存DNS

作用:缓存解析结果,提高解析速度

搭建方式:

1.全局转发,所有的DNS解析请求全部转发给公网DNS
2.根域迭代,所有的DNS解析请求全部发给根域DNS服务器

真机上实现缓存DNS服务器

bind bind-chroot
cat /etc/resolv.conf
修改配置文件/etc/named.conf
options {
directory "/var/named";
forwarders { 172.40.1.10; }; #转发给172.40.1.10
};
(相当于把所有解析请求都转给真机的dns服务器,而真机搭的这个dns服务,
只起到缓存真机所用的dns服务器的解析结果)
真机作为服务端时,收到的客户端请求全都给真机作为客户端时的服务端dns
而自己只做缓存记录供给自己的客户端做解析。
systemctl restart named
在虚拟机上解析
nslookup www.qq.com 192.168.4.254
nslookup www.360.com 192.168.4.254

Services03

DNS分离解析

当收到客户机的DNS查询请求的时候– 能够区分客户机的来源地址– 为不同类别的客户机提供不同的解析结果(IP地址)– 根据客户端的不同,解析同一个域名,得到的解析结果不同– 目的:为客户端提供网络最近的服务器资源    (电信ip解析请求解析成电信服务器ip,联通ip解析请求解析成联通服务器ip)    (成都的ip解析请求解析成成都本地最近服务器ip)环境及需求– 权威DNS:svr7.tedu.cn 192.168.4.7– 负责区域:sina.com– A记录分离解析 —— 以 www.sina.com 为例客户机来自 解析结果    192.168.4.207 --------》 192.168.4.100    其他地址 --------》 1.2.3.4

解析原则:

1.由上到下依次匹配, 匹配及停止
2.使用view时,所有的客户端都必须在分类中
3.所有的zone都必须在view中
4.每一个view中的zone必须相同

虚拟机A        1.bind-chroot bind        2.修改主配置文件/etc/named.conf        options {        directory   "/var/named";            };        acl test { 192.168.4.207;  };   acl地址列表  简化match-clients匹配        view "nsd" {        match-clients {   test;   };            zone "sina.com" IN {                type master;                file "sina.com.nsd";         };         };        view "other" {        match-clients {    any;    };            zone "sina.com" IN {                  type master;                 file "sina.com.other";         };         };        3.建立sina.com.nsd、sina.com.other 地址库文件 , 写入不同的解析结果        sina.com.nsd 解析结果为 192.168.4.100        sina.com.other 解析结果为 1.2.3.4

补充: vim 可视模式 在命令模式下 按 ctrl+v 进入可视模式 可以选择列

按 大写的 I 进入插入模式,然后输入内容 按Esc退回到命令模式(批量注释)
vim 默认配置文件 ~/.vimrc
初始化vim操作,每次使用vim命令首先执行的内容
set nu #开启行号
set ai #启用自动缩进
set tabstop=2 #一个tab键等于 两个空格

DNS分离解析综合实验:

虚拟机C搭建Web服务器

1.安装httpd

2.修改配置文件/etc/httpd/conf.d/nsd01.conf

#mkdir /var/www/qq /var/www/163
#echo woshi Web1 QQ > /var/www/qq/index.html
#echo woshi Web1 163 > /var/www/163/index.html

#cat /etc/httpd/conf.d/nsd01.conf

<VirtualHost :80>
ServerName www.qq.com
DocumentRoot /var/www/qq
</VirtualHost>
<VirtualHost
:80>
ServerName www.163.com
DocumentRoot /var/www/163
</VirtualHost>

虚拟机D搭建Web服务器

1.安装httpd

2.修改配置文件/etc/httpd/conf.d/nsd01.conf

#mkdir /var/www/qq /var/www/163
#echo woshi Web2 QQ > /var/www/qq/index.html
#echo woshi Web2 163 > /var/www/163/index.html

#cat /etc/httpd/conf.d/nsd01.conf

<VirtualHost :80>
ServerName www.qq.com
DocumentRoot /var/www/qq
</VirtualHost>
<VirtualHost
:80>
ServerName www.163.com
DocumentRoot /var/www/163
</VirtualHost>

################################################

实现的效果

192.168.4.7-> www.qq.com www.163.com---》Web1(10)

192.168.4.207-> www.qq.com www.163.com---》Web2(20)

在虚拟机A搭建DNS分离解析

view "nsd" {
match-clients { 192.168.4.7; };
zone "qq.com" IN {
type master;
file "qq.com.nsd";
};
zone "163.com" IN {
type master;
file "163.com.nsd";
};
};

view "other" {

match-clients { any; };
zone "qq.com" IN {
type master;
file "qq.com.other";
};
zone "163.com" IN {
type master;
file "163.com.other";
};
};

指定DNS服务器

#echo nameserver 192.168.4.7 > /etc/resolv.conf

RAID磁盘管理

廉价冗余磁盘阵列
– Redundant Arrays of Inexpensive Disks

– 通过硬件/软件技术,将多个较小/低速的磁盘整合成一个大磁盘

– 阵列的价值:提升I/O效率、硬件级别的数据冗余

– 不同RAID级别的功能、特性各不相同

RAID 0,条带模式

– 同一个文档分散存放在不同磁盘
– 并行写入以提高效率,无容错功能
– 至少由2块磁盘组成

RAID 1,镜像模式

– 一个文档复制成多份,分别写入不同磁盘
– 多份拷贝提高可靠性,效率无提升
– 至少由2块磁盘组成

RAID5,高性价比模式

– 相当于RAID0和RAID1的折中方案
– 需要至少一块磁盘的容量来存放校验数据
– 至少由3块磁盘组成

RAID6,高性价比/可靠模式

– 相当于扩展的RAID5阵列,提供2份独立校验方案
– 需要至少两块磁盘的容量来存放校验数据
– 至少由4块磁盘组成

RAID 0+1/RAID 1+0

– 整合RAID 0、RAID 1的优势
– 并行存取提高效率、镜像写入提高可靠性
– 至少由4块磁盘组成

进程管理

程序:静态的代码,占用磁盘空间 进程:动态的代码,会占用 CPU  内存 进程的唯一标识:PID 父进程与子进程   树形结构 (某些程序需要干掉其父进程才能干掉他本身)

查看进程树

pstree — Processes Tree
– 格式:pstree [选项] [PID或用户名]

常用命令选项

– -a:显示完整的命令行
– -p:列出对应PID编号

systemd是所有进程的父进程

pstree #显示进程树
pstree lisi #显示用户lisi的进程
pstree -p lisi #显示进程PID
pstree -ap lisi #显示进程完整的信息

ps aux 操作

– 列出正在运行的所有进程

用户 进程ID %CPU %内存 虚拟内存 固定内存 终端 状态 起始时间 CPU时间 程序指令

ps -elf 操作

– 列出正在运行的所有进程 (可以查看其父进程)
PPID:父进程的PID号

进程动态排名

top 交互式工具
– 格式:top [-d 刷新秒数] [-U 用户名]

按 大写的P 按cpu降序

按 大写的M 按内存降序
top -d 1 root 默认看当前用户

ps aux   |  wc  -l   #统计进程数  ps -elf  |  wc  -l   #统计进程数

检索进程

pgrep — Process Grep
– 用途:pgrep [选项]... 查询条件

常用命令选项

– -l:输出进程名,而不仅仅是 PID
– -U:检索指定用户的进程
– -t:检索指定终端的进程
– -x:精确匹配完整的进程名
pgrep -l atd
pgrep -l cron
pgrep -lU lisi
pgrep -lU lisi | wc -l
pgrep -lx atd
控制进程
sleep 900 & #正在运行放入后台
jobs #查看后台进程信息
sleep 800
^Z #按Ctrl+z正在运行放入后台
bg 2 #将后台编号为2的进程继续运行
fg 1 #将后台编号为1的进程恢复到前台
杀死进程
– Ctrl+c 组合键,中断当前命令程序
– kill [-9] PID... 、kill [-9] %后台任务编号
– killall [-9] 进程名...
– pkill 查找条件
-9:强制杀
– killall -9 -u 用户名 #杀死该用户开启的所有进程(强制 踢出 一个用户)
日志管理

日志的功能

系统和程序的“日记本”
– 记录系统、程序运行中发生的各种事件
– 通过查看日志,了解及排除故障
常见的日志文件

/var/log/messages 记录内核消息、各种服务的公共消息

/var/log/dmesg 记录系统启动过程的各种消息
/var/log/cron 记录与cron计划任务相关的消息
/var/log/maillog 记录邮件收发相关的消息
/var/log/secure 记录与访问限制相关的安全消息
日志分析

tailf  : 实时跟踪日志信息

– awk、sed等格式化过滤工具

users、who、w 命令
– 查看已登录的用户信息,详细度不同
users、who、w 命令
– 查看已登录的用户信息,详细度不同

last、lastb 命令

– 查看最近登录成功/失败的用户信息
[root@svr7 /]# users
[root@svr7 /]# who
[root@svr7 /]# w
[root@svr7 /]# last -2 #最近登陆成功2条记录
[root@svr7 /]# lastb -2 #最近登陆失败2条记录
Linux内核定义的事件紧急程度
– 分为 0~7 共8种优先级别
– 其数值越小,表示对应事件越紧急/重要

0 EMERG (紧急) 会导致主机系统不可用的情况

1 ALERT (警告) 必须马上采取措施解决的问题
2 CRIT (严重) 比较严重的情况
3 ERR (错误) 运行出现错误
4 WARNING (提醒) 可能会影响系统功能的事件
5 NOTICE (注意) 不会影响系统但值得注意
6 INFO (信息) 一般信息
7 DEBUG (调试) 程序或系统调试信息等

使用journalctl工具 (日报管理)

提取由 systemd-journal 服务搜集的日志
– 主要包括内核/系统日志、服务日志

常见用法

– journalctl | grep 关键词
– journalctl -u 服务名 [-p 优先级]
– journalctl -n 消息条数
– journalctl --since="yyyy-mm-dd HH:MM:SS" --
until="yyyy-mm-dd HH:MM:SS" (从什么时间到什么时间的日志,排错使用)

Services04

DHCP概述及原理 (批量装机时我们才会搭 一般不搭)

Dynamic Host Configuration Protocol
– 动态主机配置协议,由 IETF(Internet 网络工程师任
务小组)组织制定,用来简化主机地址分配管理

主要分配以下入网参数

– IP地址/子网掩码/广播地址
– 默认网关地址、DNS服务器地址

DHCP地址分配的四次会话,通过广播的方式,先到先得

一个网络中不能有多台DHCP(可能会因为相互干扰导致ip混乱,今天我先得到A服务分的ip明天先得到B服务的ip)

1.dhcp2.vim  /etc/dhcp/dhcpd.conf末行模式  :r /usr/share/doc/dhcp*/dhcpd.conf.examplesubnet  192.168.4.0  netmask 255.255.255.0 {    分配网段及子网range  192.168.4.100   192.168.4.200;       ip范围option domain-name-servers 192.168.4.7;     dns服务器option routers 192.168.4.254;           网关default-lease-time 600;             默认租约时间max-lease-time 7200;}                       最后没有分号3.systemctl restart dhcpd

什么是PXE网络

PXE,Pre-boot eXecution Environment

– 预启动执行环境,在操作系统之前运行
– 可用于远程安装

工作模式

– PXE client 集成在网卡的启动芯片中
– 当计算机引导时,从网卡芯片中把PXE client调入内存
执行,获取PXE server配置、显示菜单,根据用户选
择将远程引导程序下载到本机运行

网络装机服务端需要哪些服务组件?

– DHCP服务,分配IP地址、定位引导程序
– TFTP服务,提供引导程序下载
– HTTP服务,提供yum安装源
网络装机服务器虚拟机A
一、dhcp配置,指定next-server下一个服务器
dhcp

vim /etc/dhcp/dhcpd.conf     next-server 192.168.4.7;    filename   "pxelinux.0";      #指定网卡引导文件名    systemctl restart dhcpd

二、搭建tftp服务,传输引导文件

tftp:简单的文件传输协议 端口:69
默认共享路径:/var/lib/tftpboot
tftp-server
systemctl restart tftp
systemctl enable tftp
yum provides */pxelinux.0
#查询仓库哪个软件生成pxelinux.0
yum -y install syslinux

rpm -ql syslinux      #查看软件包安装清单        rpm -ql syslinux | grep pxelinux.0     cp /usr/share/syslinux/pxelinux.0  /var/lib/tftpboot/    mkdir  /var/lib/tftpboot/pxelinux.cfg       部署菜单文件    mount  /dev/cdrom   /mnt/           挂载光盘寻找硬件模板                                  cp /mnt/isolinux/isolinux.cfg  /var/lib/tftpboot/pxelinux.cfg/default 拷贝菜单文件模板           cp /mnt/isolinux/vesamenu.c32 /mnt/isolinux/vmlinuz /mnt/isolinux/initrd.img                /mnt/isolinux/splash.png  /var/lib/tftpboot/ls /var/lib/tftpboot/    initrd.img(启动驱动程序 )    vmlinuz(启动内核)      pxelinux.0(syslinux程序中复制而来)      pxelinux.cfg(目录/default相当于系统引导程序从isolinux.cdg中来)      splash.png(背景图片)      vesamenu.c32(图形模块)    vim /var/lib/tftpboot/pxelinux.cfg/default   修改菜单          default vesamenu.c32  #加载图形的模块         timeout 60            #读秒的时间         .......         menu background splash.png      #指定背景图片             menu title PXE Server NSD1803   #指定标题         .......        label linux              menu label Install RHEL7   #显示选项内容          kernel vmlinuz             #指定启动内核          append initrd=initrd.img   #指定启动驱动程序    至此已经集齐6大硬件,所有硬件引导结束)

接下来是软件!!!所以要搭WEB 来共享软件包。

总结:
dhcp----》IP、next-server、pxelinux.0
tftp----》pxelinux.0
pxelinux.0----》default
default----》vesamenu.c32 、vmlinuz、initrd.img

简单测试: 新建一台虚拟机 选择 PXE网络引导 安装

yum -y install httpd

mkdir /var/www/html/rhel7      mount /dev/cdrom /var/www/html/rhel7      systemctl restart httpd      systemctl enable httpd      firefox 192.168.4.2/rhel7   (软件环境有了)

配置自动安装的选项 (无人值守)

yum -y install system-config-kickstart.noarch (无人值守图像配置软件)                  system-config-kickstart   (检查发现软件包不可用)      vim /etc/yum.repos.d/BB.repo           (bug  源标示要改为development)

选择需要自动安装的选项(大概记住)

cp /root/ks.cfg /var/www/html/   (配置自动安装软件  所以是放在和http服务中)      vim /var/lib/tftpboot/pxelinux.cfg/default  (修改引导程序文件,让其自动安装软件包)         label linux            menu label Install RHEL7            menu  default                 #读秒之后默认的选择            kernel vmlinuz            append initrd=initrd.img ks=http://192.168.4.7/ks.cfg

tips!: 比较坑的是什么 是这个图形配置文件生成ks.cfg 容易出现问题,和选择的不一样!!!

所以,每次图形界面配完了以后检查一下这个ks.cfg这个配置文件有没有问题!!!!
参照如下配置文件!!!!

Services05

cobbler装机

优势 :自动安装服务,搭好以后只需导入镜像文件即可, 对于安装多操作系统的需求来讲更方便。

基本环境:centos系统作为服务器主机系统      selinux disabled

firewall trsuted

cobbler.zip  解压两次  发现RPM包   一并装上!yum -y install /Cobbler/cobbler/*.rpm     #装包  (同时装多个包!!!!)vim /etc/cobbler/settings           #修改主配置文件vim /etc/cobbler/dhcp.template          #修改dhcp配置文件tar -tf /Cobbler/cobbler_boot.tar.gz tar xPf /Cobbler/cobbler_boot.tar.gz        #保持绝对路径解压!!!ls /var/lib/cobbler/loaders/            #cobbler服务引导文件默认存放路径COPYING.elilo     COPYING.yaboot  grub-x86_64.efi  menu.c32    README

COPYING.syslinux

elilo-ia64.efi grub-x86.efi pxelinux.0 yaboot #配置硬件启动所需文件

systemctl restart cobblerd.service systemctl enable cobblerd.service  systemctl restart httpdsystemctl enable httpdsystemctl restart tftpsystemctl enable tftpsystemctl restart rsyncdsystemctl enable rsyncd         #启动各种服务 配置软件!!cobbler sync                    #刷新cobbler服务systemctl restart dhcpd        # 最后才能启dhcp  要刷一次才能使配置生效    firefox https://192.168.4.180/cobbler_web 测试web     #验证web

用户cobbler 密码cobbler 进入web的图形配置界面

cobbler import --path=挂载点 --name=导入系统命名(随意起)--arch=x86_64 版本架构
导入安装镜像数据

mount /dev/cdrom  /dvd                    (挂载读取第一个镜像)cobbler import --path=/dvd  --name=CentOS7

--arch=x86_64 (写入第一个镜像)

mount /iso/rhel-server-7.4-x86_64-dvd.iso /rhel7/
(换个镜像挂载)
cobbler import --path=/rhel7 --name=RedHat7 --arch=x86_64 (写入第二个镜像) 可以装机了。
cobbler list #查看有哪些系统

cobbler profile report   #查看cobbler导入信息    killall  -9 dnsmasq  #虚拟化服务会干扰DHCP服务

cobbler导入的镜像放在:/var/www/cobbler/ks_mirror

root的默认密码为cobbler

修改默认cobbler密码:
openssl passwd -1 -salt 'random-phrase-here' '111' 111是自己想要修改的密码!!!

vim /etc/cobbler/settings

default_password_crypted: "$1$mF86/UHC$WvcIcX2t6crBz2onWxyac." 替换为刚刚生产的MD5
只需要重启cobblerd 这个服务就行了。
(重启之后看一下http中的ks文件中的rootpw 这行发生了改变没有就能验证了,这 个发生了个改变就证明密码已经设置好了!!!)

tips:

cobbler服务的默认引导文件还是 /var/lib/tftpboot/pxelinux.cfg/default(和pxe一样)
ipappend 2

LABEL rhel6-x86_64

kernel /images/rhel6-x86_64/vmlinuzMENU LABEL rhel6-x86_64append initrd=/images/rhel6-x86_64/initrd.img ksdevice=bootif lang= kssendmac text              ks=http://192.168.4.100/cblr/svc/op/ks/profile/rhel6-x86_64    ks文件在这里可以看到ipappend 2

MENU end

firefox

这里的访问路径是作了很多此跳转之后的路径

默认的ks文件是在这里!!!

上面的defualt引导文件也有写ks的位置在这里,这个文件是会随着主配置文件变化的。
因为里面的rootpw都是用的 $ default_password_crypted:调用的这个变量的值!
设置网页跳转配置文件/etc/httpd/conf.d/cobbler.conf

修改密码出错:

这个ks文件的位置,目前还找不到在哪里
但是它这个ks文件中下面这行出现了问题!!!
rootpw 后面给了两个参数!!!因为中间有空格!!!

#Root password

rootpw --iscrypted $1 $random-p$WbZ3JxhRzCS/1Ne4S9g4Z.

装机时报错:the following error was found while parsing the kickstart configuration file:

the following problem occurred on line 38 of the kickstart file:

A single argument is expected for the rootpw command !!!

这个报错 看得懂英语的话就太简单了:

意思是读ks文件的时候出错了!
出了什么错:一个单独的参数被期望在rootpw命令之后!!

意思就是rootpw 后面只能给一个参数 !!

再看上面的ks文件中 rootpw 后面的参数出现了空格 所以他会认为是两个参数!!!

这么简单都能牌一上午??????

排错: 改掉或者重写一个密码到setings这个主配置文件中,

重启cobblerd服务。
firefox
验证以下rootpw这行是否更新了即可!!!

rsync同步服务

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

命令用法

– rsync [选项...] 源目录/ 目标目录
– rsync [选项...] 源目录 目标目录

– -n:测试同步过程,不做实际修改

– --delete:删除目标文件夹内多余的文档
– -a:归档模式,相当于-rlptgoD
– -v:显示详细操作信息
– -z:传输过程中启用压缩/解压

本地目录的同步

rsync -avz /dir1/  /stu01/

rsync+SSH远程同步

rsync /本地路径/源文件/ 用户名@对方的IP地址:/目标路径

rsync 用户名@对方的IP地址:/目标路径 /本地路径/路径/
虚拟机A:
#rm -rf /opt/*
#touch /opt/{1..5}.txt
#ls /opt/
#rsync --delete -avz /opt/ root@192.168.4.207:/opt/

虚拟机B:

#ls /opt/

虚拟机A:

#touch /opt/6.txt
#rsync --delete -avz /opt/ root@192.168.4.207:/opt/

虚拟机B:

#ls /opt/

实时的远程同步

一、取消用户名密码的验证

1.虚拟机A 生成公钥 私钥

ssh-keygen       #一路回车  ls  /root/.ssh/  #查看公钥  私钥

2.虚拟机A 传递公钥 到对方服务器

ssh-copy-id  root@192.168.4.207

3.虚拟机A 验证

ssh root@192.168.4.207 (无需密码)

二、源码包编译安装 inotify-tools(监控目录内容变化)

1.真机上传到虚拟机A

#scp /var/ftp/NSD1803/SERVICES/Day01/tools.tar.gz root@192.168.4.7:/

2.安装gcc make

3.解包tar
#tar -xf /tools/inotify-tools-3.13.tar.gz -C /
#cd /inotify-tools-3.13/

4.配置./configure

[root@svr7 inotify-tools-3.13]# ./configure
5.编译与安装
[root@svr7 inotify-tools-3.13]# make
[root@svr7 inotify-tools-3.13]# make install
[root@svr7 /]# inotifywait #具备命令程序
No files specified to watch!
6.程序的使用
常用命令选项
– -m,持续监控(捕获一个事件后不退出)
– -r,递归监控、包括子目录及文件
– -q,减少屏幕输出信息
– -e,指定监视的 modify、move、create、delete、attrib 等事件类别

[root@svr7 /]# inotifywait -mrq /opt/

三、书写rsync脚本

死循环脚本 while  [条件判断] do       循环的语句 done    vim  /root/rsync.sh     (用变量代替要更好些)    #!/bin/bash    while  inotifywait -rqq /opt/      do    rsync --delete -az  /opt/  root@192.168.4.207:/opt    done  &    chmod  +x  /root/rsync.sh

转载于:https://blog.51cto.com/13659481/2110243

你可能感兴趣的文章
js传参时,没有参数传入,默认值的设置
查看>>
ASP.NET温故而知新学习系列之ASP.NET多线程编程—.NET下的多线程编程Thread中委托的使用(六)...
查看>>
最新整理知识结构图
查看>>
linux安装mysql
查看>>
flask 2 进阶
查看>>
JS 循环遍历JSON数据
查看>>
sentences in movies and teleplays[1]
查看>>
【20181023T1】战争【反向并查集】
查看>>
win7网络共享原来如此简单,WiFi共享精灵开启半天都弱爆了!
查看>>
iOS9 未受信任的企业级开发者
查看>>
paper 40 :鲁棒性robust
查看>>
优化MySchool数据库(事务、视图、索引)
查看>>
使用笔记:TF辅助工具--tensorflow slim(TF-Slim)
查看>>
大话设计模式读书笔记3——单例模式
查看>>
实验三
查看>>
Vue 项目构建
查看>>
[Ruby on Rails系列]2、开发环境准备:Ruby on Rails开发环境配置
查看>>
android studio adb
查看>>
框架源码系列二:手写Spring-IOC和Spring-DI(IOC分析、IOC设计实现、DI分析、DI实现)...
查看>>
asp.net编译 懒人脚本
查看>>