The following script will mirror a vhost from a Plesk managed server. It is up to you to modify the Apache vhost configuration includes (usually there's one created by Plesk in /etc/httpd/conf.d or the like).
#!/bin/bash
# RSYNC/SED script to mirror a Plesk host
# 20070801 Ben Johns
# Requirements:
# SSH Pub/Priv keys shared on both hosts
# sshkeygen -t dsa -b 1024 -f `whoami`-`hostname` (NO PASSPHRASE!)
# copy the resultant .pub file to the remote host and append it too
# the RSYNC_USER's .ssh/authorized_keys file.
# RSYNC Version >2.6.3
# HTTPD.INCLUDE needs to be manually configured to suit the config
# of the local host. Ie copy the relevant sections from the remote hosts
# plesk httpd conf to this host. Usually done somewhere in /etc/httpd or /etc/apache.
# REM_HOST: The remote host to mirror
# RSYNC_USER: The user account on the remote host that has permission
# to copy the intended files.
# RSYNC_OPTS: Parameters to use with the rsync command
# SSH_KEY: The private DSA key to use for SSH authentication
# RSYNC_VHOST_SRC_PATH: Path to the source virtual host files on the remote host
# RSYNC_VHOST_SRC_DIR: Directory of the source virtual host files on the remote host
# RSYNC_VHOST_DST_PATH: Path to the destination on the local host
# SED_VHOST_MOD_FILE: Location of the SED parameters to modify VHOST config files
REM_HOST="web.server.com"
RSYNC_USER="rsync"
RSYNC_OPTS="-avz --perms -q --deleteduring"
SSH_KEY="/var/www/rsync_ssh_key"
RSYNC_VHOST_SRC_PATH="/home/httpd/vhosts/"
RSYNC_VHOST_SRC_DIR="vhost_directory"
RSYNC_VHOST_DST_PATH="/var/www/vhosts/"
SED_VHOST_MOD_FILE="/var/www/vhost_include.sed"
rsync $RSYNC_OPTS \
-e "ssh -i $SSH_KEY -l $RSYNC_USER" \ $RSYNC_USER@$REM_HOST:$RSYNC_VHOST_SRC_PATH$RSYNC_VHOST_SRC_DIR $RSYNC_VHOST_DST_PATH
rsync $RSYNC_OPTS --include "*/" --include "*.include" --exclude "*" \
-e "ssh -i $SSH_KEY -l $RSYNC_USER" \
$RSYNC_USER@$REM_HOST:$RSYNC_VHOST_SRC_PATH$RSYNC_VHOST_SRC_DIR $RSYNC_VHOST_DST_PATH
for file in $RSYNC_VHOST_DST_PATH$RSYNC_VHOST_SRC_DIR/conf/httpd.include ; do
sed -f $SED_VHOST_MOD_FILE "$file" > tmp_file
mv tmp_file "$file"
echo "Modified $file"
done
chmod ug+rwx R $RSYNC_VHOST_DST_PATH$RSYNC_VHOST_SRC_DIR
apache2ctl graceful
1 comment:
Hi,
we have one server
running plesk Control Panel (Version 8.3) and
other a Normal Apache Server.The idea is to have two Web Servers with same content and Load Balanced on Network.How to implement this Script.
Cheers
Nasser
(naseer.Khan@anis.com.bh)
Post a Comment