Ver código fonte

install: added backup procedure

Serghey Rodin 13 anos atrás
pai
commit
92e56e8c09
1 arquivos alterados com 99 adições e 14 exclusões
  1. 99 14
      install/vst-install.sh

+ 99 - 14
install/vst-install.sh

@@ -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
-    fi
-    echo 
-    echo "Ok, let's try..."
-    sleep 1
+    exit 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