- 常见服务的构建
- autofs触发挂载
- DNS服务基础
- 自定义YUM仓库
- 批量装机环境
- 图形模块(vesamenu.c32)与背景图片(splash.png)
#启动内核(vmlinuz)与驱动程序(initrd.img) - 3.构建FTP服务,提供光盘内容
- 4.实现无人值守(kickstart)安装,生成应答文件
- 源码编译安装
- rsync数据同步,inotify实时同步
- 数据库服务基础
- Linux容器基础
常见服务的构建
常见服务的端口号
构建FTP服务
文本传输协议
1.实现FTP服务功能的软件:vsftpd
2.默认共享数据的主目录:/var/ftp/
3.构建过程
#1.安装软件包
yum -y install vsftpd
#2.运行程序
/usr/sbin/vsftpd
pgrep -l vsftpd# 查看进程信息
#3.访问测试
curl ftp://192.168.4.7
Web服务基础应用
基于B/S(Browser/Server)架构的网页服务
Hyper Text Markup Language 超文本标记语言
Hyper Text Transfer Protocol 超文本传输协议
构建Web服务
提供一个页面内容的服务
提供Web服务的软件:httpd、Nginx、tomcat
httpd由软件基金会Apache生产
构建过程
#1.安装软件包
yum -y install httpd
#2.运行提供Web服务程序
> /etc/resolv.conf # 清空此文件内容
/usr/sbin/httpd # 绝对路径运行程序
pgrep -l httpd # 查看进程信息
#4.书写一个页面文件
vim /var/www/html/index.html
阳光明媚NSD2108
#5.浏览器访问测试
curl http ://192.168.4.7
阳光明媚NSD2108
独立Web主机
提供的默认配置
配置文件:/etc/httpd/conf/httpd.conf
1)Listen:监听地址:端口(80)
端口:数字编号起到标识作用,标识协议 ,自定义端口1024~65535。
http协议默认端口:80
ftp协议默认端口:21
访问流程
客户端curl http://192.168.4.7—->192.168.4.7——>服务端——> http 80——>
httpd进程监听80—->DocumentRoot /nsdweb —->/nsdweb/index.html
2)ServerName:本站点注册的DNS名称(空缺)
3)DocumentRoot:指定(网页文件根目录)存放位置(/var/www/html)
httpd——->配置文件中DocumentRoot——->去哪个路径下寻找index.html(决定软件功能)
mkdir /var/www/myweb
echo wo shi myweb > /var/www/myweb/index.html
vim /etc/httpd/conf/httpd.conf
…….此处省略一万字
DocumentRoot "/var/www/myweb"
…….此处省略一万字
systemctl restart httpd # 重启服务
curl http://192.168.4.7
网络路径与实际路径
网络路径:curl http://192.168.4.7/abc
实际服务: /nsdweb/abc/index.html
http://192.168.4.7=/nsdweb
4)DirectoryIndex:起始页/首页文件名(index.html)
httpd访问控制规则
当子目录没有规则,默认继承上一级目录规则;针对此目录有单独配置,则不继承上一级目录规则
修改配置文件/etc/httpd/conf/httpd.conf
Require all denied # 拒绝所有人访问
Require all granted # 允许所有人访问
独立Web站点的快速部署
1.装包(httpd)
yum -y install httpd
rpm -q httpd
2.配置(部署首页 index.html)
echo NSD Web Server > /var/www/html/index.html
3.重启服务(httpd)
systemctl restart httpd # 重启服务
curlhttp://192.168.4.7 # 测试访问
NSD Web Server
虚拟Web主机
由同一台服务器提供多个不同的Web站点
区分方式:
基于域名
基于端口
基于IP地址(基本不用)
一旦启用虚拟Web主机后,外部DocmentRoot/ServerName会被忽略,第1个虚拟站点视为默认站点
基于域名配置虚拟站点
配置文件路径
/etc/httpd/conf/httpd.conf # 主配置文件
/etc/httpd/conf.d/×××.conf # 调用配置文件
添加虚拟站点在调用配置文件中新建
ServerName 此站点的DNS名称
DocumentRoot 此站点的网页根目录
vim/etc/httpd/conf.d/haha.conf
<VirtualHost *:80> # 在所有IP地址监听80
ServerNamewww.qq.com # 网站的域名
DocumentRoot /var/www/qq # 网页文件路径
</VirtualHost>
.........
#采用/etc/hosts文件直接解析域名,只为本机解析
vim /etc/hosts
…….此处省略一万字
192.168.4.7 www.qq.com ........
基于端口配置虚拟站点
修改调用配置文件
vim /etc/httpd/conf.d/haha.conf
<VirtualHost *:80>
ServerName www.qq.com
DocumentRoot /var/www/qq
</VirtualHost>
Listen 8080
<VirtualHost *:8080>
ServerName www.qq.com
DocumentRoot /var/www/lol
</VirtualHost>
总结出现测试页面的原因
没有书写任何的网页文件
网页文件名字不是index.html
访问控制被拒绝
SELinux模式不是宽松模式
配置文件内容不正确
NFS服务基础
Network File System,网络文件系统
用途:为客户机提供共享使用的文件夹
协议:NFS(TCP/UDP 2049)、RPC(TCP/UDP 111)
软件包:nfs-utils
系统服务:nfs-server
1)修改exports配置文件
vim /etc/exports
#文件夹路径 客户机地址(权限)
/public *(ro) # 允许所有客户端进行只读访问
systemctl restart rpcbind# NFS所依赖的服务
systemctl restart nfs-server//先启动rpcbind,再起nfs-server
2)查看NFS共享
showmount -e 192.168.4.7# 查看服务端有那些NFS共享
Export list for 192.168.4.7:
/public *
3)实现开机自动挂载
_netdev:声明网络设备,系统在具备网络参数后,再进行挂载本设备
vim /etc/fstab
……此处省略一万字
192.168.4.7:/public /mnt/tc nfs defaults,_netdev 0 0
备注:挂载网络硬盘时使用_netdev,等network服务启动后,在挂载这个设备
NFS服务于RPC的关系
NFS实际上就是也是一种file system,当用户需要使用的时候,会将一个NFS mount在相应的directory下。
简单来说,每当用户访问该NFS时,会发出一个RPC请求当相应的NFS server上,NFS server根据RPC请求,访问storage取得相应的文件内容返回给client。当然这其中还涉及到的cache, block等问题
nfs网络文件系统,
rpc服务 远程过程调用,
要使用nfs服务前,需要先在服务器端先开启rpc服务,centos5下是portmap,centos6下是rpcbind。通过rpc服务告诉nfs进程传输文件数据时的端口信息,进行程序控制。
autofs触发挂载
由autofs服务提供的“按需访问”机制
-只要访问挂载点,触发响应,自动挂载制定设备
-闲置超过时限(默认5分钟),会自动卸载
autofs配置解析
/etc/auto.master # 主配置文件
-监控点目录 挂载配置文件的路径
# /misc /etc/auto.misc
/etc/auto.misc # 挂载配置文件
-触发点子目录 -挂载参数 :设备名
# nsd -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom
虚拟机B访问/myauto/nsd,光驱设备挂载/ myauto/nsd
yum -y install autofs # 装包
vim /etc/auto.master # 配置
/myauto /opt/xixi.txt
cp /etc/auto.misc /opt/xixi.txt
vim /opt/xixi.txt
nsd -fstype=iso9660 :/dev/cdrom
systemctl restart autofs # 重启服务
ls /myauto/nsd
触发挂载进阶autofs与NFS
#虚拟机B访问/myauto/nfs,虚拟机A的nfs共享/public挂载到/myauto/nfs
vim /etc/auto.master
/myauto /opt/xixi.txt
vim /opt/xixi.txt
nsd -fstype=iso9660 :/dev/cdrom
nfs -fstype=nfs 192.168.4.7:/public
systemctl restart autofs
ls /myauto/test
DNS服务基础
1.安装bind、bind-chroot软件包
2.1 建立主配置文件 /etc/named.conf
2.2 建立地址库文件 /var/named/…..
3. 启动named服务
DNS工作原理
互联网中的导航员
正向解析:根据注册的域名查找其对应的IP地址
反向解析:根据IP地址查找对应的注册域名,不常用
DNS服务器分类
根域名服务器、一级DNS服务器、二级DNS服务器、三级DNS服务器
域名系统: 所有的域名都必须要以点作为结尾,树型结构
DNS的分布式结构
FQDN(Full Qualified Domain Name),完全合格主机名
DNS服务分析BIND(Berkeley Internet Name Daemom)
软件包:bind bind-chroot(监控bind程序)
系统服务:named
默认端口:TCP/UDP 53
主配置文件:/etc/named.conf # 设置负责解析的域名
地址库文件:/var/named/…… # 设置此域名的站点和IP地址的对应关系
修改named.conf主配置文件
]# cp /etc/named.conf /root # 备份数据
]# vim /etc/named.conf
options {
directory "/var/named"; # 定义地址库文件存放路径
};
zone "tedu.cn" IN { # 定义负责的解析tedu.cn域名
type master; # 权威主DNS服务器
file "tedu.cn.zone"; # 地址库文件名称
}; # 可设置多个区域
建立named.localhost (模板) 地址库文件
可复制文件named.localhost 模板编写自己地址库文件
注意文件的权限 可用cp -p命令复制带权限的文件
文件命名规则一般为域名.zone
#拷贝修改地址库文件
]# cd /var/named/
]# cp -p named.localhost tedu.cn.zone # 保持权限不变
]# ls -l tedu.cn.zone
]# vim tedu.cn.zone
……此处省略一万字
tedu.cn. NS svr7 # 声明DNS服务器为svr7
svr7 A 192.168.4.7 # svr7解析结果为192.168.4.7
www A 1.1.1.1
]# systemctl restart named
]# echo nameserver 192.168.4.7 > /etc/resolv.conf
]# nslookup www.tedu.cn# 查看解析结果
特殊DNS解析
DNS的轮询(负载均衡)
# www.tedu.com分别解析不同的ip地址
[root@svr7 /]# vim /var/named/tedu.cn.zone
tedu.cn. NS svr7
svr7 A 192.168.4.7
www A 192.168.4.20
www A 192.168.4.21
www A 192.168.4.22
[root@svr7 /]# systemctl restart named
#访问www.tedu.com会分别分别访问不同的ip地址
泛域名解析
为域内未定义的主机地址解析
[root@svr7 /]vim /var/named/tedu.cn.zone
tedu.cn. NS svr7
svr7 A 192.168.4.7
www A 192.168.4.20
* A 6.6.6.6 # 输入错误的情况下解析为6.6.6.6
有规律的泛域名解析
内置函数:$GENERATE (制造连续的数字)
#]vim /var/named/tedu.cn.zone
……此处省略一万字
tedu.cn. NS svr7
svr7 A 192.168.4.7
$GENERATE 1-50 stu$ A 192.168.10.$
#stu*分别解析为192.168.10.*
CNAME解析(DNS的解析记录的别名)
vim /var/named/tedu.cn.zone
vip CNAME ftp # ip解析结果与ftp结果一致
DNS服务器资源解析记录的类型
NS:DSN的声明记录
A:正向解析记录
CNAME:解析记录的别名
DNS主从架构
主DNS服务器
1. 授权从DNS服务器
]#vim /etc/named.conf
options {
directory "/var/named";
allow-transfer { 192.168.4.207; }; # 允许谁进行传输数据
};
zone "tedu.cn" IN {
type master;
file "tedu.cn.zone";
};
2.声明从DNS服务器
]#vim /var/named/lol.com.zone
……此处省略一万字
lol.com. NS svr7
lol.com. NS pc207 # 声明从DNS服务器
svr7 A 192.168.4.7
pc207 A 192.168.4.207
www A 4.4.4.4
从DNS服务器
修改主配置文件
]# vim /etc/named.conf
..........
zone "lol.com" IN {
type slave; # 类型为从服务器
masters { 192.168.4.7; }; # 指定主DNS服务器
file "/var/named/slaves/lol.com.slave";# 确保named用户有读写执行权限
masterfile-format text; # 地址库文件明文存储
};
测试主从同步
svr7 /]# vim /var/named/lol.com.zone
…….此处省略一万字
2021091601 ; serial # 数据的版本号,由10个数字组成
1D ; refresh # 每隔1天主从进行交流
1H ; retry # 失效之后的时间间隔每一个1小时
1W ; expire # 真正的失效时间,1周
3H ) ; minimum # 失效记录的记忆时间3小时
svr7 /]# systemctl restart named # 重启服务数据版本号不一致,从服务器会更新
pc207 /]# nslookup www.lol.com 192.168.4.207 # 测试从服务器是否同步
DNS查询方式
递归查询
客户端发送请求给首选DNS服务器,首选DNS服务器与其他的DNS服务器交互,最终将解析结果带回来过程
迭代查询
客户端发送请求给首选DNS服务器,首选DNS服务器告知下一个DNS服务器地址
缓存DNS服务器
虚拟机A:为真正的DNS服务器 虚拟机B:缓存DNS服务器
pc207 /]# vim /etc/named.conf
options {
directory "/var/named";
forwarders { 192.168.4.7; }; # 转发给192.168.4.7
};
pc207 /]# systemctl restart named
pc207 /]# nslookup www.360.com 192.168.4.207
Server: 192.168.4.207
Address: 192.168.4.207#53
Non-authoritative answer:
Name: www.360.com
Address: 1.2.3.4
Split分离解析
当收到客户机的DNS查询请求的时候
能够区分客户机的来源地址
为不同类别的客户机提供不同的解析结果(IP地址)
为客户端提供最近的服务器
NTP时间同步
Network Time Protocol(网络时间协议),用来同步网络中各个计算机的时间的协议
210.72.145.39(国家授时中心服务器IP地址),Stratum分层设计的总层数限制在15以内(包括15)
NTP服务器构建
虚拟机A:时间服务器
#1.安装软件包chrony
yum -y install chrony
#2.修改配置文件
vim /etc/chrony.conf
# server0.centos.pool.ntp.org iburst # 与谁同步时间
# server1.centos.pool.ntp.org iburst # iburst表示快速同步
allow all #26行 开头的# 去掉,修改为允许所有客户端
local stratum 10 #29行 设置本机为第10层的时间服务器
#3.重启时间服务
systemctl restart chronyd
虚拟机B:客户端
#1.安装软件包
#2.修改配置文件
vim /etc/chrony.conf
server 192.168.4.7 iburst # 与192.168.4.7同步时间
#3.重启时间服务
#4.测试
date -s "2008-1-1" # 修改时间
systemctl restart chronyd
date # 查看是否时间同步
chronyc sources -v# 列出时间服务器信息
电子邮件通信
为用户提供电子邮箱存储空间(用户名@邮件域名)
处理用户发出的邮件 —— 传递给收件服务器
处理用户收到的邮件 —— 投递到邮箱
1)DNS服务器,增加邮件解析功能
#修改配置文件(地址库文件)
]# vim /var/named/qq.com.zone
此处省略一万字……..
qq.com. NS svr7
qq.com. MX 30 mail # 数字30为优先级,越小越优先
svr7 A 192.168.4.7
mail A 192.168.4.7
www A 1.2.3.4
]# systemctl restart named
]# host -t MXqq.com # 测试qq.com区域邮件交换记录
qq.com mail is handled by 30 mail.qq.com.
]# hostmail.qq.com # 测试域名完整解析
mail.qq.com has address 192.168.4.7
2)邮件服务器
#1.安装软件包
]# rpm -q postfix
#2.修改配置文件
]# vim /etc/postfix/main.cf
99行 myorigin =qq.com # 默认补全的域名后缀
116行 inet_interfaces = all # 本机所有网络接口均提供邮件收发功能
164行 mydestination =qq.com # 判断是否为本域邮件的依据
#3.重启邮件服务
]# systemctl restart postfix
4.测试
mail 发信操作: mail -s '邮件标题' -r 发件人 收件人
]# mail -s 'test01' -r yg xln
hahaxixiehehelele # 正文内容
. # 一行只有一个点表示提交
]# echo 123456 | mail -s 'test02' -r yg xln # 可用echo管道的方式书写邮件正文
mail 收信操作: mail [-u 用户名]
]# mail -u xln
>N 1 yg@qq.com Fri Sep 18 17:24 18/510
& 1 # 输入邮件编号
& quit # 退出
自定义YUM仓库
Yum软件仓库组成: 1.众多的软件包 2.仓库数据文件
关闭ssh的DNS查询:(可提高传递速度)
]# vim /etc/ssh/sshd_config
UseDNS no # 关闭ssh的DNS查询
]# systemctl restart sshd
新建自定义YUM仓库
1.将软件包放至一个目录下
2.生成仓库数据文件
~]# createrepo /tools/other/ # 生成仓库数据文件
3.修改YUM仓库配置文件
]# vim /etc/yum.repos.d/mydvd.repo
........
[rpm] # 唯一标识
name=myrpm
baseurl=file:///tools/other # 指定Yum仓库的路径
enabled=1
gpgcheck=0
[root@svr7 ~]# yum repolist
yum makecache
#生成索引缓存索引提供搜索安装速度,索引缓存存储位置; /var/cache/yum/
yum makecache fast
#将软件包信息提前在本地索引缓存,用来提高搜索安装软件的速度,建议执行这个命令可以提升yum安装的速度。
yum clean all
#yum会把下载的软件包和header存储在cache中而不自动删除。如果觉得占用磁盘空间,可以使用yum clean指令清除索引缓存和下载包的缓存。
更新仓库
#1. 删除仓库数据文件,重新生成仓库数据文件
rm -rf /tools/other/repodata/
createrepo /tools/other/# 重新生成仓库数据文件
#2. 清空Yum的缓存
yum clean all# 清空Yum的缓存
yum repolist
批量装机环境
部署DHCP服务器
(DynamicHostCongfigurationProtocol)
1.装包(dhcp软件包)2.配置3.重启服务(dhcpd)
DHCP介绍
动态主机配置协议,由 IETF(Internet 网络工程师任务小组)组织制定,用来简化主机地址分配管理
• 主要分配以下入网参数:IP地址/子网掩码/广播地址;默认网关地址、DNS服务器地址
• DHCP地址分配的四次会话(以广播形式进行,先到先得)
DISCOVERY —> OFFER —> REQUEST —>ACK
• 一个网络中只能有一台DHCP服务器
修改配置文件(dhcpd.conf)
]# vim /etc/dhcp/dhcpd.conf
# 末行模式下 :r /usr/share/doc/dhcp*/dhcpd.conf.example
# 读取模板文件dhcpd.conf.example内容至dhcpd.conf
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;
}
网络装机服务器(PXE网络,Pre-boot eXecution Environment)
网络装机的介绍
• 规模化:同时装配多台主机
• 自动化:装系统、配置各种服务
• 远程实现:不需要光盘、U盘等物理安装介质
• PXE,Pre-boot eXecution Environment
• 预启动执行环境,在操作系统之前运行
• 可用于远程安装
网络装机必须内存大于2G
工作模式
• PXE client 集成在网卡的启动芯片中
• 当计算机引导时,从网卡芯片中把PXE client调入内存执行,获取PXE server配置、显示菜单,根据用户选择将远程引导程序下载到本机运行
计算机的开机启动项
开机顺序:1.加载内核 2.读/etc/fstab,挂载硬盘(打开硬盘) 3.启动服务(network,httpd,vdo,vsftpd,tomcat) 4.计算机登录
开启计算机时,寻找操作系统顺序:1. 本地硬盘(/etc/fstab)2. 本地光驱设备3. U盘4. 网卡进行广播(网络装机)
网络主机的步骤(注意设置开机启动项)
1.dhcp服务—-》IP地址、next-server、filename “pxelinux.0”
2.tftp服务—-》 “pxelinux.0”
3.pxelinux.0—-》读取菜单文件/var/lib/tftpboot/pxelinux.cfg/default
4.default-—》vesamenu.c32、读秒时间、vmlinuz、initrd.img、ftp://192.168.4.7/ks.cfg
5.ks.cfg应答文件—-》语言、键盘类型、分区、安装方式url —url=”ftp://192.168.4.7/centos”
1.配置DHCP服务器
]# vim /etc/dhcp/dhcpd.conf
此处省略一万字……
next-server 192.168.4.7; # 下一个服务器的IP地址
filename "pxelinux.0"; # 指明网卡引导文件名称
}
2.配置tftp服务,传输众多的引导文件
tftp:简单的文件传输协议 默认端口:69
tftp默认共享的主目录:/var/lib/tftpboot
1)安装软件
软件包(tftp-server)服务(tftp)
2)部署pxelinux.0文件
]# yum provides */pxelinux.0 # 查询哪个包产生该文件
]# yum -y install syslinux # 安装syslinux软件包
]# rpm -ql syslinux | grep pxelinux.0 # 查询软件包安装清单
]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
]# ls /var/lib/tftpboot/
pxelinux.0
3)部署菜单文件pxelinux.cfg/default(将光盘中的菜单文件进行复制)
]# ls /mydvd/isolinux/ # 查看光盘内容
]# mkdir /var/lib/tftpboot/pxelinux.cfg # 创建引导文件指向的文件夹
]# cp /mydvd/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
# 使用光盘菜单文件为模板,创建装机菜单文件
4)拷贝菜单文件所需其他文件
图形模块(vesamenu.c32)与背景图片(splash.png)
#启动内核(vmlinuz)与驱动程序(initrd.img)
]# cp /mydvd/isolinux/vesamenu.c32 /mydvd/isolinux/splash.png /var/lib/tftpboot/
/]# cp /mydvd/isolinux/vmlinuz /mydvd/isolinux/initrd.img /var/lib/tftpboot/
5)修改菜单文件default
]# vim /var/lib/tftpboot/pxelinux.cfg/default # 末行模式:set nu开行号功能
1 default vesamenu.c32 # 默认加载运行图形模块
2 timeout 600 # 读秒时间60秒,1/10秒
此处省略一万字……..
10 menu background splash.png # 背景图片
11 menu title NSD PXE Server # 菜单界面的标题
此处省略一万字……..
61 label linux
62 menu label ^Install CentOS 7 # 界面显示内容
63 menu default # 读秒结束后默认的选项
64 kernel vmlinuz # 加载内核
65 append initrd=initrd.img # 加载驱动程序
#以下全部删除
初步测试(检查)
初步检查能否进入到安装目录界面
1.dhcpd的主配置文件
]# vim /etc/dhcp/dhcpd.conf
……………….
filename “pxelinux.0”;
}
2.tftp服务提供引导数据
]# ls /var/lib/tftpboot/
initrd.img pxelinux.cfg vesamenu.c32
pxelinux.0 splash.png vmlinuz
3.菜单文件名称
]# ls /var/lib/tftpboot/pxelinux.cfg/default
4.启动必须得服务
]# systemctl restart dhcpd
]# systemctl restart tftp
5.SELinux与防火墙
[root@svr7 ~]# setenforce 0
[root@svr7 ~]# getenforce
Permissive
[root@svr7 ~]# yum remove firewalld
6.客户机测试
3 PXE装机初步测试
3.构建FTP服务,提供光盘内容
FTP:文件传输协议 默认端口:21
默认共享数据的主目录:/var/ftp
软件包(vsftpd)软件(vsftpd)
安包,建立挂载点,测试
]# mkdir /var/ftp/centos
]# mount /dev/cdrom /var/ftp/centos
mount: /dev/sr0 写保护,将以只读方式挂载
]# ls /var/ftp/centos
]# curl ftp://192.168.4.7/centos/
4.实现无人值守(kickstart)安装,生成应答文件
安装system-config-kickstart图形的工具
system-config-kickstart程序需要Yum仓库的支持才能显示软件包的选择,必须要求Yum仓库的标识为[development]
]# vim /etc/yum.repos.d/mydvd.repo
[development]
name=centos7
baseurl=file:///mydvd
enabled=1
gpgcheck=0
运行system-config-kickstart,生成ks.cfg文件
3 kickstart生成应答文件
利用FTP服务共享应答文件(应答文件拷贝纸至/var/ftp/)
]# cp /root/ks.cfg /var/ftp/
]# ls /var/ftp/
centos ks.cfg pub
]# curl ftp://192.168.4.7/ks.cfg
修改菜单文件,指定应答文件获取方式
]# vim /var/lib/tftpboot/pxelinux.cfg/default
……..此处省略一万字
append initrd=initrd.img ks=ftp://192.168.4.7/ks.cfg
源码编译安装
RPM软件包:rpm -ivh 或者 yum -y install
源码包——开发工具gcc与make——》可以执行的程序——-》运行安装
源码编译安装的优点
–获得软件的最新版,及时修复bug
–软件功能可按需选择/定制,有更多软件可供选择
–源码包适用各种平台
源码编译安装的步骤
步骤1:安装开发工具gcc与make,释放源代码至指定目录
步骤2:tar解包,释放源代码至指定目录
步骤3:./configure 配置,指定安装目录/功能模块等选项
步骤4:make 编译,生成可执行的二进制程序文件
步骤5:make install 安装,将编译好的文件复制到安装目录
1.安装开发工具
[root@svr7 ~]# yum -y install gcc make
[root@svr7 ~]# rpm -q gcc
gcc-4.8.5-28.el7.x86_64
[root@svr7 ~]# rpm -q make
make-3.82-23.el7.x86_64
2.进行解压缩
]# tar -xf /tools/inotify-tools-3.13.tar.gz -C /usr/local/
[root@svr7 ~]# ls /usr/local/
[root@svr7 ~]# cd /usr/local/inotify-tools-3.13/
[root@svr7 inotify-tools-3.13]# ls
3.运行configure脚本(软件目录下操作)
作用1:检测当前系统是否安装gcc
作用2:指定安装位置与功能
]# cd /usr/local/inotify-tools-3.13/
]# ./configure --help
]# ./configure --prefix=/opt/myrpm # 指定安装位置,此步骤不产生相应的目录
4.进行make编译,变成可以执行的程序(放在内存中)
[root@svr7 ~]# cd /usr/local/inotify-tools-3.13/
[root@svr7 inotify-tools-3.13]# make
[root@svr7 ~]# cd /usr/local/inotify-tools-3.13/
5.进行make install安装
[root@svr7 inotify-tools-3.13]# make install
[root@svr7 inotify-tools-3.13]# ls /opt/
[root@svr7 inotify-tools-3.13]# ls /opt/myrpm/
[root@svr7 inotify-tools-3.13]# ls /opt/myrpm/bin/
inotifywait inotifywatch
常见的报错信息:gcc开发工具没有安装
checking for gcc... no
checking for cc... no
checking for cl.exe... no
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details.
nginx网站服务:是搭建网站的服务
编写源码安装nginx脚本:
tar -xf lnmp_soft.tar.gz //在家目录释放软件包,这个软件包是从真机获取的
cp lnmp_soft/nginx-1.17.6.tar.gz /opt //拷贝nginx到opt下
cd /opt //回opt写下列脚本
#!/bin/bash
yum -y install gcc make pcre-devel openssl-devel //安装依赖软件
tar -xf nginx-1.17.6.tar.gz //释放nginx的tar包
cd nginx-1.17.6 //进入目录
./configure //配置
make //编译
make install //安装
脚本写完后,检查yum必须可用!
运行完脚本后,查看 ls /usr/local/nginx 目录可以看到4个目录则成功
conf html logs sbin
systemctl stop httpd //关闭httpd避免端口冲突
/usr/local/nginx/sbin/nginx //开启nginx服务
systemctl stop firewalld //关闭防火墙
#使用浏览器访问虚拟机的网站页面http://192.168.4.7/
/usr/local/nginx/sbin/nginx -s stop //关闭nginx
rsync数据同步,inotify实时同步
rsync数据同步
命令用法:rsync [选项…] 源目录 目标目录
rsync操作选项
-n:测试同步过程,不做实际修改
—delete:删除目标文件夹内多余的文档
-a:归档模式,相当于-rlptgoD
-v:显示详细操作信息
-z:传输过程中启用压缩/解压
本地同步
[root@svr7 ~]# mkdir /mydir /todir
[root@svr7 ~]# cp /etc/passwd /mydir
[root@svr7 ~]# touch /mydir/1.txt
[root@svr7 ~]# ls /mydir
[root@svr7 ~]# rsync -av /mydir /todir # 同步目录本身
[root@svr7 ~]# ls /todir
[root@svr7 ~]# rsync -av /mydir/ /todir # 同步目录内容
[root@svr7 ~]# ls /todir
远程同步
与远程的 SSH目录保持同步
下行:rsync […] user@host:远程目录 本地目录
上行:rsync […] 本地目录 user@host:远程目录]# rsync -av --delete /mydir/ root@192.168.4.207:/opt
inotify实时同步
命令用法:inotifywait [选项] 目标文件夹
• 常用命令选项
-m,持续监控(捕获一个事件后不退出)
-r,递归监控、包括子目录及文件
-q,减少屏幕输出信息 (-qq取消屏幕输出信息)
-e,指定监视的 modify、move、create、delete、attrib 等事件类别
实时数据同步, 实现ssh无密码验证(公钥与私钥)
虚拟机A生成公钥与私钥,将公钥传递给虚拟机B
[root@svr7 ~]# ssh-keygen # 一路回车
]# ssh-copy-id root@192.168.4.207
]# rsync -av --delete /mydir/ root@192.168.4.207:/opt
书写shell脚本,实现实时同步数据(了解)
脚本:可以运行一个文件,实现某种功能
中文:新建用户zhangsan shell: useradd zhangsan
[root@svr7 /]# vim /etc/rsync.sh
while /opt/myrpm/bin/inotifywait -rqq /mydir/
do
rsync -a --delete /mydir/ root@192.168.4.207:/opt
done
[root@svr7 /]# chmod a+x /etc/rsync.sh # 赋予执行权限
[root@svr7 /]# /etc/rsync.sh & # 运行脚本程序,放入后台运行
[root@svr7 /]# jobs -l
[1]+ 17707 运行中 /etc/rsync.sh &
[root@svr7 /]# kill 17707 # 停止脚本
数据库服务基础
数据库:存放数据的仓库,在数据库系统中,有很多的数据库,在每一个库中有很多的表格
• 常见的关系型 数据库管理系统
微软的 SQL Server
IBM的 DB2
甲骨文的 Oracle、MySQL
社区开源版 MariaDB
部署MariaDB 数据库系统
]# yum -y install mariadb-server
[root@svr7 /]# systemctl restart mariadb
MariaDB基本使用
- Linux系统的管理指令不能使用
2. 所有的数据库系统指令都必须以 ; 结尾
3. 数据库系统的指令大部分不支持tab补全基础指令
[root@svr7 /]# mysql # 进入数据库系统 > create database nsd01; # 创建nsd01数据库 > use test; # 切换到test数据库 > show databases; # 查看所有数据库 > show tables; # 查看当前库中所有表格 > drop database nsd01; # 删除数据库nsd01 > exit; # 退出数据库系统
为数据库系统管理员设置密码
数据库系统管理员:对于数据库系统有最高权限,名字为root,能够登陆数据系统的用户信息有mysql库中user表进行储存
Linux系统管理员: 对于Linux系统有最高权限,名字为root,能够登陆Linux系统的用户信息/etc/passwd进行储存mysqladmin [-u用户名] [-p[旧密码]] password '新密码' mysql -u root -p456 #非交互式进行登录
表格操作:– 增(insert) 删(delete) 改(update) 查(select)
查(select) 格式: select 表字段,表字段,…… from 库名.表名;
[root@svr7 /]# mysql -u root -p123 > use nsd2104; > select * from base; # 查看base所有表字段内容 > select * from location; # 查看location所有表字段内容 > use test; # 进入test库 > select * from nsd2104.base; # 查询nsd2104库中的base表 > use nsd2104; > select id,name from base; > select * from base where password='456'; > select * from base where id='4'; > select * from base where id='4' and password='123'; > select * from base where id='4' or password='123';
增(insert)格式:insert 表名 values (‘值’,‘值’,‘值’);
MariaDB [nsd2104]> insert base values('10','dc','789'); MariaDB [nsd2104]> insert base values('11','tcc','369'); MariaDB [nsd2104]> select * from base ;
改(update)格式:update 表名 set 表字段=‘新值’ where 表字段=’值’;
> select * from base ; > update base set password='8888' where id='1'; > select * from base ; > update base set password='9999' where id='2'; > select * from base ;
删(delete)格式:delete from 表名 where 表字段=’值’;
> use nsd2104; > delete from base where id='4' ; > select * from base ;
Linux容器基础
容器介绍
- Linux中的容器是装应用的
2. 容器就是将软件打包成标准化单元,用于开发、交付和部署
3. 容器技术已经成为应用程序封装和交付的核心技术容器优缺点
优点:– 相比于传统的虚拟化技术,容器更加简洁高效
– 传统虚拟机需要给每个VM安装操作系统
– 容器使用的共享公共库和程序
缺点:– 容器的隔离性没有虚拟化强
–共用Linux内核,安全性有先天缺陷仓库、镜像、容器
镜像是启动容器的核心,镜像由镜像仓库提供
在podman中容器是基于镜像启动的模块化(软件包组)安装:类似于安装一组软件包
[root@rhel8 ~]# yum module list # 列出都有哪些模块 [root@rhel8 ~]# yum -y module install container-tools
podman和容器的关系
– podman是完整的一套容器管理系统
– podman提供了一组命令,让用户更加方便直接地使用容器技术,而不需要过多关心底层内核技术镜像
镜像是启动容器的核心
在podman中容器是基于镜像启动的
镜像采用分层设计
使用COW(copy on write)写时拷贝技术镜像的名称标识
– 每一个镜像都对应唯一的镜像 id;镜像名称+ 标签 = 唯一
– 每一个镜像都有标签,如果没写就是默认标签 latest
– 我们在调用镜像的时候,如果没有指定标签也是 latest镜像管理命令
查找镜像(需要能访问互联网)
podman search httpd
下载镜像(需要能访问互联网)
podman pull localhost/myos:latest
导入镜像
podman load -i /root/httpd.tar.gz
查看镜像
podman images
删除镜像
podman rmi 镜像名称:镜像标签使用容器
podman run -选项 镜像名称:镜像标签 启动命令
• 查看 run 的选项 run = 创建 + 启动 + 进入
podman help run
man podman-run
podman run 命令的选项
– 选项 -i,交互式
– 选项 -t,终端
– 选项 -d,后台运行
– 选项 —name 容器名字
启动容器,并进入容器podman run -it myos:latest /bin/bash
容器管理命令
启动容器
– podman run –选项 镜像名称:镜像标签 启动命令]# podman run --name yyds -it localhost/myos:httpd /bin/bash
查看容器
– podman ps [ -a 所有容器id ] [ -q 只显示容器 id ]]#podman ps -a# 查看所有容器
删除容器
– podman rm 容器id]# podman rm -f abc01 # 强制删除abc01容器
容器管理命令启动、停止、重启
– podman start|stop|restart 容器id进入容器
– podman exec -it 容器id 启动命令]# podman exec -it abc01 /bin/bash # 进入abc01容器
容器初步练习
]# touch /etc/resolv.conf #容器启动时需要有dns文件存在(centos系统bug) ]# podman run -it localhost/myos:httpd /bin/bash [root@2b0b7c62ab42 /]# cat /etc/redhat-release [root@2b0b7c62ab42 /]# useradd dc [root@2b0b7c62ab42 /]# id dc [root@2b0b7c62ab42 /]# exit [root@rhel8 ~]# podman ps -a # 查看当前系统容器 [root@rhel8 ~]# podman start 2b # 利用容器id开启容器 [root@rhel8 ~]# podman exec -it 2b /bin/bash # 进入容器 [root@2b0b7c62ab42 /]# id dc [root@2b0b7c62ab42 /]# exit [root@rhel8 ~]# podman ps -a [root@rhel8 ~]# podman stop 2b # 利用容器id停止容器 [root@rhel8 ~]# podman ps -a [root@rhel8 ~]# podman rm 2b # 利用容器id删除容器 [root@rhel8 ~]# podman ps -a
容器放入后台练习
]# podman run --name abc01 -d localhost/myos:httpd ]# podman ps -a # 查看所有容器 ]# podman exec -it abc01 /bin/bash # 进入abc01容器 [root@962aa837e17b /]# cd / [root@962aa837e17b /]# useradd tc [root@962aa837e17b /]# id tc uid=1000(tc) gid=1000(tc) groups=1000(tc) [root@962aa837e17b /]# exit [root@rhel8 ~]# podman ps -a # 查看所有容器 [root@rhel8 ~]# podman rm -f abc01 # 强制删除abc01容器 [root@rhel8 ~]# podman ps -a
对外发布容器服务(端口绑定)
• 容器可以与宿主机的端口进行绑定
• 从而把宿主机变成对应的服务,不用关心容器的IP地址
• 我们使用 -p 参数把容器端口和宿主机端口绑定
• 同一宿主机端口只能绑定一个容器服务
• -p [可选IP]:宿主机端口:容器端口
• 例如:把宿主机变成 apache
podman run -itd -p 80:80 myos:httpdsu
• 例如:把宿主机变成 nginx
podman run -itd -p 80:80 myos:nginx容器放入后台,端口绑定练习
]# podman run --name nsdweb -p 80:80 -d localhost/myos:httpd [root@rhel8 ~]# podman ps -a [root@rhel8 ~]# podman exec -it nsdweb /bin/bash [root@5b69bf6956b0 html]# echo wo shi nsdweb > /var/www/html/index.html [root@5b69bf6956b0 html]# /usr/sbin/httpd # 手动启动 [root@5b69bf6956b0 html]# exit exit [root@rhel8 ~]# curl http://192.168.4.200 wo shi nsdweb [root@rhel8 ~]# podman rm -f nsdweb # 强制删除容器
容器共享卷
• podman容器不适合保存任何数据
• podman可以映射宿主机文件或目录到容器中
– 目标对象不存在就自动创建
– 目标对象存在就直接覆盖掉
– 多个容器可以映射同一个目标对象来达到数据共享的目的
• 启动容器时,使用 -v 映射参数
podman run -itd -v 宿主机对象:容器内对象 镜像名称:标签容器终极练习
]# podman rm -f nsdweb # 强制删除容器 ]# podman run --name rqweb -p 80:80 -v /opt:/var/www/html -dlocalhost/myos:httpd [root@rhel8 ~]# echo wo shi niuniubenben > /opt/index.html [root@rhel8 ~]# curl 192.168.4.200 wo shi niuniubenben [root@rhel8 ~]#
管理系统服务
• systemd一个更高效的系统&服务管理器
– 开机服务并行启动,各系统服务间的精确依赖
– 服务目录:/usr/lib/systemd/system/
– 主要管理工具:systemctl
• 管理员服务文件默认路径
– /usr/lib/systemd/system/
• 生成服务启动配置文件
—files:生成文件类型
podman generate systemd —name 容器名 —files
• 重新加载服务启动配置文件
systemctl daemon-reload容器之光练习(必须是相对路径,当前路径必须是)
]# cd /usr/lib/systemd/system ]# podman ps -a ]# podman generate systemd --name rqweb --files ]# vim container-rqweb.service ]# systemctl daemon-reload # 重新加载服务配置文件 ]# podman stop rqweb # 手动停止 ]# podman ps -a ]# systemctl start container-rqweb # 利用systemd方式管理 ]# podman ps -a ]# systemctl enable container-rqweb # 设置开机自启