搭建环境
1.创建两台虚拟机
2.将两台虚拟机,修改名字,一个取名A 一个取名B
设置虚拟机A
为eth0IP地址:192.168.4.7/24
永久的主机名:svr7.tedu.cn
设置虚拟机B
为eth0IP地址:192.168.4.207/24
永久的主机名:pc207.tedu.cn
3.真机远程管理两台虚拟机
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=http://192.168.4.254/rhel7
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
常见报错:没有安装gcc
checking for gcc... no
checking for cc... no
checking 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.cn
Full 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.2
4.重起服务
客户端:虚拟机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.30
ftp A 4.4.4.4
特殊的解析记录
一、DNS的轮询 (简单的负载均衡)
虚拟机A:
vim /var/named/tedu.cn.zone
tedu.cn. NS svr7
svr7 A 192.168.4.7
www A 192.168.4.10
www A 192.168.4.20
www A 192.168.4.30
ftp A 2.2.2.2
systemctl restart named
虚拟机B:验证
ping -c 1 www.tedu.cn
ping -c 1 www.tedu.cn
ping -c 1 www.tedu.cn
二、泛域名解析
虚拟机A:
vim /var/named/tedu.cn.zone
* A 10.20.30.40
tedu.cn. A 50.60.70.80
systemctl restart named
虚拟机B:
nslookup haha.tedu.cn
nslookup xixi.tedu.cn
nslookup 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.dhcp
2.vim /etc/dhcp/dhcpd.conf
末行模式 :r /usr/share/doc/dhcp*/dhcpd.conf.example
subnet 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 httpd
systemctl enable httpd
systemctl restart tftp
systemctl enable tftp
systemctl restart rsyncd
systemctl 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/vmlinuz
MENU LABEL rhel6-x86_64
append 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
http://192.168.4.100/cblr/svc/op/ks/profile/centos7-x86_64
这里的访问路径是作了很多此跳转之后的路径
默认的ks文件是在这里!!!
上面的defualt引导文件也有写ks的位置在这里,这个文件是会随着主配置文件变化的。
因为里面的rootpw都是用的 $ default_password_crypted:调用的这个变量的值!
设置网页跳转配置文件/etc/httpd/conf.d/cobbler.conf
修改密码出错:
http://192.168.4.100/cblr/svc/op/ks/profile/centos7-x86_64
这个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 http://192.168.4.100/cblr/svc/op/ks/profile/centos7-x86_64
验证以下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
原文地址:http://blog.51cto.com/13659481/2110243