首页 > > > 业务初始化-lamp脚本
业务初始化-lamp脚本
#!/bin/bash
#lamp install script from Bai Shuming
#date:2015-05-15
#release 1.0
#os rhel6
PACKAGES="../soft"
NOW=`pwd`
APR=apr-1.5.2.tar.bz2
APR_UTIL=apr-util-1.5.4.tar.bz2
APR_ICONV=apr-iconv-1.2.1.tar.bz2
APACHE=httpd-2.4.12.tar.bz2
D_PATH="/usr/local"
S_PATH="/usr/src"
MYSQL=mysql-5.5.29.tar.gz
LIBICONV=libiconv-1.14.tar.gz
LIBMCRYPT=libmcrypt-2.5.8.tar.gz
MCRYPT=mcrypt-2.6.8.tar.gz
MHASH=mhash-0.9.9.9.tar.gz
PHP=php-5.6.9.tar.bz2
######check
check () {
#必须是root用户才可以
[ $UID -ne 0 ]&&echo "need to root is that"&&exit 1
#安装依赖
yum search elinks &>/dev/null
if [ $? -eq 0 ];then
yum -y install gcc gcc-c++ openssl-devel pcre-devel ncurses-devel libtool libxml2-devel bzip2-devel net-snmp-devel curl-devel libpng-devel freetype-devel libjpeg-devel zlib-devel cmake
[ $? -ne 0 ]&&echo "YUM: ERROR"&&exit 1
else
echo "YUM: ERROR";exit 1
fi
}
######apr
apr () {
if [ -f $PACKAGES/$APR ];then
tar xf $PACKAGES/$APR -C $S_PATH
CUR_PACKAGE=`echo $APR|awk -F ".tar" '{print $1}'`
if [ -d $S_PATH/$CUR_PACKAGE ];then
cd $S_PATH/$CUR_PACKAGE
./configure --prefix=$D_PATH/apr 1>/dev/null
if [ $? -eq 0 ];then
make 1>/dev/null
if [ $? -eq 0 ];then
make install 1>/dev/null
if [ $? -ne 0 ];then
echo "APR: Make install ERROR , EXIT...";exit 1
else
cd -;rm -rf $S_PATH/$CUR_PACKAGE
fi
else
echo "APR: make ERROR , EXIT...";exit 1
fi
else
echo "APR: Configure ERROR , EXIT...";exit 1
fi
else
echo "APR: Tar Command ERROR , EXIT...";exit 1
fi
else
echo "APR: Not fount $APR , EIXT...";exit 1
fi
}
######apr-util
apr_util () {
if [ -f $PACKAGES/$APR_UTIL ];then
tar xf $PACKAGES/$APR_UTIL -C $S_PATH
CUR_PACKAGE=`echo $APR_UTIL|awk -F ".tar" '{print $1}'`
if [ -d $S_PATH/$CUR_PACKAGE ];then
cd $S_PATH/$CUR_PACKAGE
./configure --prefix=$D_PATH/apr-util --with-apr=$D_PATH/apr/ 1>/dev/null
if [ $? -eq 0 ];then
make 1>/dev/null
if [ $? -eq 0 ];then
make install 1>/dev/null
if [ $? -ne 0 ];then
echo "APR-util: Make install ERROR , EXIT...";exit 1
else
cd -;rm -rf $S_PATH/$CUR_PACKAGE
fi
else
echo "APR-util: make ERROR , EXIT...";exit 1
fi
else
echo "APR-util: Configure ERROR , EXIT...";exit 1
fi
else
echo "APR-util: Tar Command ERROR , EXIT...";exit 1
fi
else
echo "APR-util: Not fount $APR_UTIL , EIXT...";exit 1
fi
}
apr_iconv () {
if [ -f $PACKAGES/$APR_ICONV ];then
tar xf $PACKAGES/$APR_ICONV -C $S_PATH
CUR_PACKAGE=`echo $APR_ICONV|awk -F ".tar" '{print $1}'`
if [ -d $S_PATH/$CUR_PACKAGE ];then
cd $S_PATH/$CUR_PACKAGE
./configure --prefix=$D_PATH/apr-iconv --with-apr=$D_PATH/apr/ 1>/dev/null
if [ $? -eq 0 ];then
make 1>/dev/null
if [ $? -eq 0 ];then
make install 1>/dev/null
if [ $? -ne 0 ];then
echo "APR-iconv: Make install ERROR , EXIT...";exit 1
else
cd -;rm -rf $S_PATH/$CUR_PACKAGE
fi
else
echo "APR-iconv: make ERROR , EXIT...";exit 1
fi
else
echo "APR-iconv: Configure ERROR , EXIT...";exit 1
fi
else
echo "APR-iconv: Tar Command ERROR , EXIT...";exit 1
fi
else
echo "APR-iconv: Not fount $APR_ICONV , EIXT...";exit 1
fi
}
apache () {
apr;apr_util;apr_iconv
[ $? -ne 0 ]&&"ERROR: Please check apr install" && exit 1
if [ -f $PACKAGES/$APACHE ];then
tar xf $PACKAGES/$APACHE -C $S_PATH
CUR_PACKAGE=`echo $APACHE|awk -F ".tar" '{print $1}'`
if [ -d $S_PATH/$CUR_PACKAGE ];then
cd $S_PATH/$CUR_PACKAGE
./configure --prefix=$D_PATH/apache --with-apr=$D_PATH/apr --with-apr-util=$D_PATH/apr-util/ --enable-module=so --enable-deflate=shared --enable-expires=shared --enable-rewrite=shared --enable-cache --enable-file-cache --enable-mem-cache --enable-disk-cache --enable-static-support --enable-static-ab --disable-userdir --with-mpm=prefork --enable-nonportable-atomics --disable-ipv6 --with-sendfile 1>/dev/null
if [ $? -eq 0 ];then
make 1>/dev/null
if [ $? -eq 0 ];then
make install 1>/dev/null
if [ $? -ne 0 ];then
echo "APACHE: Make install ERROR , EXIT...";exit 1
else
cd - ;rm -rf $S_PATH/$CUR_PACKAGE
fi
else
echo "APACHE: make ERROR , EXIT...";exit 1
fi
else
echo "APACHE: Configure ERROR , EXIT...";exit 1
fi
else
echo "APACHE: Tar Command ERROR , EXIT...";exit 1
fi
else
echo "APACHE: Not fount $APACHE , EIXT...";exit 1
fi
}
######mysql
mysql_install_post_set () {
useradd -s /sbin/nologin -r mysql
mkdir -pv /usr/local/mysql/data
cp support-files/my-innodb-heavy-4G.cnf /etc/my.cnf
cp support-files/mysql.server /etc/init.d/mysql
chmod 755 /etc/init.d/mysql
chown mysql.mysql /usr/local/mysql/ -R
ln -s /usr/local/mysql/bin/* /usr/bin/
ln -s /usr/local/mysql/lib/* /usr/lib/
ln -s /usr/local/mysql/libexec/* /usr/local/libexec
ln -s /usr/local/mysql/share/man/man1/* /usr/share/man/man1
ln -s /usr/local/mysql/share/man/man8/* /usr/share/man/man8
sh scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ 1>/dev/null
}
mysql () {
if [ -f $PACKAGES/$MYSQL ];then
tar xf $PACKAGES/$MYSQL -C $S_PATH
CUR_PACKAGE=`echo $MYSQL|awk -F ".tar" '{print $1}'`
if [ -d $S_PATH/$CUR_PACKAGE ];then
cd $S_PATH/$CUR_PACKAGE
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data/ -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock -DWITH_INNODBBASE_STORAGE_ENGINE=1 -DENABLE_LOCAL_INFILE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DMYSQL_USER=mysql -DWITH_DEBUG=0 -DWITH_EMBEDED_SERVER=0 1>/dev/null
if [ $? -eq 0 ];then
make 1>/dev/null
if [ $? -eq 0 ];then
make install 1>/dev/null
if [ $? -ne 0 ];then
echo "MYSQL: Make install ERROR , EXIT...";exit 1
else
mysql_install_post_set
cd - ;rm -rf $S_PATH/$CUR_PACKAGE
fi
else
echo "MYSQL: make ERROR , EXIT...";exit 1
fi
else
echo "MYSQL: Configure ERROR , EXIT...";exit 1
fi
else
echo "MYSQL: Tar Command ERROR , EXIT...";exit 1
fi
else
echo "MYSQL: Not fount $APACHE , EIXT...";exit 1
fi
}
######php
libiconv () {
if [ -f $PACKAGES/$LIBICONV ];then
tar xf $PACKAGES/$LIBICONV -C $S_PATH
CUR_PACKAGE=`echo $LIBICONV|awk -F ".tar" '{print $1}'`
if [ -d $S_PATH/$CUR_PACKAGE ];then
cd $S_PATH/$CUR_PACKAGE
./configure --prefix=/usr/local --with-apr=$D_PATH/apr 1>/dev/null
if [ $? -eq 0 ];then
make 1>/dev/null
if [ $? -eq 0 ];then
make install 1>/dev/null
if [ $? -ne 0 ];then
echo "LIBICONV: Make install ERROR , EXIT...";exit 1
else
cd -;rm -rf $S_PATH/$CUR_PACKAGE
fi
else
echo "LIBICONV: make ERROR , EXIT...";exit 1
fi
else
echo "LIBICONV: Configure ERROR , EXIT...";exit 1
fi
else
echo "LIBICONV: Tar Command ERROR , EXIT...";exit 1
fi
else
echo "LIBICONV: Not fount $LIBICONV , EIXT...";exit 1
fi
}
libmcrypt () {
if [ -f $PACKAGES/$LIBMCRYPT ];then
tar xf $PACKAGES/$LIBMCRYPT -C $S_PATH
CUR_PACKAGE=`echo $LIBMCRYPT|awk -F ".tar" '{print $1}'`
if [ -d $S_PATH/$CUR_PACKAGE ];then
cd $S_PATH/$CUR_PACKAGE
./configure --prefix=$D_PATH/libmcrypt 1>/dev/null
if [ $? -eq 0 ];then
make 1>/dev/null
if [ $? -eq 0 ];then
make install 1>/dev/null
if [ $? -ne 0 ];then
echo "LIBMCRYPT: Make install ERROR , EXIT...";exit 1
else
/sbin/ldconfig
cd libltdl/
./configure --enable-ltdl-install 1>/dev/null
make 1>/dev/null
make install 1>/dev/null
if [ $? -eq 0 ];then
echo "export LD_LIBRARY_PATH=$D_PATH/libmcrypt/lib:LD_LIBRARY_PATH" >> /etc/profile
source /etc/profile
cd $NOW;rm -rf $S_PATH/$CUR_PACKAGE
else
echo "LIBMCRYPT(libltdl) ERROR,EXIT....";exit 1
fi
fi
else
echo "LIBMCRYPT: make ERROR , EXIT...";exit 1
fi
else
echo "LIBMCRYPT: Configure ERROR , EXIT...";exit 1
fi
else
echo "LIBMCRYPT: Tar Command ERROR , EXIT...";exit 1
fi
else
echo "LIBMCRYPT: Not fount $LIBMCRYPT , EIXT...";exit 1
fi
}
mhash () {
if [ -f $PACKAGES/$MHASH ];then
tar xf $PACKAGES/$MHASH -C $S_PATH
CUR_PACKAGE=`echo $MHASH|awk -F ".tar" '{print $1}'`
if [ -d $S_PATH/$CUR_PACKAGE ];then
cd $S_PATH/$CUR_PACKAGE
./configure 1>/dev/null
if [ $? -eq 0 ];then
make 1>/dev/null
if [ $? -eq 0 ];then
make install 1>/dev/null
if [ $? -ne 0 ];then
echo "MHASH: Make install ERROR , EXIT...";exit 1
else
ln -s /usr/local/lib/* /usr/lib/
ln -s /usr/local/bin/libmcrypt-config /usr/bin/
cd -;rm -rf $S_PATH/$CUR_PACKAGE
fi
else
echo "MHASH: make ERROR , EXIT...";exit 1
fi
else
echo "MHASH: Configure ERROR , EXIT...";exit 1
fi
else
echo "MHASH: Tar Command ERROR , EXIT...";exit 1
fi
else
echo "MHASH: Not fount $MHASH , EIXT...";exit 1
fi
}
mcrypt () {
if [ -f $PACKAGES/$MCRYPT ];then
tar xf $PACKAGES/$MCRYPT -C $S_PATH
CUR_PACKAGE=`echo $MCRYPT|awk -F ".tar" '{print $1}'`
if [ -d $S_PATH/$CUR_PACKAGE ];then
cd $S_PATH/$CUR_PACKAGE
./configure --with-libmcrypt-prefix=$D_PATH/libmcrypt 1>/dev/null
if [ $? -eq 0 ];then
make 1>/dev/null
if [ $? -eq 0 ];then
make install 1>/dev/null
if [ $? -ne 0 ];then
echo "MCRYPT: Make install ERROR , EXIT...";exit 1
else
cd -;rm -rf $S_PATH/$CUR_PACKAGE
fi
else
echo "MCRYPT: make ERROR , EXIT...";exit 1
fi
else
echo "MCRYPT: Configure ERROR , EXIT...";exit 1
fi
else
echo "MCRYPT: Tar Command ERROR , EXIT...";exit 1
fi
else
echo "MCRYPT: Not fount $MCRYPT, EIXT...";exit 1
fi
}
php () {
libiconv;libmcrypt;mhash;mcrypt
[ $? -ne 0 ]&&echo "check php libiconv and encrypt install"&&exit 1
if [ -f $PACKAGES/$PHP ];then
tar xf $PACKAGES/$PHP -C $S_PATH
CUR_PACKAGE=`echo $PHP|awk -F ".tar" '{print $1}'`
if [ -d $S_PATH/$CUR_PACKAGE ];then
cd $S_PATH/$CUR_PACKAGE
./configure --prefix=$D_PATH/php --with-config-file-path=$D_PATH/php/etc --with-mysql=$D_PATH/mysql/ --with-mysqli=$D_PATH/mysql/bin/mysql_config --with-pdo-mysql=$D_PATH/mysql --with-iconv-dir=/usr/local/ --enable-fpm --with-fpm-user=apache --with-fpm-group=apache --with-pcre-regex --with-zlib --with-bz2 --enable-calendar --disable-phar --with-curl --enable-dba --with-libxml-dir --enable-ftp --with-gd --with-jpeg-dir --with-png-dir --with-zlib-dir --with-freetype-dir --enable-gd-native-ttf --enable-gd-jis-conv --with-mhash --enable-mbstring --with-mcrypt=$D_PATH/libmcrypt --enable-opcache=no --enable-pcntl --enable-xml --disable-rpath --enable-shmop --enable-sockets --enable-zip --enable-bcmath --with-snmp --disable-ipv6 --disable-rpath --disable-debug --with-apxs2=$D_PATH/apache/bin/apxs 1>/dev/null
if [ $? -eq 0 ];then
make ZEND_EXTRA_LIBS='-liconv' 1>/dev/null
if [ $? -eq 0 ];then
make install 1>/dev/null
if [ $? -ne 0 ];then
echo "PHP: Make install ERROR , EXIT...";exit 1
else
sed -i.bak '/libphp5.so/a\AddType application/x-httpd-php .php' $D_PATH/apache/conf/httpd.conf
cp php.ini-production $D_PATH/php/etc/php.ini
cd -;rm -rf $S_PATH/$CUR_PACKAGE
fi
else
echo "PHP: make ERROR , EXIT...";exit 1
fi
else
echo "PHP: Configure ERROR , EXIT...";exit 1
fi
else
echo "PHP: Tar Command ERROR , EXIT...";exit 1
fi
else
echo "PHP: Not fount $PHP, EIXT...";exit 1
fi
}
case $1 in
apache) check;apache;;
mysql) check;mysql;;
php) check;php;;
lamp) check;apache;mysql;php;;
*) echo "$0: apache|mysql|php|lamp";;
esac
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/2730/viewspace-3154239/ ,如需转载,请注明出处,否则将追究法律责任。