Skip to content

Commit 92e56e8

Browse files
committed
install: added backup procedure
1 parent 7b19b4c commit 92e56e8

File tree

1 file changed

+99
-14
lines changed

1 file changed

+99
-14
lines changed

install/vst-install.sh

Lines changed: 99 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
# Vesta installer
33

44
# Define Variables
5-
email=$1
65
RHOST='r.vestacp.com'
76
CHOST='c.vestacp.com'
87

@@ -36,8 +35,39 @@ if [ $os != 'CentOS' ] && [ $os != 'Red' ]; then
3635
fi
3736
release=$(grep -o "[0-9]" /etc/redhat-release |head -n1)
3837

38+
help() {
39+
echo "usage: $0 [OPTIONS]
40+
-e, --email Define email address
41+
-h, --help Print this help and exit
42+
-f, --force Force installation"
43+
exit 1
44+
}
45+
46+
# Translating argument to --gnu-long-options
47+
for arg; do
48+
delim=""
49+
case "$arg" in
50+
--help) args="${args}-h " ;;
51+
--force) args="${args}-f " ;;
52+
--email) args="${args}-e " ;;
53+
*) [[ "${arg:0:1}" == "-" ]] || delim="\""
54+
args="${args}${delim}${arg}${delim} ";;
55+
esac
56+
done
57+
eval set -- "$args"
58+
59+
# Getopt
60+
while getopts "hfe:" Option; do
61+
case $Option in
62+
h) help ;; # Help
63+
e) email=$OPTARG ;; # Contact email
64+
f) force=yes ;; # Force install
65+
*) help ;; # Default
66+
esac
67+
done
68+
3969
# Are you sure ?
40-
if [ -z $1 ]; then
70+
if [ -z $email ]; then
4171
echo
4272
echo
4373
echo
@@ -120,24 +150,21 @@ for rpm in $rpms; do
120150
done
121151
rm -f $tmpfile
122152

123-
if [ ! -z "$conflicts" ]; then
153+
if [ ! -z "$conflicts" ] && [ -z "$force" ]; then
124154
echo
125155
echo '!!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!'
126156
echo
127157
echo 'Following rpm packages aleady installed:'
128158
echo "$conflicts"
129159
echo
160+
echo 'It is highly recommended to remove them before proceeding.'
161+
echo
162+
echo 'If you want to force installation run this script with -f option:'
163+
echo "Example: bash $0 --force"
130164
echo
131-
echo 'It is recommended to remove them before proceeding.'
132165
echo '!!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!'
133166
echo
134-
read -n 1 -p 'Do you really want to continue? [y/n]: ' answer
135-
if [ "$answer" != 'y' ] && [ "$answer" != 'Y' ]; then
136-
exit 1
137-
fi
138-
echo
139-
echo "Ok, let's try..."
140-
sleep 1
167+
exit 1
141168
fi
142169

143170
# Password generator
@@ -289,8 +316,24 @@ mkdir -p $VESTA/data
289316
mkdir -p $VESTA/ssl
290317
chmod 770 $VESTA/conf
291318

319+
# Make backup directory
320+
vst_backups="/root/vst_install_backups/$(date +%s)"
321+
mkdir -p $vst_backups
322+
mkdir -p $vst_backups/nginx
323+
mkdir -p $vst_backups/httpd
324+
mkdir -p $vst_backups/mysql
325+
mkdir -p $vst_backups/exim
326+
mkdir -p $vst_backups/dovecot
327+
mkdir -p $vst_backups/clamd
328+
mkdir -p $vst_backups/vsftpd
329+
mkdir -p $vst_backups/named
330+
292331
wget $RHOST/$REPO/vesta.conf -O $VESTA/conf/vesta.conf
332+
if [ -e '/etc/sudoers' ]; then
333+
mv /etc/sudoers $vst_backups/
334+
fi
293335
wget $CHOST/$VERSION/sudoers.conf -O /etc/sudoers
336+
chmod 0440 /etc/sudoers
294337
wget $CHOST/$VERSION/vesta.log -O /etc/logrotate.d/vesta
295338

296339
sed -i "s/umask 022/umask 002/g" /etc/profile
@@ -342,6 +385,15 @@ fi
342385
$VESTA/bin/v-change-user-shell admin bash
343386

344387
# Apache
388+
if [ -e '/etc/httpd/conf/httpd.conf' ]; then
389+
mv /etc/httpd/conf/httpd.conf $vst_backups/httpd/
390+
fi
391+
if [ -e '/etc/httpd/conf.d/ssl.conf' ]; then
392+
mv /etc/httpd/conf.d/ssl.conf $vst_backups/httpd/
393+
fi
394+
if [ -e '/etc/httpd/conf.d/proxy_ajp.conf' ]; then
395+
mv /etc/httpd/conf.d/proxy_ajp.conf $vst_backups/httpd/
396+
fi
345397
wget $CHOST/$VERSION/httpd.conf -O /etc/httpd/conf/httpd.conf
346398
wget $CHOST/$VERSION/httpd-status.conf -O /etc/httpd/conf.d/status.conf
347399
wget $CHOST/$VERSION/httpd-ssl.conf -O /etc/httpd/conf.d/ssl.conf
@@ -360,17 +412,35 @@ chmod 640 /var/log/httpd/suexec.log
360412
chmod 751 /var/log/httpd/domains
361413

362414
# Nginx
415+
if [ -e '/etc/nginx/nginx.conf' ]; then
416+
mv /etc/nginx/nginx.conf $vst_backups/nginx/
417+
fi
418+
if [ -f '/etc/nginx/conf.d/default.conf' ]; then
419+
mv /etc/nginx/conf.d/default.conf $vst_backups/nginx/
420+
fi
421+
if [ -e '/etc/nginx/conf.d/example_ssl.conf' ]; then
422+
mv /etc/nginx/conf.d/example_ssl.conf $vst_backups/nginx/
423+
fi
424+
363425
wget $CHOST/$VERSION/nginx.conf -O /etc/nginx/nginx.conf
364426
wget $CHOST/$VERSION/nginx-status.conf -O /etc/nginx/conf.d/status.conf
365-
rm -f /etc/nginx/conf.d/default.conf
366-
rm -f /etc/nginx/conf.d/example_ssl.conf
367427
touch /etc/nginx/conf.d/vesta_ip.conf
368428
touch /etc/nginx/conf.d/vesta_users.conf
369429

370430
# VsFTP
431+
if [ -e '/etc/vsftpd/vsftpd.conf' ]; then
432+
mv /etc/vsftpd/vsftpd.conf $vst_backups/vsftpd/
433+
fi
371434
wget $CHOST/$VERSION/vsftpd.conf -O /etc/vsftpd/vsftpd.conf
372435

373436
# MySQL
437+
if [ -e '/etc/my.cnf' ]; then
438+
mv /etc/my.cnf $vst_backups/mysql/
439+
fi
440+
441+
if [ -e '/root/.my.cnf' ]; then
442+
mv /root/.my.cnf $vst_backups/mysql/
443+
fi
374444
mpass=$(gen_pass)
375445
wget $CHOST/$VERSION/mysql.cnf -O /etc/my.cnf
376446
service mysqld start
@@ -380,11 +450,20 @@ $VESTA/bin/v-add-database-server mysql localhost 3306 root $mpass
380450
$VESTA/bin/v-add-database admin default default $(gen_pass) mysql
381451

382452
# Bind
453+
if [ -e '/etc/named.conf' ]; then
454+
mv /etc/named.conf $vst_backups/named/
455+
fi
383456
wget $CHOST/$VERSION/named.conf -O /etc/named.conf
384457
chown root:named /etc/named.conf
385458
chmod 640 /etc/named.conf
386459

387460
# Exim
461+
if [ -e '/etc/exim/exim.conf' ]; then
462+
mv /etc/exim/exim.conf $vst_backups/exim/
463+
fi
464+
if [ -e '/etc/clamd.conf' ]; then
465+
mv /etc/clamd.conf $vst_backups/clamd/
466+
fi
388467
wget $CHOST/$VERSION/exim.conf -O /etc/exim/exim.conf
389468
wget $CHOST/$VERSION/dnsbl.conf -O /etc/exim/dnsbl.conf
390469
wget $CHOST/$VERSION/spam-blocks.conf -O /etc/exim/spam-blocks.conf
@@ -399,10 +478,16 @@ gpasswd -a dovecot mail
399478

400479
# Dovecot config
401480
if [ "$release" -eq '5' ]; then
481+
if -e [ '/etc/dovecot.conf' ]; then
482+
mv /etc/dovecot.conf $vst_backups/dovecot/
483+
fi
402484
wget $CHOST/$VERSION/dovecot.conf -O /etc/dovecot.conf
485+
403486
else
487+
if [ -e '/etc/dovecot' ]; then
488+
mv /etc/dovecot/* $vst_backups/dovecot/
489+
fi
404490
wget $CHOST/$VERSION/dovecot.tar.gz -O /etc/dovecot.tar.gz
405-
rm -rf /etc/dovecot
406491
cd /etc/
407492
tar -xzf dovecot.tar.gz
408493
rm -f dovecot.tar.gz

0 commit comments

Comments
 (0)