Просмотр исходного кода

install: added backup procedure

Serghey Rodin 13 лет назад
Родитель
Сommit
92e56e8c09
1 измененных файлов с 99 добавлено и 14 удалено
  1. 99 14
      install/vst-install.sh

+ 99 - 14
install/vst-install.sh

@@ -2,7 +2,6 @@
 # Vesta installer
 
 # Define Variables
-email=$1
 RHOST='r.vestacp.com'
 CHOST='c.vestacp.com'
 
@@ -36,8 +35,39 @@ if [ $os !=  'CentOS' ] && [ $os != 'Red' ]; then
 fi
 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 ?
-if [ -z $1 ]; then
+if [ -z $email ]; then
     echo
     echo
     echo
@@ -120,24 +150,21 @@ for rpm in $rpms; do
 done
 rm -f $tmpfile
 
-if [ ! -z "$conflicts" ]; then
+if [ ! -z "$conflicts" ] && [ -z "$force" ]; then
     echo
     echo '!!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!'
     echo
     echo 'Following rpm packages aleady installed:'
     echo "$conflicts"
     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 'It is recommended to remove them before proceeding.'
     echo '!!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!'
     echo
-    read -n 1 -p  'Do you really want to continue? [y/n]: ' answer
-    if [ "$answer" != 'y'  ] && [ "$answer" != 'Y'  ]; then
-        exit 1
-    fi
-    echo 
-    echo "Ok, let's try..."
-    sleep 1
+    exit 1
 fi
 
 # Password generator
@@ -289,8 +316,24 @@ mkdir -p $VESTA/data
 mkdir -p $VESTA/ssl
 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
+if [ -e '/etc/sudoers' ]; then
+    mv /etc/sudoers $vst_backups/
+fi
 wget $CHOST/$VERSION/sudoers.conf -O /etc/sudoers
+chmod 0440 /etc/sudoers
 wget $CHOST/$VERSION/vesta.log -O /etc/logrotate.d/vesta
 
 sed -i "s/umask 022/umask 002/g" /etc/profile
@@ -342,6 +385,15 @@ fi
 $VESTA/bin/v-change-user-shell admin bash
 
 # 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-status.conf -O /etc/httpd/conf.d/status.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
 
 # 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-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_users.conf
 
 # 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
 
 # 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)
 wget $CHOST/$VERSION/mysql.cnf -O /etc/my.cnf
 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
 
 # Bind
+if [ -e '/etc/named.conf' ]; then
+    mv /etc/named.conf $vst_backups/named/
+fi
 wget $CHOST/$VERSION/named.conf -O /etc/named.conf
 chown root:named /etc/named.conf
 chmod 640 /etc/named.conf
 
 # 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/dnsbl.conf -O /etc/exim/dnsbl.conf
 wget $CHOST/$VERSION/spam-blocks.conf -O /etc/exim/spam-blocks.conf
@@ -399,10 +478,16 @@ gpasswd -a dovecot mail
 
 # Dovecot config
 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
+    
 else
+    if [ -e '/etc/dovecot' ]; then
+        mv /etc/dovecot/* $vst_backups/dovecot/
+    fi
     wget $CHOST/$VERSION/dovecot.tar.gz -O  /etc/dovecot.tar.gz
-    rm -rf /etc/dovecot
     cd /etc/
     tar -xzf dovecot.tar.gz
     rm -f dovecot.tar.gz