自动安装php7(配置未优化版本)

#!/bin/bash
#by dxd in 2017-6
#only suit for centos/aliyun os, and based on aliyun install script

CURR_PATH=$(pwd)


DOWNLOAD_LIBMCRYPT_URL=http://download.verymall.cn/libmcrypt-2.5.8.tar.gz
DOWNLOAD_PHP7_URL=http://download.verymall.cn/php7.bz2
DOWNLOAD_PHP_INI_URL=http://download.verymall.cn/php7.ini
PHP_INSTALL_PATH=/alidata/server/php7
PHP_FPM_PORT=9001


function check_user()
{
    if [ "$(whoami)" != "root" ] 
    then
        echo "please run as root"
        exit 1
    fi
}

function update_linux()
{
    yum update && yum upgrade
    yum groupinstall "Development Tools"
    yum install gcc gcc-c++ pcre* openssl* gd-devel* zlib-devel pcre-devel libxml2-devel curl-devel
}

function check_curr_path_auth()
{
    if [ ! -w $CURR_PATH ]
    then
        echo "current path has no write auth"
        exit 1
    fi
}

function is_curr_path_legal()
{
    if [ "$(ls | grep install.sh)" == "" ]
    then
        echo "path is illegal"
        exit 1
    fi
}

function check_gcc()
{
    which gcc > /dev/null 2>&1
    if [ "$?" != "0" ]
    then
        echo "please install gcc first"
        exit 1
    fi
}

function check_fpm_port()
{
    if [ -n "$(lsof -i:$PHP_FPM_PORT)" ]
    then
        echo "PORT $PHP_FPM_PORT is occupied"
        exit 1
    fi
}

function check_alidata_path()
{
    if [ ! -d /alidata ]
    then
        mkdir /alidata
    fi

    if [ ! -d /alidata/server ]
    then
        echo "alidata server has not been installed"
        exit 1
    fi

    mkdir $PHP_INSTALL_PATH
}

function install_dos2unix()
{
    which dos2unix > /dev/null 2>&1
    if [ "$?" != "0" ]
    then
        yum install dos2unix
    fi
}

function download_and_install_libmcrypt()
{
    if [ -a ./libmcrypt-2.5.8.tar.gz ] && [ -n "$(md5sum ./libmcrypt-2.5.8.tar.gz | grep 0821830d930a86a5c69110837c55b7da)" ]
    then
        echo "./libmcrypt-2.5.8.tar.gz exist"
    else
        rm -f ./libmcrypt-2.5.8.tar.gz
        wget $DOWNLOAD_LIBMCRYPT_URL
    fi

    tar -zxvf ./libmcrypt-2.5.8.tar.gz
    cd ./libmcrypt-2.5.8
    ./configure
    make
    make install

    cd $CURR_PATH
}

function update_ld()
{
    if [ -z "$(cat /etc/ld.so.conf | grep /usr/local/lib)" ]
    then
        echo "/usr/local/lib" >> /etc/ld.so.conf
    fi

    if [ -z "$(cat /etc/ld.so.conf | grep /usr/lib64)" ]
    then
        echo "/usr/lib64" >> /etc/ld.so.conf
    fi

    ldconfig
}

function download_php7()
{
    cd $CURR_PATH 

    if [ -a ./php7.bz2 ] && [ -n "$(md5sum ./php7.bz2 | grep fb88987cd0c7fefa527f2170a2617f78)" ]
    then
        echo "./php7.bz2 exist"
    else
        rm -f ./php7.bz2
        wget $DOWNLOAD_PHP7_URL
    fi

    #uncompress bz2 file
    tar -xvf ./php7.bz2 > /dev/null
}

function install_php7()
{
    cd $CURR_PATH 
    cd ./php-7.1.6

    mkdir /usr/lib64/
    ln -s /usr/local/lib/libiconv.so.2 /usr/lib64/

    ./configure \
    --prefix=$PHP_INSTALL_PATH \
    --exec-prefix=$PHP_INSTALL_PATH \
    --bindir=$PHP_INSTALL_PATH/bin \
    --sbindir=$PHP_INSTALL_PATH/sbin \
    --includedir=$PHP_INSTALL_PATH/include \
    --libdir=$PHP_INSTALL_PATH/lib/php \
    --mandir=$PHP_INSTALL_PATH/php/man \
    --with-config-file-path=$PHP_INSTALL_PATH/etc \
    --with-mcrypt=/usr/include \
    --with-mhash \
    --with-openssl \
    --with-mysqli=shared,mysqlnd \
    --with-pdo-mysql=shared,mysqlnd \
    --with-gd \
    --with-iconv \
    --with-zlib \
    --enable-zip \
    --enable-inline-optimization \
    --disable-debug \
    --disable-rpath \
    --enable-shared \
    --enable-xml \
    --enable-bcmath \
    -enable-shmop \
    --enable-sysvsem \
    --enable-mbregex \
    --enable-mbstring \
    --enable-ftp \
    --enable-gd-native-ttf \
    --enable-pcntl \
    --enable-sockets \
    --with-xmlrpc \
    --enable-soap \
    --without-pear \
    --with-gettext \
    --enable-session \
    --with-curl \
    --with-jpeg-dir \
    --with-freetype-dir \
    --enable-opcache \
    --enable-fpm \
    --without-gdbm \
    --enable-fileinfo
#    --disable-fileinfo
    
    make ZEND_EXTRA_LIBS='-liconv'
    make install
}

function config_php7()
{
    if [ ! -a $PHP_INSTALL_PATH/etc/php-fpm.conf ]
    then
        cp $PHP_INSTALL_PATH/etc/php-fpm.conf.default $PHP_INSTALL_PATH/etc/php-fpm.conf
    fi
    
    if [ ! -a $PHP_INSTALL_PATH/etc/php-fpm.d/www.conf ]
    then
        cp $PHP_INSTALL_PATH/etc/php-fpm.d/www.conf.default $PHP_INSTALL_PATH/etc/php-fpm.d/www.conf
    fi

    if [ -z "$(cat $PHP_INSTALL_PATH/etc/php-fpm.conf | grep 127)" ]
    then
        echo "listen = 127.0.0.1:$PHP_FPM_PORT" >> $PHP_INSTALL_PATH/etc/php-fpm.conf
        echo "listen.backlog = -1" >> $PHP_INSTALL_PATH/etc/php-fpm.conf
        echo "listen.owner = www" >> $PHP_INSTALL_PATH/etc/php-fpm.conf
        echo "listen.group = www" >> $PHP_INSTALL_PATH/etc/php-fpm.conf
        echo "listen.mode = 0666" >> $PHP_INSTALL_PATH/etc/php-fpm.conf
        echo "user = www" >> $PHP_INSTALL_PATH/etc/php-fpm.conf
        echo "group = www" >> $PHP_INSTALL_PATH/etc/php-fpm.conf
    fi

    if [ ! -a $PHP_INSTALL_PATH/etc/php.ini ]
    then
        wget $DOWNLOAD_PHP_INI_URL -O $PHP_INSTALL_PATH/etc/php.ini
    fi
}

function start_php_fpm()
{
    $PHP_INSTALL_PATH/sbin/php-fpm
}

check_user
update_linux
is_curr_path_legal
check_curr_path_auth
check_gcc
check_fpm_port
check_alidata_path
install_dos2unix
download_and_install_libmcrypt
update_ld
download_php7
install_php7
config_php7
start_php_fpm

echo "php7 install successfully"
exit 0

 

博主附后:

启动php7 phpfpm
/alidata/server/php7/sbin/php-fpm


关闭php7 phpfpm
lsof -i :9001 | cut -d " " -f 2 | xargs kill -9

for i in $(lsof -i :9001 | cut -d " " -f 2)
do
kill $i
done

posted on 2017-06-21 23:49  咚..咚  阅读(195)  评论(0编辑  收藏  举报

导航