目录
实验目地:
在整体实验中,使客户机在网页可以看到由服务器A上传的文件,并且A服务器有一台备份服务器。
实验需求:
四台虚拟服务器与一台客户机,并关闭防火墙
服务器 | IP地址 | 部署服务 | 部署作用 |
A | 192.168.1.12 | Rsync,nfs,DNS | 主服务器,提供文件的源头 |
B | 192.168.1.23 | Rsync | 实时同步,备份A服务器 |
C | 192.168.1.11 | Nfs,web | 提供web服务,连接外网 |
D | 192.168.1.22 | Nfs,web | 提供web服务,连接外网 |
各项服务位置以及作用:
RSYNC:此项服务是文件同步的传输工具,将文件推送给B,提供了一个远程服务器同步的快速方法,并且保持原文件的属性,以此达到备份的效果。
NFS:通过网络使不同设备共享彼此文件,所以在此项操作中,A服务器建立nfs共享文件到C,D。(注:A与C,D共享的文件要与B共享备份的文件一致)。
WEB:apache服务可以跨平台使用,所以要建立在C.D两台服务器上与客户机不同设备实现文件共享(注:将nfs的共享文件挂载到web的网页共享根目录来达到A,B,C,D服务器文件互通)
DNS:域名转IP,把DNS建立在服务器A上,提供C,D的域名服务,在客户机访问C,D时,由A服务器提供域名转IP服务,(在正反解析文件中写上客户机的域名与IP)
整体实验过程:
- 首先在A和B上建立rsync服务备份文件,B为rsync备份服务器,A为共享服务器;
- 在C,D上建立web服务器,启用httpd网页根目录,
- 在主共享服务器A上建立nfs服务,并把共享目录设置为rsync的备份目录。
- 把A服务器上nfs服务,发到C,D两台服务器,建立A分别连接从C,D
- 在C.D上把A服务器的nfs共享目录挂载到httpd网页根目录上
- 在客户机浏览器上输入IP或域名即可看到A服务器的文件内容
详细配置:
Rsync服务:
1,在A,B上下载rsync服务 #yum -y install rsync
2,首先在B服务器上创建同步数据的系统用户,并创建同步目录,让刚创建的用户对此目录有读写权。
# useradd rput && echo 'rput:123456' | chpasswd
#mkdir /web-bak/
#setfacl -R -m user:rput:rwx /web-bak/
#setfacl -R -m default:user:rput:rwx /web-bak/
在A上创建测试数据
#mkdir -p /var/www/html
#cp -r /boot/* /var/www/html
3,在B上配置rsync同步源,在B上创建/etc/rsyncd.conf文件,内容如下:
uid = root
gid = root
address = 192.168.1.23
port = 873
hosts allow = 192.168.1.0/24
use chroot = yes
max connections = 5
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
motd file = /etc/rsyncd.motd
[wwwroot]
path = /web-bak/
comment = used for
read only = false
list = yes
auth users = backuper
secrets file = /etc/rsyncd.passwd
根据上一步的设置,创建账号数据文件,添加一行用户记录,以冒号分隔,用户名称为backuper,密码为pwd123。由于账号信息采用明文存放,因此应调整文件权限,避免账号信息泄露。
# echo "Welcome to Backup Server" > /etc/rsyncd.motd
# vim /etc/rsyncd.passwd 写入密码为:pwd123
修改此项文件权限,权限设置不对的话身份验证会失败
#chmod 600 /etc/rsyncd.passwd
开启此项服务:
#rsync --daemon --config=/etc/rsyncd.conf
并保存到/etc/rc.d/rc.local文件中,确保系统启动后自动启动rsync服务。并赋权:
#chmod +x /etc/rc.d/rc.local
4,至此rsync同步源配置完毕,下面使用rsync备份工具实现备份操作。
在A新建一个文件保存好密码,然后在rsync命令中使用--password-file指定此文件即可
# vim /etc/rsyncd.passwd 写入密码为:pwd123
#chmod 600 /etc/rsync.passwd
在源机器A上开始部署sersync服务
(1)下载sersync
Rsync安装包下载地址:https://github.com/WayneD/rsync/releases
将sersync上传到服务器 /opt目录下
# mv sersync2.5.4_64bit_binary_stable_final.tar.gz /opt/
# cd /opt/
# tar zxf sersync2.5.4_64bit_binary_stable_final.tar.gz
# mv GNU-Linux-x86 /opt/sersync
# cd /opt/sersync/
(2)配置sersync
# cp confxml.xml confxml.xml.bak
更改优化sersync配置文件:24,25,31行
(3)开启sersync守护进程同步数据
# /opt/sersync/sersync2 -d -r -o /opt/sersync/confxml.xml
(4)测试
在A上对/var/www/html/目录增删改目录文件,
看B上/web-bak/目录的变化
(5)设置A:sersync监控开机自动执行
# vim /etc/rc.d/rc.local #编辑,在最后添加一行
/opt/sersync/sersync2 -d -r -o /opt/sersync/confxml.xml #设置开机自动运行脚本
(6)在A添加脚本监控sersync是否正常运行
# vim /opt/check_sersync.sh #编辑,添加以下代码
#!/bin/sh
sersync="/opt/sersync/sersync2"
confxml="/opt/sersync/confxml.xml"
status=$(ps aux | grep 'sersync2' | grep -v 'grep' | wc -l)
if [ $status -eq 0 ];
then
$sersync -d -r -o $confxml &
else
exit 0;
Fi
把这个脚本加到A的任务计划,定期执行检测
# chmod +x check_sersync.sh
# echo "10 * * * * sh /root/check_sersync.sh &" >> /var/spool/cron/root
Web服务:
1,在C,D分别安装httpd服务
通过yum安装apache编译时需要的依赖包
#
wget https:
//mirrors.cnnic.cn/apache/httpd/httpd-2.4.38.tar.gz
# yum -y install gcc gcc-c++ apr apr-devel cyrus-sasl-devel expat-devel libdb-devel openldap-devel apr-util-devel apr-util pcre-devel pcre lrzsz
使用源码安装并解压到/usr/src下
执行“./configure --help”命令,其中“./”表示当前目录。
# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi
编译配置:# make && make install
2,为了使用便捷添加软连接
# ln -s /usr/local/httpd/bin/* /usr/local/bin
3,建立.service配置文件
# vim /lib/systemd/system/httpd.service
[Unit]
Description=the apache http server
After=natwork.target
[Service]
Type=forking
PIDFile=/usr/local/httpd/logs/httpd.pid
ExecStart=/usr/local/httpd/bin/apachectl $OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s
[Install]
WantedBy=multi-user.target
开启查看此项服务:
# systemctl daemon-reload
# systemctl enable httpd.service
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
# systemctl enable httpd.service
enabled
# systemctl start httpd.service
# systemctl status httpd.service
构建web主机
FQDN | www.test.com |
IP | 192.168.36.128 |
TCP PORT | 80 |
网站根目录 | /var/www/test/html |
主页 | index.html |
分别准备两个虚拟站点的网页文件:
# mkdir -p /var/www/test/html
# echo "www.test.com" > /var/www/test/html/index.html
添加虚拟主机配置(注意IP修改)
# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf //修改现有内容,
<VirtualHost 192.168.1.22:80>
ServerAdmin webmaster@test.com
DocumentRoot "/var/www/test/html"
ServerName www.test.com
ServerAlias test.com
ErrorLog "logs/www.test.com-error_logs"
CustomLog "logs/www.test.com-access_log" common
<Directory "/var/www/test/html">
Require all granted
</Directory>
</VirtualHost>
修改主配置文件httpd.conf,加载httpd-vhosts.conf文件
# vim /usr/local/httpd/conf/httpd.conf
………… //省略部分内容
ServerName www.example.com:80
Include conf/extra/httpd-vhosts.conf //加载独立的配置文件
执行httpd -t命令检测httpd配置文件语法正确性
重启httpd服务使配置生效
[root@localhost ~]# systemctl restart httpd
NFS服务
1,在A服务器上下载nfs服务(在C,D上也许下载)
# yum -y install nfs-utils rpcbind
先启动rpc服务,再启动nfs服务。
# systemctl start rpcbind #启动rpc服务
# systemctl enable rpcbind #设置开机启动
启动nfs服务:
# systemctl start nfs #启动nfs服务
# systemctl enable nfs #设置开机启动
2,在nfs服务端更改共享输出的目录设置权限
# chmod -R a+w /var/www/html
(注:A与C,D共享的文件要与B共享备份的文件一致)
3,编辑/etc/exports配置文件,将本地的/var/www/html目录共享发布
# vim /etc/exports
/var/www/html 192.168.1.0/24(rw)
共享权限设置: ro:只读属性 rw:读写属性
# systemctl reload nfs 重启服务
4,在C,D查看NFS服务器共享出来目录:
Showmount -e 192.168.1.12
并挂载到网页根目录上
# mount -t nfs 192.168.0.12:/var/www/html /var/www/test/html/
DNS服务
1,在A安装dns服务
#yum -y install bind bind-chroot bind-utils
2,启动服务
# systemctl start named
# systemctl enable named
3.构建主dns服务器
创建named.conf主配置文件,提供test.com域的正向解析和192.168.1.0/24网段的反向解析。
# cp -p /etc/named.conf /var/named/named.conf.bak
# vim /etc/named.conf
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { any; };
directory "/var/named";
allow-query { any; };
};
zone "." IN {
type hint;
file "named.ca";
};
zone "test.com" IN {
type master;
file "test.com.zone";
};
zone "1.168.192.in-addr.arpa" IN {
type master;
file "192.168.1.arpa";
};
查看有没有语法错误
# named-checkconf /etc/named.conf
4.创建正向区域数据文件
# vim /var/named/test.com.zone
$TTL 1D
@ IN SOA @ root.test.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
test.com. IN NS dns-localhost1.test.com.
dns-localhost1.test.com. IN A 192.168.1.12
www.test.com. IN A 192.168.1.11
www.test.com. IN A 192.168.1.22
ftp.test.com. IN A 192.168.1.111
5.创建反向区域数据文件
$TTL 1D
@ IN SOA test.com. root.test.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS dns-localhost1.test.com.
12 IN PTR dns-localhost1.test.com.
11 IN PTR www.test.com.
22 IN PTR www.test.com.
111 IN PTR ftp.test.com.
更改区域数据文件的归属属性:
# chown root:named /var/named/test.com.zone
# chown root:named /var/named/192.168.1.arpa
判断语法有没有错误
正# named-checkzone test.com /var/named/test.com.zone
反# named-checkzone 1.168.192.in-addr.arpa /var/named/192.168.1.arpa
并检查该文件是否存在问题。
# named-checkconf -z /etc/named.conf
更改配置项
将A服务器DNS删除,因为A本身就是DNS服务器,并且将B,C,D与客户机的DNS改为A的IP,以便使用
在网页中输入C或D的IP即可看到A服务器提供的文件