#!/bin/sh
alias
echo
=
`echo -e`
machine=`
uname
-m`
if
[ $machine != x86_64 ] ;
then
echo
"e[1;31m
your system is 32bit,but this script is only run on 64bit !
e[0m"
exit
-1
fi
mkdir
/usr/local/src/auto_install
&>
/dev/null
source_dir=
/usr/local/src/auto_install
function
interact {
echo
"Please input "yes" or "no""
read
choice
case
"$choice"
in
no)
exit
0;;
yes
)
echo
;;
*)
echo
"e[1;31mInput Errot! e[0m"
exit
-1;;
esac
}
function
check {
if
[ $? -
ne
0 ];
then
echo
"e[1;31m
the last commond exec failed,please check it !e[0m
"
sleep
1
exit
-1
fi
}
function
download_install_epel {
cd
$source_dir
rm
-f epel* &>
/dev/null
echo
"e[1;32m ---yum install epel repo--- e[0m
"
sys_version=`
uname
-r|
cut
-d
`.`
-f 4`
if
[ $sys_version = el7 ];
then
rpm -qa|
grep
-i epel >
/dev/null
if
[ $? -
ne
0 ];
then
wget -nv http:
//www
.example.com
/epel-release-7-2
.noarch.rpm
rpm -ivh $source_dir
/epel-release-7-1
.noarch.rpm
check;
fi
elif
[ $sys_version = el6 ];
then
rpm -qa|
grep
-i epel >
/dev/null
if
[ $? -
ne
0 ];
then
wget -nv http:
//www
.example.com
/epel-release-6-8
.noarch.rpm
rpm -ivh $source_dir
/epel-release-6-8
.noarch.rpm
check;
fi
fi
}
function
download_nginx {
cd
$source_dir
echo
"e[1;32m
---download nginx-1.4.7---e[0m
"
ls
nginx-1.4.7.
tar
.gz &>
/dev/null
if
[ $? -
ne
0 ];
then
wget -nv http:
//www
.example.com
/nginx-1
.4.7.
tar
.gz
check;
fi
}
function
download_mysql {
cd
$source_dir
echo
"e[1;32m
---download MySQL-5.5.39---e[0m
"
ls
mysql-5.5.39-linux2.6-x86_64.
tar
.gz &>
/dev/null
if
[ $? -
ne
0 ];
then
wget -nv http:
//www
.example.com
/mysql-5
.5.39-linux2.6-x86_64.
tar
.gz
check;
fi
}
function
download_php {
cd
$source_dir
echo
"e[1;32m
---download php-5.3.28---e[0m
"
ls
php-5.3.28.
tar
.gz &>
/dev/null
if
[ $? -
ne
0 ];
then
wget -nv http:
//www
.example.com
/php-5
.3.28.
tar
.gz
check;
fi
}
function
download_jre {
cd
$source_dir
echo
"e[1;32m ---download jre-6u33-linux-x64.bin---e[0m"
sleep
1
ls
jre-6u33-linux-x64.bin &>
/dev/null
if
[ $? -
ne
0 ];
then
wget -nv http:
//www
.example.com
/jre-6u33-linux-x64
.bin
check;
fi
}
function
dependence_install {
download_install_epel;
echo
"e[1;32m ---yum install the Dependencies software--- e[0m
"
sleep
1
pgrep yum|
xargs
kill
-9 >
/dev/null
rm
-f
/var/run/yum
.pid >
/dev/null
echo
"yum
install
gcc zlib cmake libxml2 libxml2-devel
bzip2
bzip2
-devel curl curl-devel libjpeg libjpeg-devel libpng libpng-devel freetype-devel pspell-devel libmcrypt libm
crypt-devel freetype pcre-devel openssl openssl-devel libaio*"
yum -y
install
gcc zlib cmake libxml2 libxml2-devel
bzip2
bzip2
-devel curl curl-devel libjpeg libjpeg-devel libpng libpng-devel freetype-devel pspell-devel libmcrypt libmcry
pt-devel freetype pcre-devel openssl openssl-devel libaio* >
/dev/null
2>&1
check;
}
function
mysql_install {
echo
"e[1;32m
---check if there is already installed mysql instence---e[0m
"
ps
-ef|
grep
-w mysqld|
grep
-
v
"grep"
&>
/dev/null
if
[ $? -
eq
0 ];
then
mysqlbasedir=`
ps
-ef|
grep
-w
"mysqld"
|
grep
-
v
"grep"
|
awk
`{print $9}`
|
tr
-d
`--`
`
mysqldatadir=`
ps
-ef|
grep
-w
"mysqld"
|
grep
-
v
"grep"
|
awk
`{print $10}`
|
tr
-d
`--`
`
echo
"e[1;32m your system has run a mysql instance already
mysqlbasedir is: "
$mysqlbasedir
"
mysqldatadir is: "
$mysqldatadir
"
do you still want to install a new mysql-server? e[0m
"
interact;
fi
echo
"MySQL-server-5.5.39-2.el6.x86_64.rpm"
|
while
read
line
do
prefix=`
echo
"$line"
|
awk
-F
"-"
`{print $1"-"$2}`
`
rpm -qa|
grep
-i
"$prefix"
&>
/tmp/check_mysql
.log
if
[ $? -
eq
0 ];
then
already_install=`
cat
/tmp/check_mysql
.log|
awk
-F
"-"
`{print $1"-"$2"-"$3}`
`
echo
"e[1;31m ---the $already_install is already installed by rpm!---
---Do you really want to install a new mysql?--- e[0m
"
interact;
fi
done
chkconfig |
grep
mysql|
awk
`{print $5" "$7}`
|
grep
-e
"啟用"
-e
"on"
&>
/dev/null
if
[ $? -
eq
0 ];
then
echo
" there is a bootstart mysql script in the chkconfig,please check"
exit
0
fi
cat
/etc/rc
.
local
|
grep
"mysqld"
&>
/dev/null
if
[ $? -
eq
0 ];
then
echo
" there is a bootstart mysql commond in the /etc/rc.local,please check it"
exit
0
fi
rpm -qa|
grep
-i -e
"mysql.*5.1.*"
|
xargs
rpm -e --nodeps 2>
/dev/null
echo
"e[1;31m where do you want to install mysql(default is /usr/local/mysql)e[0m"
read
mybasedir
if
[
"$mybasedir"
=
""
];
then
mybasedir=
/usr/local/mysql
fi
echo
"e[1;31m where do you want to storage mysql data(default is /usr/local/mysql/data)e[0m"
read
mydatadir
if
[
"$mydatadir"
=
""
];
then
mydatadir=
/usr/local/mysql/data
fi
echo
"e[1;32m ---now start to install mysql---e[0m
"
sleep
1
echo
"e[1;32m ---add user mysql---e[0m"
useradd
mysql -s
/sbin/nologin
echo
"e[1;32m
---unpack mysql-5.5.39-linux2.6-x86_64.tar.gz---e[0m"
cd
$source_dir
tar
zxf mysql-5.5.39-linux2.6-x86_64.
tar
.gz
check;
rm
-rf $mybasedir
mv
mysql-5.5.39-linux2.6-x86_64 $mybasedir
ls
/etc/my
.cnf &>
/dev/null
if
[ $? = 0 ];
then
mv
/etc/my
.cnf
/etc/my
.cnf.bak
echo
"e[1;32m
---detected /etc/my.cnf is already exit,rename it to /etc/my.cnf.bak--- e[0m
"
fi
cp
$mybasedir
/support-files/my-huge
.cnf
/etc/my
.cnf
ls
/etc/init
.d
/mysql
&>
/dev/null
if
[ $? = 0 ];
then
mv
/etc/init
.d
/mysql
/etc/init
.d
/mysql
.bak
echo
"e[1;32m ---detected /etc/init.d/mysql is already exit,rename it to /etc/init.d/mysql.bak---e[0m"
fi
cp
$mybasedir
/support-files/mysql
.server
/etc/init
.d
/mysql
sed
-i -e
"/^basedir*=$/iasedir=$mybasedir"
-e
"/^datadir*=$/idatadir=$mydatadir"
/etc/init
.d
/mysql
sed
-i -e
`/^basedir*=$/d`
-e
`/^datadir*=$/d`
/etc/init
.d
/mysql
echo
"e[1;32m
---initialize mysql database---e[0m"
sleep
1
chown
-R mysql $mydatadir $mybasedir >
/dev/null
2>&1
$mybasedir
/scripts/mysql_install_db
--defaults-
file
=
/etc/my
.cnf --user=mysql --basedir=$mybasedir --datadir=$mydatadir
check;
echo
"PATH=$PATH:$mybasedir/bin"
>>
/etc/profile
export
PATH=$PATH:$mybasedir
/bin
echo
"e[1;32m install mysql success,you can run "service mysql start" to start the mysql
do not forget to set a password for mysql e[0m"
}
function
nginx_install {
echo
echo
"e[1;32m ---start installing nginx,it`s basedir is /usr/local/nginx--- e[0m
"
sleep
1
cd
$source_dir
ls
-l |
grep
"^d"
|
grep
nginx|
xargs
rm
-rf &>
/dev/null
tar
zxf nginx-1.4.7.
tar
.gz
check;
cd
nginx-1.4.7
echo
"e[1;32m ---configure: configure information in /tmp/configure_nginx.log--- e[0m
"
sleep
1
.
/configure
--with-http_stub_status_module --prefix=
/usr/local/nginx
&>
/tmp/configure_nginx
.log
check;
echo
"e[1;32m ---make: make information in /tmp/make_nginx.log--- e[0m
"
sleep
1
make
&>
/tmp/configure_nginx
.log
check;
echo
"e[1;32m ---make install: install into /usr/local/nginx--- e[0m
"
sleep
1
make
install
&>
/tmp/make_install
.log
check;
echo
"e[1;32m nginx is installed successfully e[0m
"
}
function
php_install {
dependence_install;
cd
$source_dir
ls
-l |
grep
"^d"
|
grep
php|
xargs
rm
-rf &>
/dev/null
tar
zxvf php-5.3.28.
tar
.gz &>
/dev/null
check;
cd
php-5.3.28
echo
echo
"e[1;32m ---configure php: information in /tmp/php_configure.log--- e[0m
"
echo
"./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysql --with-mysqli --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-discard-path --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curlwrappers --enable-mbregex --enable-fastcgi --enable-fpm --enable-force-cgi-redirect --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-iconv-dir=/usr/local --with-zlib --enable-zip --with-curl"
.
/configure
--prefix=
/usr/local/php
--with-config-
file
-path=
/usr/local/php/etc
--with-mysql --with-mysqli --with-freetype-
dir
--with-jpeg-
dir
--with-png-
dir
--with-zlib --with-libxml-
dir
=
/usr
--
enable
-xml --disable-rpath --
enable
-discard-path --
enable
-safe-mode --
enable
-bcmath --
enable
-shmop --
enable
-sysvsem --
enable
-inline-optimization --with-curlwrappers --
enable
-mbregex --
enable
-fastcgi --
enable
-fpm --
enable
-force-cgi-redirect --
enable
-mbstring --with-mcrypt --with-gd --
enable
-gd-native-ttf --with-openssl --with-mhash --
enable
-pcntl --
enable
-sockets --with-iconv-
dir
=
/usr/local
--with-zlib --
enable
-zip --with-curl &>
/tmp/php_configure
.log
check;
echo
"e[1;32m ---make php: information in /tmp/php_make.log--- e[0m
"
make
&>
/tmp/php_make
.log
check;
echo
"e[1;32m ---make install php: install into /usr/local/php---
---php cofigure file in the /usr/local/php/etc--- e[0m
"
make
install
>
/tmp/make_install_php
.log
check;
echo
"e[1;32m ---prepare php configure files--- e[0m
"
echo
"cp $source_dir/php-5.3.28/php.ini-production /usr/local/php/etc/php.ini"
cp
php.ini-production
/usr/local/php/etc/php
.ini
echo
"cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf"
cp
/usr/local/php/etc/php-fpm
.conf.default
/usr/local/php/etc/php-fpm
.conf
echo
"e[1;32m
php is installed successfully!
now,please start php and modification the php.ini e[0m"
}
function
jre_install {
rpm -qa|
grep
java|
xargs
rpm -e --nodeps
cd
$source_dir
rm
-rf jre1.6.0_33 &>
/dev/null
chmod
+x jre-6u33-linux-x64.bin &>
/dev/null
.
/jre-6u33-linux-x64
.bin >
/dev/null
2>&1
check;
ls
-d
/usr/java
if
[ $? -
ne
0 ];
then
mkdir
/usr/java
&>
/dev/null
else
echo
echo
"e[1;31m /usr/java has already exits,move to /usr/java_bak !e[0m"
mkdir
/usr/java_bak
&>
/dev/null
mv
/usr/java/
*
/usr/java_bak/
fi
mv
jre1.6.0_33
/usr/java/
echo
"e[1;32m
---add java path to /etc/profile---e[0m"
sleep
1
echo
>>
/etc/profile
echo
`JAVA_HOME=/usr/java/jre1.6.0_33`
>>
/etc/profile
echo
`CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/jre/lib/rt.jar`
>>
/etc/profile
echo
`PATH=$JAVA_HOME/bin:$PATH:$HOME/bin:$JAVA_HOME/jre/bin`
>>
/etc/profile
echo
`export PATH JAVA_HOME`
>>
/etc/profile
source
/etc/profile
echo
"e[1;32m
JRE is installed success !e[0m"
echo
"e[1;32m
---install cronolog---e[0m"
wget -nv http:
//www
.example.com
/cronolog-1
.6.2.
tar
.gz
dependence_install;
tar
zxf cronolog-1.6.2.
tar
.gz
cd
cronolog-1.6.2
.
/configure
&>
/tmp/cronolog_configure
.log &&
make
>
/dev/null
&&
make
install
>
/dev/null
check;
echo
"e[1;32m cronolog is installed successe[0m
"
}
echo
"e[1;31m
---選擇哪些軟體需要安裝--- e[0m
"
echo
"e[1;32m "Nginx" INPUT "1" e[0m
"
echo
"e[1;32m "Mysql" INPUT "2" e[0m
"
echo
"e[1;32m "Php" INPUT "3" e[0m
"
echo
"e[1;32m "JRE" INPUT "4" e[0m
"
read
-p
"please choice which software do you want to install ?"
input
if
[ $input = 1 ];
then
download_nginx;
dependence_install;
nginx_install;
elif
[ $input = 2 ];
then
download_mysql;
mysql_install;
elif
[ $input = 3 ];
then
echo
"e[1;32m
php needs mysqlclient e[0m"
echo
"e[1;32m so if you had already install a mysqlclient
please make a softlink for all "libmysqlclient.so.*" file to both /var/lib64 and /var/lib e[0m
"
echo
"e[1;31m Please input your choice
e[0m e[1;32m1: go on by default(install mysql-client-5.5.39)
2: I will check my "libmysqlclient.so.*" file and redo this script later
3: I had make the softlinks and I want to going on e[0m"
read
choice
case
"$choice"
in
1)
cd
$sourcedir
echo
"e[1;32m ---download mysql-client rpm files---e[0m"
wget -nv http:
//www
.example.com
/MySQL-client-5
.5.39-2.el6.x86_64.rpm
wget -nv http:
//www
.example.com
/MySQL-devel-5
.5.39-2.el6.x86_64.rpm
wget -nv http:
//www
.example.com
/MySQL-shared-5
.5.39-2.el6.x86_64.rpm
echo
"e[1;32m
---install mysql-client in the way of rpm---e[0m"
sleep
1
rpm -ivh MySQL-client-5.5.39-2.el6.x86_64.rpm MySQL-devel-5.5.39-2.el6.x86_64.rpm MySQL-shared-5.5.39-2.el6.x86_64.rpm
download_php;
ls
-l
/usr/lib64/libmysqlclient
*|
grep
-
v
"^l"
|
awk
`{print $NF}`
|
while
read
line
do
usrlib_fulldir=`
ls
-l
/usr/lib64/libmysqlclient
*|
grep
-
v
"^l"
|
awk
`{print $NF}`
|
sed
`s/lib64/lib/`
`
ln
-s $line $usrlib_fulldir
done
php_install;
;;
2)
exit
0;;
3)
download_php;
php_install;
;;
*)
echo
"Input Errot!"
&&
exit
-1;;
esac
elif
[ $input = 4 ];
then
download_jre;
jre_install;
else
echo
"e[1;31m your input is worng!e[0m"
sleep
1
exit
-1
fi