LAMP+inotify+rsyncd实时同步

在这里插入图片描述

实验准备 9台centos7机器
下面2台机器实现inotify+rsyncd实时同步 php下的wordpress和discuz
rsyncd是服务器端拷贝客户端的文件
192.168.38.107 nfs服务器 rsyncd客户端 inotify实时监控
192.168.38.112 rsyncd服务器 同步192.168.38.107的数据

192.168.38.107 nfs服务器部署

yum install   nfs-utils  -y     下载nfs服务的包
mkdir  -pv  /data/php/     建立要共享的目录 然后把下载的wordpress和discuz包放到这个目录下 方便将来LAP机器共享
把wordpress和discuz解压


cp -a  wordpress /data/php      复制wordpress到php目录下
cp -a  upload  /data/php           复制discuz里面的upload到php目录下
vim /etc/exports          修改nfs配置
/data/php/    192.168.38.111(rw,no_root_squash)  
/data/php/    192.168.38.88(rw,no_root_squash)
     共享/data/php目录 允许192.168.38.111(LAP服务器)和192.168.38.88读写 不切换身份 如果客户端已root身份登录 那么他的权限等同于服务器的root
/data/php    192.168.38.111(rw,no_root_squash)
systemctl start nfs   启动nfs服务

192.168.38.112 rsyncd服务器端部署
配置 rsync 服务器端的配置文件

vi /etc/rsyncd.conf
uid = root                                以root身份运行rsyncd服务
gid = root
use chroot = no                            不切根
max connections = 0                     最大连接数不控制
ignore errors                                忽略错误
exclude = lost+found/                    
log file = /var/log/rsyncd.log           指定rsync同步日志文件
pid file = /var/run/rsyncd.pid          指定rsync同步的pid文件
lock file = /var/run/rsyncd.lock        
reverse lookup = no                       不启用反向dns解析
hosts allow = 192.168.38.0/24         允许机器的网段
[backup]
path = /backup/                              拷贝到的目录
comment = backup                                
read only = no                                  不是只读  可写
auth users = rsyncuser                       允许同步的用户 和后面的要对应
secrets file = /etc/rsync.pass               允许的用户和密码的存放路径 和后面设置的文件要对应

服务器端生成验证文件

echo "rsyncuser:magedu" > /etc/rsync.pass
chmod 600 /etc/rsync.pass       为了安全设置600权限  其他人就看不到用户密码了

服务器端准备目录

mkdir /backup
systemctl start rsyncd

192.168.38.107 rsyncd客户端部署 inotify实时监控/data/php/目录

yum install inotify-tools  -y  下载inotify的包

客户端配置rsyncd服务授权账号密码文件

echo "magedu" > /etc/rsync.pass        和服务器的用户和密码要对应
chmod 600 /etc/rsync.pass

客户端创建inotify_rsync.sh脚本实现实时同步 使用inotify实时监测 一旦文件有改变就同步 死循环 具体参考以下脚本 注意SRC的同步的目录后面加/ 表示拷贝的是目录下的文件 而不是包含/data本身 DESC后面加::是表示的独立服务 不加2个冒号就是ssh连接的 必须加2个冒号 backup是之前/etc/rsyncd.conf配置文件里面【backup】的 表示的是他指定的文件路径

#!/bin/bash
SRC='/data/php/'                                     监控的文件目录
DEST='rsyncuser@rsync服务器IP::backup'       拷贝到服务器配置文件[backup]指定的目录下

inotifywait -mrq --timefmt '%Y-%m-%d %H:%M' --format '%T %w %f' -e create,delete,moved_to,close_write,attrib ${SRC} |while read DATE TIME DIR FILE;do
FILEPATH=${DIR}${FILE}
rsync -az --delete --password-file=/etc/rsync.pass $SRC $DEST && echo "At ${TIME} on ${DATE}, file $FILEPATH was backuped up via rsync" >> /var/log/changelist.log
done

给脚本加上执行权限 后面直接运行脚本就可以实时监控了 一旦有变化就实时同步

vim /etc/sysctl.conf
在这里插入图片描述
sysctl -p 使其配置生效

watch -n 0.5 1s -l /back 不断的盯着/back目录 间隔0.5秒
脚本长期运行可以放到后台 可以用到screen 或 nohup 即使窗口关闭也不会停
nohup ./backup.sh &> /dev/null & 后台执行

下面3台机器实现mysql一主两从 半同步
192.168.38.200 mysql主
yum install mariadb-server -y
主服务器上配置 设置服务唯一的id号 开启二进制日志

vim /etc/my.cnf
[mysqld]
server-id=8
log_bin
systemctl  start mariadb
Mysql>grant replication slave on *.* to repluser@'192.168.38.%' identified by 'centos';

设置复制同步的管理账号
设置半同步
在主上安装和开启半同步插件

安装半同步主的插件
mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';   
开启半同步主的插件
Mysql>SET GLOBAL rpl_semi_sync_master_enabled=1;
单位是毫秒,表示如果主库等待从库回复消息的时间超过该值,就自动切换为异步复制模式
Mysql>SET GLOBAL rpl_semi_sync_master_timeout = 1000;
查看状态  有没有开启成功
Mysql>SHOW GLOBAL VARIABLES LIKE '%semi%';

192.168.38.108 mysql从

yum install mariadb-server -y
主服务器上配置  设置服务唯一的id号  只读
[mysqld]
server-id=9
read_only
systemctl  start mariadb
Mysql>help change master to     查看模板  改成自己需要同步的主机
Mysql>CHANGE MASTER TO
  MASTER_HOST='192.168.38.200',
  MASTER_USER='repluser',
  MASTER_PASSWORD='centos',
  MASTER_PORT=3306,
  MASTER_LOG_FILE='mariadb-bin.000001',
  MASTER_LOG_POS=400;
Mysql>show slave status\G;
Mysql>start slave;

192.168.38.110 mysql从 同时实现半同步

yum install mariadb-server -y
主服务器上配置  设置服务唯一的id号  只读
[mysqld]
server-id=10
read_only
systemctl  start mariadb
Mysql>help change master to     查看模板  改成自己需要同步的主机
Mysql>CHANGE MASTER TO
  MASTER_HOST='192.168.38.200',
  MASTER_USER='repluser',
  MASTER_PASSWORD='centos',
  MASTER_PORT=3306,
  MASTER_LOG_FILE='mariadb-bin.000001',
  MASTER_LOG_POS=400;
Mysql>show slave status\G;
Mysql>start slave;

在从上安装和开启半同步插件

安装半同步从的插件
Mysql>INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
开启半同步从的插件
Mysql>SET GLOBAL rpl_semi_sync_slave_enabled=1;
检查是否安装成功
Mysql>show variables like '%semi%';
重新启动slave
Mysql>stop slave;
Mysql>start slave;

下面2台机器实现LAP服务器 http网站挂载的是nfs服务器上的wordpress和discuz文件
2台机器部署都一样 为了实现负载均衡
192.168.38.111部署

清华yum安装php7.3   httpd
yum install httpd -y
yum install   nfs-utils  -y
把nfs服务器上的/data/php下的wordpress和discuz挂载到本机的http网页下

在这里插入图片描述
在这里插入图片描述

chown -R apache.apache wordpress/    更改wordpress所属用户和所属组为apache
cp wordpress/wp-config-sample.php wordpress/wp-config.php  拷贝配置文件并且改名

vim wp-config.php 更改配置文件 和数据库建立的数据一一对应
在这里插入图片描述

192.168.38.200 的mysql主上部署管理wordpress的账号

新建wpdb库和wpuser用户
mysql> create database wordpress;
mysql> grant all on wordpress.* to wordpress@'192.168.38.%' identified by "centos";
mysql> flush privileges;   刷新

192.168.38.111上部署PHP-FPM7.3(此版本比仓库epel的版本新,加速效果更好)

yum install https://mirrors.tuna.tsinghua.edu.cn/remi/enterprise/remi-release-7.rpm 
在清华epel源上下载epel仓库 
ls /etc/yum.repos.d/    查看发现多了很多epel源
vim /etc/yum.repos.d/remi-php73.repo   启用remi-php73.repo源
[remi-php73]
enabled=1       0改为1  启用这个yum源
yum install  httpd  php73-php-fpm php73-php-mysqlnd  php73-php-opcache -y

此时可以安装php7.3相关包了

vim  /etc/httpd/conf.d/test.conf   配置httpd文件  使其收到.php后缀就转给php-fpm相关包处理  写上下面代码
DirectoryIndex index.php
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/$1
systemctl restart httpd php73-php-fpm

vim test.php 可以在网页上查看opcache模块有没有启用成功
在这里插入图片描述

电脑上访问httpd服务http://192.168.38.111/wordpress 安装

搭建discuz
mv  upload    discuz     改名  方便区别访问
chown -R apache.apache discuz

192.168.38.200 的mysql主上部署管理discuz的账号

mysql > create database ultrax;
mysql > grant all on ultrax.* to discuz@'192.168.38.%' identified by 'centos';

window浏览器访问http://192.168.38.111/discuz安装
如果提示差xml就得在对应的php服务器上安装对应的php-xml包 然后重启php-fpm服务
yum install php73-php-xmlrpc -y
systemctl restart php73-php-fpm
在这里插入图片描述

192.168.38.88部署 和 192.168.38.111 部署一样 账号共用mysql的管理账号

mount  -o rw 192.168.38.107:/data/php   /var/www/html/
vim /etc/yum.repos.d/remi-php73.repo   启用remi-php73.repo源
[remi-php73]
enabled=1       0改为1  启用这个yum源
yum install  httpd  php73-php-fpm php73-php-mysqlnd  php73-php-opcache  
php73-php-xmlrpc  -y

此时可以安装php7.3相关包了

vim  /etc/httpd/conf.d/test.conf   配置httpd文件  使其收到.php后缀就转给php-fpm相关包处理  写上下面代码
DirectoryIndex index.php
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/$1
systemctl restart httpd php73-php-fpm

192.168.38.240部署powerdns服务

yum install -y pdns pdns-backend-mysql  
yum install mariadb-server -y
systemctl start mariadb
Mysql>CREATE DATABASE powerdns;
Mysql>GRANT ALL ON powerdns.* TO 'powerdns'@'localhost' IDENTIFIED BY 'magedu';
Mysql>use powerdns;

创建powerdns数据库中的表,参看下面文档实现
https://doc.powerdns.com/md/authoritative/backend-generic-mysql/
打开上面网页 复制Default Schema 下面的代码 在mysql中运行 然后就创建出所需要的表了

配置PowerDNS使用mariadb作为后台数据存储

vim /etc/pdns/pdns.conf,查找到包含launch= 的行,修改并添加下面的内容
launch=gmysql
gmysql-host=localhost
gmysql-port=3306
gmysql-dbname=powerdns
gmysql-user=powerdns
gmysql-password=magedu

systemctl start pdns
安装httpd和php相关包
yum -y install httpd php php-devel php-gd php-mcrypt php-imap php-ldap php-mysql php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-mhash gettext
systemctl start httpd
systemctl enable httpd

下载poweradmin程序,并解压缩到相应目录

wget http://downloads.sourceforge.net/project/poweradmin/poweradmin-2.1.7.tgz
tar xvf poweradmin-2.1.7.tgz -C /var/www/html
cd /var/www/html
mv poweradmin-2.1.7 poweradmin

访问下面地址,启动PowerAdmin的网页安装向导:
http://powerdns服务器IP/poweradmin/install/

按照下面页面说明,在数据库中创建用户并授权
mysql>
GRANT SELECT, INSERT, UPDATE, DELETE
ON powerdns.*
TO ‘admin’@‘localhost’
IDENTIFIED BY ‘centos’;

在这里插入图片描述

按下面页面说明,创建config.in.php文件内容
vim /var/www/html/poweradmin/inc/config.inc.php 将方框的代码复制到文件中

在这里插入图片描述

安装完毕后,删除install目录
rm -rf /var/www/html/poweradmin/install/
不删除登录不上
http://192.168.38.240/poweradmin/   登录 用户名admin  密码magedu  这个在第3步设置
登进去设置dns解析

在这里插入图片描述

192.168.38.222 客户端部署 指定dns解析服务器为poweradmin的主机ip
vim /etc/resolv.conf
在这里插入图片描述

2台LAP服务器  rm -rf /etc/httpd/conf.d/test.conf   同时修改主配置文件
vim    /etc/httpd/conf/httpd.conf   最下面添加以下代码
addType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
ProxyRequests Off

<virtualhost *:80>
servername wordpress.net
documentroot /var/www/html/wordpress
<directory /var/www/html/wordpress>
require all granted
</directory>
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/wordpress/$1
CustomLog "logs/access_wordpress_log" common
</virtualhost>

<virtualhost *:80>
servername discuz.net
documentroot /var/www/html/discuz
<directory /var/www/html/discuz>
require all granted
</directory>
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/discuz/$1
CustomLog "logs/access_discuz_log" common
</virtualhost>

192.168.38.222用客户端linux的桌面浏览器测试discuz.net wordpress.net

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值