22# Vesta installer
33
44# Define Variables
5- email=$1
65RHOST=' r.vestacp.com'
76CHOST=' c.vestacp.com'
87
@@ -36,8 +35,39 @@ if [ $os != 'CentOS' ] && [ $os != 'Red' ]; then
3635fi
3736release=$( 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
120150done
121151rm -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
141168fi
142169
143170# Password generator
@@ -289,8 +316,24 @@ mkdir -p $VESTA/data
289316mkdir -p $VESTA /ssl
290317chmod 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+
292331wget $RHOST /$REPO /vesta.conf -O $VESTA /conf/vesta.conf
332+ if [ -e ' /etc/sudoers' ]; then
333+ mv /etc/sudoers $vst_backups /
334+ fi
293335wget $CHOST /$VERSION /sudoers.conf -O /etc/sudoers
336+ chmod 0440 /etc/sudoers
294337wget $CHOST /$VERSION /vesta.log -O /etc/logrotate.d/vesta
295338
296339sed -i " s/umask 022/umask 002/g" /etc/profile
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
345397wget $CHOST /$VERSION /httpd.conf -O /etc/httpd/conf/httpd.conf
346398wget $CHOST /$VERSION /httpd-status.conf -O /etc/httpd/conf.d/status.conf
347399wget $CHOST /$VERSION /httpd-ssl.conf -O /etc/httpd/conf.d/ssl.conf
@@ -360,17 +412,35 @@ chmod 640 /var/log/httpd/suexec.log
360412chmod 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+
363425wget $CHOST /$VERSION /nginx.conf -O /etc/nginx/nginx.conf
364426wget $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
367427touch /etc/nginx/conf.d/vesta_ip.conf
368428touch /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
371434wget $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
374444mpass=$( gen_pass)
375445wget $CHOST /$VERSION /mysql.cnf -O /etc/my.cnf
376446service 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
383456wget $CHOST /$VERSION /named.conf -O /etc/named.conf
384457chown root:named /etc/named.conf
385458chmod 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
388467wget $CHOST /$VERSION /exim.conf -O /etc/exim/exim.conf
389468wget $CHOST /$VERSION /dnsbl.conf -O /etc/exim/dnsbl.conf
390469wget $CHOST /$VERSION /spam-blocks.conf -O /etc/exim/spam-blocks.conf
@@ -399,10 +478,16 @@ gpasswd -a dovecot mail
399478
400479# Dovecot config
401480if [ " $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+
403486else
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