RHCE
HTTP
搭建服务器
服务端:
- 确定版本
[root@localhost ~]# cat /etc/redhat-release
Red Hat Enterprise Linux release 8.2 (Ootpa)
- 装包
- yum
# 以httpd为例 yum install httpd -y
- rpm
yum与rpm装包的区别rpm -ql httpd
- yum仓库用来存放所有的现有的.rpm包,当使用yum安装一个rpm包时,会自动在仓库中查找依赖软件并安装。
- rpm需要手工解决软件包的依赖关系,很多时候安装一个软件需要安装1个或者多个其他软件,手动解决时,比较复杂。
- 启服务
- 关闭防火墙
systemctl stop firewalld
- 关闭selinux
setenforce 0
案例一 :访问apache
欢迎界面
思路:
服务端
①、配置yum源
vim /etc/yum.repos.d/base.repo
[BaseOS]
name=BaseOS
baseurl=file:///mnt/BaseOS
gpgcheck=0
[AppStream]
name=AppStream
baseurl=file:///mnt/AppStream
②、挂载
mount /dev/sr0 /mnt
③、加载yum源,安装httpd
dnf install httpd -y
④、启动服务
systemctl start httpd
⑤、关闭防火墙,关闭selinux
systemctl stop firewalld
setenforce 0
# 防火墙开机自动关闭
systemctl disable firewalld
# 永久关闭selinux
进入配置文件 vim /etc/selinux/config
把配置文件中的SELINUX=enforcig 改成 SELINUX=permissive
客户端测试:http://172.24.8.251
案例二:自定义访问界面
同上案例一,修改index.html文件
cd /var/www/html
vim index.html
helloworld!
HTTP配置文件详解
查看软件包 :rpm -ql 包名
rpm -ql httpd
#截取其中一些文件做个说明
/etc/httpd/conf #主配置目录(先加载)
/etc/httpd/conf.d #子配置目录(后加载)
/etc/httpd/conf.modules.d #子模块配置目录
主配置文件命令解释
vim /etc/httpd/conf/httpd.conf
ServerRoot /etc/httpd #服务主目录,配置当中所涉及的文件的主路经
Listen 80 #监听端口
Include conf.modules.d/*.conf #加载所有模块的文件
User apache
Group apache
ServerAdmin root@localhost #服务管理员为root用户
ServerName www.example.com:80
DocumentName "/var/www/html" #文本主目录,网站的主界面文件路径
<IfModule dir_module>
DirectoryIndex index.html #目录索引
</IfModule>
案例三:配置多网站(一台主机搭建多个网站)
通过IP、域名、端口分别搭建
IP
- 给主机创建多个IP
172.24.8.251
172.24.8.200 - 创建文件主目录,网页文件
mkdir /A
echo this is A > /A/index.html
mkdir /B
echo this is B > /B/index.html
- 编辑配置文件
#自定义文件vhosts
vim /etc/httpd/conf.d/vhosts.conf
<VirtualHost 172.24.8.251:80>
ServerName 172.24.8.251
DocumentRoot /A
</VirtualHost>
<Directory /A>
AllowOverride none
Require all granted
</Directory>
<VirtualHost 172.24.8.200:80>
ServerName 172.24.8.251
DocumentRoot /B
</VirtualHost>
<Directory /B>
AllowOverride none
Require all granted
</Directory>
- 重启服务
systemctl restart httpd
- 关闭防火墙、selinux
systemctl stop firewalld
setenforce 0
- 测试
http://172.24.8.251
http://172.24.8.200
端口
- 创建文件主目录,网页文件
mkdir /10000
echo this is 10000 > /A/index.html
- 编辑配置文件
#自定义文件vhosts
vim /etc/httpd/conf.d/vhosts.conf
<VirtualHost 172.24.8.251:10000>
ServerName 172.24.8.251
DocumentRoot /10000
</VirtualHost>
<Directory /10000>
AllowOverride none
Require all granted
</Directory>
- 重启服务
systemctl restart httpd
- 关闭防火墙、selinux
systemctl stop firewalld
setenforce 0
- 测试
http://172.24.8.251:10000
域名
- 创建文件主目录,网页文件
mkdir /A
echo this is A > /A/index.html
- 编辑配置文件
#自定义文件vhosts
vim /etc/httpd/conf.d/vhosts.conf
<VirtualHost 172.24.8.251:80>
ServerName www.openlab.com
DocumentRoot /A
</VirtualHost>
<Directory /A>
AllowOverride none
Require all granted
</Directory>
- 重启服务
systemctl restart httpd
- 关闭防火墙、selinux
systemctl stop firewalld
setenforce 0
- 测试
http://www.openlab.com
案例四:基于虚拟目录和用户控制的web网站
- 创建目录并写入文件信息
mkdir /A
mkdir -p /var/ftp/pub
echo this is A > /A/index.html
echo this is pub > /var/ftp/pub
- 定义别名目录,更改用户权限
vim /etc/httpd/conf.d/vhosts.conf
<VirtualHost 172.24.8.251:80>
ServerName www.openlab.com
DocumentRoot /A
alias /pub /var/ftp/pub
</VirtualHost>
<Directory /A> #网站主目录实现用户访问控制
AuthType Basic #基本认证类型(账号)
AuthName "please login..." #提示信息,双引号必须有,可以更换为其它提示信息
AuthUserFile /etc/httpd/users #用户认证文件的用户名和密码指定的文件所在位置
Require user xiaowang xiaoxiang #指定这两个用户可以访问该服务器
</Directory>
<Directory /var/ftp/pub> #虚拟网站子目录允许所有人访问
AllowOverride none
Require all granted
</Directory>
- 创建用户文件
cd /etc/httpd/
htpasswd -c users xiaowang
htpasswd users xiaoxiang #创建第二个用户不能加-c选项,否则会覆盖第一位用户
- 测试
案例五:通过http实现文件共享
没有index.html 文件的情况下,生成目录列表
- 创建文件主目录,网页文件
mkdir /file
cd /file
touch {1..10}
- 编辑配置文件
#自定义文件vhosts
vim /etc/httpd/conf.d/vhosts.conf
<VirtualHost 172.24.8.251:80>
ServerName 172.24.8.251
DocumentRoot /file
</VirtualHost>
<Directory /file>
AllowOverride none
Require all granted
Options +Indexes
</Directory>
- 修改欢迎界面配置文件
mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf.bak
- 重启服务
systemctl restart httpd
- 关闭防火墙、selinux
systemctl stop firewalld
setenforce 0
- 测试
http://172.24.8.251
案例六:搭建加密的web服务
- 安装认证模块
yum install mod_ssl -y
# mod_ssl是一种以openssl 的工具箱为基础专门为apache webserver 提供密码保护的软件。
- 修改配置文件
vim /etc/httpd/conf.d/vhosts.conf
<VirtualHost 192.168.126.140:443>
DocumentRoot /www/jiami
ServerName 192.168.126.140
SSLEngine on #开启ssL加密验证
SSLCertificateFile /etc/pki/tls/certs/openlab.crt #指定证书路径
SSLCertificateKeyFile /etc/pki/tls/certs/openlab.key #指定密钥文件路径
</VirtualHost>
<Directory /www/jiani>
AllowOverride none
Require all granted
</Directory>
systemctl restart httpd
- 生成证书文件
openssl req -newkey rsa:4096 -nodes -sha256 -keyout /etc/pki/tls/certs/openlab.key -x509 -days 365 -out /etc/pki/tls/certs/openlab.crt
- 重启服务,测试
案例七:搭建动态网站
框架: LAMP(Linux,Apache,Mariadb,PHP)
默认 /var/www/cgi-bin/ 动态网站资源主目录的权限是开启的,可进入配置文件 /etc/httpd/conf/httpd.conf 下查看。
目前搭建动态网站可使用两种方法,一是根据默认配置,直接把动态网站的资源文件放在 cgi-bin 目录下,二是自定义主机访问的主目录。我们接下来采用自定义搭建动态网站。
- 安装 httpd 软件包
- 自定义配置文件
vim /etc/httpd/conf.d/host.conf
<VirtualHost 192.168.117.129:80>
ServerName 192.168.117.129
DocumentRoot /200/haha
</VirtualHost>
<Directory /200>
AllowOverride None
Require all granted
</Directory>
# 重启服务
systemctl restart httpd
- 拷贝 php 文件
cd /200/haha/
# 如果该目录下有静态文件,需要删除 rm -rf index.html
# 使用已准备好的博客包里面的文件信息 unzip wordpress-4.9.1-zh_CN.zip
# 找到博客界面文件放到自定义的 /200/haha/ 目录下
- 安装数据库服务包
yum install mariadb-server -y
# 启动服务
systemctl restart mariadb-service
# 初始化数据库,获取用户名密码信息
mysql_secure_installation
#设置root密码
- 登录 mariadb 数据库
#注意:登录数据库时的 -u 和 -p 指定用户名和密码时不能有空格
mysql -uroot -predhat
# 新建数据库
create database boke;
exit
# 重启数据库服务
systemctl restart mariadb.service
- 安装php插件
yum install php* -y
- 测试访问:http://192.168.117.129/wordpress/
- 根据网页提示编辑 wp-config.php 文件
# 先找到该文件,如果没有,可通过实例文件修改复制
cp wp--config-sample.php wp-config.php
vim wp-config.php
#修改数据库名,用户名,密码
- 刷新 http://192.168.117.129/wordpress/,执行安装博客包,设置用户名密码进行登录。
案例八:个人用户主页
- 开启个人用户主页功能
vim /etc/httpd/conf.d/userdir.conf
UserDir disabled //开启
UserDir public_html
- 用户主目录权限
# 创建用户
useradd tom
passwd tom
# 创建主目录和默认主页
su - tom
mkdir public_html
echo "这是个人主页测试页面" > /home/tom/public_html/index.html
# 设置权限
chmod -Rf o+rx /home/tom/
- 添加用户
htpasswd -c /etc/httpd/user tom
- 更改配置文件
<Directory "/home/*/public_html">
#AllowOverride FileInfo AuthConfig Limit Indexes
#Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
#Require method GET POST OPTIONS
authuserfile /etc/httpd/user
authtype basic
require user tom
authname "test auth"
</Directory>
- 重启访问
systemctl restart httpd
setenforce 0
enlinks --dump http://192.129.117.129/~tom/
NFS服务
- 什么是NFS服务器
NFS是Network File System的缩写,它最大的功能就是可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件,即文件访问。
NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地端的文件系统中,而在本地端的系统中来看,那个远程主机的目录就好像是自己的一个磁盘分区一样,在使用上相当便利。
注意: 同一挂载点可以连接多个设备,一个设备也可以连接多个挂载点
DNS服务
DNS(Domain Name Systems)域名系统,作用于域名解析
- 英特网的域名结构
域名只是逻辑概念,并不代表计算机所在的物理地点。分为三大类:
(1)国家顶级域名:采用 ISO3166 的规定。如:cn 代表中国,us 代表美国,uk 代表英国,等等。国家域名又常记为ccTLD(cc 表示国家代码 contry-code)
(2)通用顶级域名:最常见的通用顶级域名有7个,即:com (公司企业),net (网络服务机构),org (非营利组织),int (国际组织),gov (美国的政府部门),mil (美国的军事部门)。
(3)基础结构域名(infrastructure domain):这种顶级域名只有一个,即 arpa,用于反向域名解析,因此称为反向域名。
- DNS 域名解析过程
①、浏览器先检查自身的缓存中有没有解析过这个域名所对应的IP地址,如果有,则解析结束。
②、如果浏览器的缓存里面没有,浏览器会检查操作系统缓存中是否有对应的已经解析过的结果。(windows 中的hosts文件里面对应的域名所指定的IP。)
③、如果本地的缓存中没有该纪录,则本地域名服务器就直接把请求发给根域名服务器,然后根域名服务器再返回给本地域名服务器一个所查询域(根的子域)的主域名服务器的地址。
④、本地服务器再向上一步返回的域名服务器发送请求,然后接受请求的服务器查询自己的缓存,如果没有该纪录,则返回相关的下级的域名服务器的地址。
⑤、重复步骤④,找到最后把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。 - DNS 服务类型
主DNS服务器(master):数据修改(接受用户请求返回数据)
辅助DNS服务器(slave): 定期请求数据同步
缓存DNS服务器(hint): 只缓存dns数据
转发DNS服务器(forward):缓存服务器去掉缓存功能 - DNS 解析答案
(1)、根据是否能够查询到想要的结果:
①肯定答案:存在查询的键(key),并且存在与其查询键对应的值(value)。
②否定答案:不存在查询的键(key),因此,自然不存在与其查询键(value)对应的值。
(2)、根据解析答案是否由直接负责的DNS服务器返回:
①权威答案:由直接负责的DNS服务器返回的答案。
②非权威答案:不是由直接负责的DNS服务器返回的答案。这种情况下一般是由其他DNS服务器直接返回缓存的解析结果。 - DNS 协议的一种开源实现——bind
提供dns服务的套件叫 bind,但执行服务名称的是 named
(1) bind 相关的程序包
bind:提供dns server程序,以及几个常用的测试工具。
bind-utils:bind客户端程序集,例如提供dig, nslookup等工具。
bind-libs:提供bind和bind-utils包中的程序共同用到的库文件。
bind-chroot:选装,让bind程序(named进程)运行于jail进程之下。
(2) bind 的相关配置文件
/etc/named.conf 主配置文件
/etc/rndc.conf 相关配置文件
区域数据文件,需要手动创建
/var/named/zidingyi.zone
配置检查脚本工具
/usr/sbin/named-checkconf
区域配置检查工具
/usr/sbin/named-checkzone
全球十三个根服务器的相关信息
/var/named/named.ca 区域文件dns数据库
解析库文件:存放于/var/named/目录下,一般名字为ZONE_NAME.zone - 资源记录名称
①、SOA(起始授权记录) 记录提供有关dns区域工作方式的信息 -----具体负责哪个区域的解析 (指定权威服务器)。这代表着master/salve相关的认证,授权资料。不论有没有设定master/salve的架构都需要设定好。
②、NS 标记dns服务器 将域名最终映射到哪一台主机(标记本地 dns服务器)
③、A (ipv4地址记录) 资源记录将主机名映射到ipv4地址。
④、CNAME (规范名称)记录域别名
⑤、MX 邮件交换记录 —标记邮件服务主机名
⑥、PTR指针记录 将IPV4 IPV6地址映射到主机名 (用于反向DNS)
⑦、AAAA (IPV6 地址记录) 资源记录(四A记录)将主机名映射到ipv6地址。
/var/named/named.ca (数据文件----资源记录文件) - 区域数据文件
资源记录包含的元素:
owner-name TTL class type date
主机名 资源记录生存时间 INTERNET A 记录存储数据(主机ip)
TTL值:当外部DNS服务器对你的DNS这个域进行查询时,这个记录会放置在对方的DNS服务器几秒钟
NMCLI
基于会话的网络管理 (NetworkManager command line tool)
什么是 teaming 技术?
- 使用 team 配置网卡聚合链路,所谓teaming技术就是把同一台服务器上的多个物理网卡通过软件绑定成一个虚拟的网卡,也就是说,对于外部网络而言,这台服务器只有一个可见的网卡。对于任何应用程序,以及本服务器所在的网络,这台服务器只有一个网络链接或者说只有一个可以访问的IP地址。
- 之所以要利用 Teaming 技术,除了利用多网卡同时工作来提高网络速度以外,还有可以通过 Teaming 实现不同网卡之间的负载均衡(Load balancing)和网卡冗余(Fault tolerance)。
teaming 与 bonding 的关系?
- 网卡绑定 bonding 可以提高网络的冗余,保证网络可靠性,提高网络速度。为了提高网络容错或吞吐量,一般服务器都会采取多网卡绑定的策略,在 RHEL5/RHEL6 中使用的是Bonding。而 RHEL7 提供了一项新的实现技术 Teaming,用来实现链路聚合的功能,但是在 RHEL7 中,不会使用 teaming 替换 bonding,它们是并存的,我们可以选择 Teaming,也可以选择 Bonding。
案例一:添加虚拟 team
- 采用图形界面,手动添加2个网卡。
nmcli connection show #显示会话信息
nmcli device show #查看网卡设备信息
nmcli device status #查看网卡状态
- 激活添加的网卡。
nmcli device connect ens224
nmcli device connect ens256
#也可用 dhclient 自动激活
- 绑定
nmcli connection add type team con-name team0 ifname team0 config '{"runner" :{"name" :"activebackup"}}'
nmcli connection add type team-slave con-name team0-port1 ifname ens224 master team0
nmcli connection add type team-slave con-name team0-port2 ifname ens256 master team0
nmcli connection up team0-port1
nmcli connection up team0-port2
teandctl team0 stat #显示网卡工作状态
案例二:创建虚拟桥接接口
绑定
nmcli connection add type bridge con-name br1 ifname br1
nmcli connection add type bridge-slave con-name br1-port1 ifname ens160 master br1
nmcli connection up br1-port1
nmcli connection up br1
crontab 计划任务
什么时候要使用计划任务?
- 每分钟需要执行一个程序去检查系统运行状态
- 每天凌晨需要对过去的一天业务数据进行统计
- 每个星期需要把日志文件备份(如果日志信息太多那么占用的磁盘空间就会越大,而且日志我们大多都是实时分析一周之内的日志信息,而超出一周的日志我们会将它进行备份)每天凌晨两三点钟进行备份
- 每个月需要把数据库进行备份
计划任务的类型
- 单个用户的计划任务(单一 一次的计划任务,周期性的计划任务)
- 单一一次的计划任务 at
- 系统级别的计划任务 (大多是周期性的计划任务)
- 周期性的计划任务 创建 cron表,通过命令 crontab -e 来创建
本次测试所用的是 RHEL8.2 最小化版,所以 at 和 crontab 软件包并未装
我们先装包
yum install at -y
yum install crontab -y
systemctl restart crond.server
案例一:单一一次的计划任务
at now + 2minutes
at> wall nihao!
#推出 ctrl + D
# 自动生成的文件路径 :/var/spool/at
# 查看单一任务计划执行次数(编号):atq
# 删除文件也可以直接删除广播文件:atrm
# 通过写入用户名,拒绝某个用户使用 at 命令:/etc/at.deny
# 通过写入用户名,允许某个用户使用 at 命令:/etc/at.allow
# 注意,一般都是允许在前,拒绝在后。
案例二:周期性的计划任务
crontab -e -u redhat
# 分 时 日 月 周 命令 输出的内容
06 02 * * * wall haha
# * 表示每天,每月,每周
# wall 表示广播
# 全局用户生效文件(指定用户)
vim /etc/crontab
* * * * * root wall haha
# 查看用户的周期性任务
crrontab -l -u redhat
案例三:每天凌晨四点定时备份数据库信息
- 创建脚本文件
vim /mysql.sh
#! /bin/bash
mysqldump -uroot -predhat --database person > /a_$(date +%F_%T)
- 编辑配置文件
vim /etc/crontab
00 04 * * * root bash /mysql.sh