Rsync同步部署web服务端配置
下面正式来配置Rsync服务器,模拟真实环境服务器数据同步。
那么我们要把开发给我们的网站放在rsync同步服务器上 然后由web1 web2同步
正式安装,官网下载rsync稳定版本,然后进行安装编译。
cd /usr/src ;wget http://rsync.samba.org/ftp/rsync/src/rsync-3.0.7.tar.gz
tar xzf rsync-3.0.7.tar.gz && cd rsync-3.0.7 && ./configure --
prefix=/usr/local/rsync &&make &&make install
安装完毕,配置rsync配置文件,默认/etc/不存在rsyncd.conf配置文件,需要手动创建,配置内容为如下:cat rsyncd.conf
#########[global] 全局配置
uid = nobody
gid = nobody
use chroot = no
max connections = 30
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log
transfer logging = yes
log format = %t %a %m %f %b
syslog facility = local3
timeout = 300
(我这里配置的是两个网站目录 要是还有就再加)
[www]
read only = yes
path = /data/www/www1
comment = www
auth users =test
secrets file = /etc/rsync.pas
hosts allow = 192.168.0.11,192.168.0.12(或者写192.168.1.0/24)
[web]
read only = yes
path = /data/www/www2
comment = web
auth users =test
secrets file = /etc/rsync.pas
hosts allow = 192.168.1.11,192.168.0.0/24
1,基于密钥同步
vi /etc/rsync.pas 为宿主用户配置的密码(服务端):
test:test999
保存完毕,chmod 600 /etc/rsync.pas 设置权限为宿主用户读写
最后在客户端配置同步密钥和命令,如下设置即可同步。
vi /etc/rsync.pas 输入服务器端配置的密码:
test999
保存完毕,chmod 600 /etc/rsync.pas 设置权限为宿主用户读写。
保存即可开始同步:执行如下语句
rsync -avz [email protected]::www /var/www/html --password-file=/etc/rsync.pas
rsync -avz [email protected]::web /var/www/html --password-file=/etc/rsync.pas
2,基于SSH同步
除了可以使用rsync密钥进行同步之外,还有一个比较简单的同步方法就是基于linux ssh来同步。具体方法如下:
rsync -avz [email protected]:/data/webapps/www/www1/* /var/www/html
,如果想每次同步不输入密码,需要做Linux主机之间免密码登录(公司常用的是这种方式)。
Rsync实时同步配置
在企业日常web应用中,某些特殊的数据需要要求保持跟服务器端实时同步,那我们该如何来配置呢?如何来实现呢?这里可以采用rsync+inotify来实现需求。
Inotify 是一个 Linux特性,它监控文件系统操作,比如读取、写入和创建。Inotify 反应灵敏,用法非常简单,并且比 cron 任务的繁忙轮询高效得多。
Rsync安装完毕后,需要安装inotify文件检查软件。同时为了同步的时候不需要输入密码,这样可以使用ssh免密钥方式进行同步。
安装inotify-tools-3.14.tar.gz 软件,tar –xzf inotify-tools-3.14.tar.gz ;./configure ;make
;make install 即可。配置auto_inotify.sh同步脚本,内容如下:
#!/bin/sh
src=/data/webapps/www/www1
des=/var/www/html
ip=192.168.1.11
inotifywait -mrq --timefmt '%d/%m/%y-%H:%M' --format '%T %w%f' -e modify,delete,create,attrib ${src} | while read file
do
for i in $ip
do
/usr/local/rsync/bin/rsync -avz $src root@$i:$des
done
done
在服务器端后台启动该脚本,nohup sh auto_inotify.sh & ,在服务器端目录新建或者删除,客户端都会实时进行相关操作。
screen 参看后台运行任务命令
Yum –y install screen
Screen –ls 参看后台运行任务
screen –r +后台运行的进程号 进入后台 Ctrl+a+d 是退出
下面是不用ssh的rsync同步 其实步骤很简单 (从这里看出rsync不需要创建用户秘钥也可以同步)
假如192.168.1.1向192.168.1.2 同步文件
- 在1.1上要是没有rsync命令 就安装一个
- 在1.2上安装rsync服务并配置启动
- 配置 vim /etc/rsyncd.conf
写入一个配置文件
[ehallService_web1]
comment = ehallService web Rsync
path = /app/nginx/html/ (同步的路径)
read only = false
uid = sinova (这个要看1.2同步目录的所属用户)
gid = app (这个要看1.2同步目录的所属组)
- 启动rsync
/usr/bin/rsync --daemon --config=/etc/rsyncd.conf (不是root用户启动要配置sudo权限)
- 在1.1上可以执行同步命令了
rsync -avz /app/weblogic/wwww/ [email protected]:: ehallService_web1
rsync –avz [email protected]::ehallService_web1 /app/weblogic/wwww/