install: added backup procedure

This commit is contained in:
Serghey Rodin 2012-11-29 11:37:47 +02:00
commit 92e56e8c09

View file

@ -2,7 +2,6 @@
# Vesta installer # Vesta installer
# Define Variables # Define Variables
email=$1
RHOST='r.vestacp.com' RHOST='r.vestacp.com'
CHOST='c.vestacp.com' CHOST='c.vestacp.com'
@ -36,8 +35,39 @@ if [ $os != 'CentOS' ] && [ $os != 'Red' ]; then
fi fi
release=$(grep -o "[0-9]" /etc/redhat-release |head -n1) release=$(grep -o "[0-9]" /etc/redhat-release |head -n1)
help() {
echo "usage: $0 [OPTIONS]
-e, --email Define email address
-h, --help Print this help and exit
-f, --force Force installation"
exit 1
}
# Translating argument to --gnu-long-options
for arg; do
delim=""
case "$arg" in
--help) args="${args}-h " ;;
--force) args="${args}-f " ;;
--email) args="${args}-e " ;;
*) [[ "${arg:0:1}" == "-" ]] || delim="\""
args="${args}${delim}${arg}${delim} ";;
esac
done
eval set -- "$args"
# Getopt
while getopts "hfe:" Option; do
case $Option in
h) help ;; # Help
e) email=$OPTARG ;; # Contact email
f) force=yes ;; # Force install
*) help ;; # Default
esac
done
# Are you sure ? # Are you sure ?
if [ -z $1 ]; then if [ -z $email ]; then
echo echo
echo echo
echo echo
@ -120,24 +150,21 @@ for rpm in $rpms; do
done done
rm -f $tmpfile rm -f $tmpfile
if [ ! -z "$conflicts" ]; then if [ ! -z "$conflicts" ] && [ -z "$force" ]; then
echo echo
echo '!!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!' echo '!!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!'
echo echo
echo 'Following rpm packages aleady installed:' echo 'Following rpm packages aleady installed:'
echo "$conflicts" echo "$conflicts"
echo echo
echo 'It is highly recommended to remove them before proceeding.'
echo
echo 'If you want to force installation run this script with -f option:'
echo "Example: bash $0 --force"
echo echo
echo 'It is recommended to remove them before proceeding.'
echo '!!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!' echo '!!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!'
echo echo
read -n 1 -p 'Do you really want to continue? [y/n]: ' answer
if [ "$answer" != 'y' ] && [ "$answer" != 'Y' ]; then
exit 1 exit 1
fi
echo
echo "Ok, let's try..."
sleep 1
fi fi
# Password generator # Password generator
@ -289,8 +316,24 @@ mkdir -p $VESTA/data
mkdir -p $VESTA/ssl mkdir -p $VESTA/ssl
chmod 770 $VESTA/conf chmod 770 $VESTA/conf
# Make backup directory
vst_backups="/root/vst_install_backups/$(date +%s)"
mkdir -p $vst_backups
mkdir -p $vst_backups/nginx
mkdir -p $vst_backups/httpd
mkdir -p $vst_backups/mysql
mkdir -p $vst_backups/exim
mkdir -p $vst_backups/dovecot
mkdir -p $vst_backups/clamd
mkdir -p $vst_backups/vsftpd
mkdir -p $vst_backups/named
wget $RHOST/$REPO/vesta.conf -O $VESTA/conf/vesta.conf wget $RHOST/$REPO/vesta.conf -O $VESTA/conf/vesta.conf
if [ -e '/etc/sudoers' ]; then
mv /etc/sudoers $vst_backups/
fi
wget $CHOST/$VERSION/sudoers.conf -O /etc/sudoers wget $CHOST/$VERSION/sudoers.conf -O /etc/sudoers
chmod 0440 /etc/sudoers
wget $CHOST/$VERSION/vesta.log -O /etc/logrotate.d/vesta wget $CHOST/$VERSION/vesta.log -O /etc/logrotate.d/vesta
sed -i "s/umask 022/umask 002/g" /etc/profile sed -i "s/umask 022/umask 002/g" /etc/profile
@ -342,6 +385,15 @@ fi
$VESTA/bin/v-change-user-shell admin bash $VESTA/bin/v-change-user-shell admin bash
# Apache # Apache
if [ -e '/etc/httpd/conf/httpd.conf' ]; then
mv /etc/httpd/conf/httpd.conf $vst_backups/httpd/
fi
if [ -e '/etc/httpd/conf.d/ssl.conf' ]; then
mv /etc/httpd/conf.d/ssl.conf $vst_backups/httpd/
fi
if [ -e '/etc/httpd/conf.d/proxy_ajp.conf' ]; then
mv /etc/httpd/conf.d/proxy_ajp.conf $vst_backups/httpd/
fi
wget $CHOST/$VERSION/httpd.conf -O /etc/httpd/conf/httpd.conf wget $CHOST/$VERSION/httpd.conf -O /etc/httpd/conf/httpd.conf
wget $CHOST/$VERSION/httpd-status.conf -O /etc/httpd/conf.d/status.conf wget $CHOST/$VERSION/httpd-status.conf -O /etc/httpd/conf.d/status.conf
wget $CHOST/$VERSION/httpd-ssl.conf -O /etc/httpd/conf.d/ssl.conf wget $CHOST/$VERSION/httpd-ssl.conf -O /etc/httpd/conf.d/ssl.conf
@ -360,17 +412,35 @@ chmod 640 /var/log/httpd/suexec.log
chmod 751 /var/log/httpd/domains chmod 751 /var/log/httpd/domains
# Nginx # Nginx
if [ -e '/etc/nginx/nginx.conf' ]; then
mv /etc/nginx/nginx.conf $vst_backups/nginx/
fi
if [ -f '/etc/nginx/conf.d/default.conf' ]; then
mv /etc/nginx/conf.d/default.conf $vst_backups/nginx/
fi
if [ -e '/etc/nginx/conf.d/example_ssl.conf' ]; then
mv /etc/nginx/conf.d/example_ssl.conf $vst_backups/nginx/
fi
wget $CHOST/$VERSION/nginx.conf -O /etc/nginx/nginx.conf wget $CHOST/$VERSION/nginx.conf -O /etc/nginx/nginx.conf
wget $CHOST/$VERSION/nginx-status.conf -O /etc/nginx/conf.d/status.conf wget $CHOST/$VERSION/nginx-status.conf -O /etc/nginx/conf.d/status.conf
rm -f /etc/nginx/conf.d/default.conf
rm -f /etc/nginx/conf.d/example_ssl.conf
touch /etc/nginx/conf.d/vesta_ip.conf touch /etc/nginx/conf.d/vesta_ip.conf
touch /etc/nginx/conf.d/vesta_users.conf touch /etc/nginx/conf.d/vesta_users.conf
# VsFTP # VsFTP
if [ -e '/etc/vsftpd/vsftpd.conf' ]; then
mv /etc/vsftpd/vsftpd.conf $vst_backups/vsftpd/
fi
wget $CHOST/$VERSION/vsftpd.conf -O /etc/vsftpd/vsftpd.conf wget $CHOST/$VERSION/vsftpd.conf -O /etc/vsftpd/vsftpd.conf
# MySQL # MySQL
if [ -e '/etc/my.cnf' ]; then
mv /etc/my.cnf $vst_backups/mysql/
fi
if [ -e '/root/.my.cnf' ]; then
mv /root/.my.cnf $vst_backups/mysql/
fi
mpass=$(gen_pass) mpass=$(gen_pass)
wget $CHOST/$VERSION/mysql.cnf -O /etc/my.cnf wget $CHOST/$VERSION/mysql.cnf -O /etc/my.cnf
service mysqld start service mysqld start
@ -380,11 +450,20 @@ $VESTA/bin/v-add-database-server mysql localhost 3306 root $mpass
$VESTA/bin/v-add-database admin default default $(gen_pass) mysql $VESTA/bin/v-add-database admin default default $(gen_pass) mysql
# Bind # Bind
if [ -e '/etc/named.conf' ]; then
mv /etc/named.conf $vst_backups/named/
fi
wget $CHOST/$VERSION/named.conf -O /etc/named.conf wget $CHOST/$VERSION/named.conf -O /etc/named.conf
chown root:named /etc/named.conf chown root:named /etc/named.conf
chmod 640 /etc/named.conf chmod 640 /etc/named.conf
# Exim # Exim
if [ -e '/etc/exim/exim.conf' ]; then
mv /etc/exim/exim.conf $vst_backups/exim/
fi
if [ -e '/etc/clamd.conf' ]; then
mv /etc/clamd.conf $vst_backups/clamd/
fi
wget $CHOST/$VERSION/exim.conf -O /etc/exim/exim.conf wget $CHOST/$VERSION/exim.conf -O /etc/exim/exim.conf
wget $CHOST/$VERSION/dnsbl.conf -O /etc/exim/dnsbl.conf wget $CHOST/$VERSION/dnsbl.conf -O /etc/exim/dnsbl.conf
wget $CHOST/$VERSION/spam-blocks.conf -O /etc/exim/spam-blocks.conf wget $CHOST/$VERSION/spam-blocks.conf -O /etc/exim/spam-blocks.conf
@ -399,10 +478,16 @@ gpasswd -a dovecot mail
# Dovecot config # Dovecot config
if [ "$release" -eq '5' ]; then if [ "$release" -eq '5' ]; then
if -e [ '/etc/dovecot.conf' ]; then
mv /etc/dovecot.conf $vst_backups/dovecot/
fi
wget $CHOST/$VERSION/dovecot.conf -O /etc/dovecot.conf wget $CHOST/$VERSION/dovecot.conf -O /etc/dovecot.conf
else else
if [ -e '/etc/dovecot' ]; then
mv /etc/dovecot/* $vst_backups/dovecot/
fi
wget $CHOST/$VERSION/dovecot.tar.gz -O /etc/dovecot.tar.gz wget $CHOST/$VERSION/dovecot.tar.gz -O /etc/dovecot.tar.gz
rm -rf /etc/dovecot
cd /etc/ cd /etc/
tar -xzf dovecot.tar.gz tar -xzf dovecot.tar.gz
rm -f dovecot.tar.gz rm -f dovecot.tar.gz