Files
2017-05-30 22:09:10 +08:00

317 lines
5.2 KiB
Bash

#!/bin/bash
# this is a setup scripts for php
# author: luoning
# date: 09/06/2014
# setup php
PHP=php-5.6.6
PHP_DOWNLOAD_PATH=http://cn2.php.net/distributions/$PHP.tar.gz
INSTALL_DIR=/usr/local/php5
PHP_FPM_CONF=php-fpm.conf
PHP_INI=php.ini
MAKE=make
CPU_NUM=`cat /proc/cpuinfo | grep processor | wc -l`
print_hello(){
echo "==========================================="
echo "$1 php for TeamTalk"
echo "==========================================="
}
check_user() {
if [ $(id -u) != "0" ]; then
echo "Error: You must be root to run this script, please use root to install php"
exit 1
fi
}
check_os() {
OS_VERSION=$(less /etc/redhat-release)
OS_BIT=$(getconf LONG_BIT)
#echo "$OS_VERSION, $OS_BIT bit..."
if [[ $OS_VERSION =~ "CentOS" ]]; then
if [ $OS_BIT == 64 ]; then
return 0
else
echo "Error: OS must be CentOS 64bit to run this script."
exit 1
fi
else
echo "Error: OS must be CentOS 64bit to run this script."
exit 1
fi
}
check_run() {
ps -ef | grep -v 'grep' | grep php-fpm
if [ $? -eq 0 ]; then
echo "Error: php-fpm is running."
exit 1
fi
}
clean_yum() {
YUM_PID=/var/run/yum.pid
if [ -f "$YUM_PID" ]; then
set -x
rm -f YUM_PID
killall yum
set +x
fi
}
download() {
if [ -f "$1" ]; then
echo "$1 existed."
else
echo "$1 not existed, begin to download..."
wget $2
if [ $? -eq 0 ]; then
echo "download $1 successed";
else
echo "Error: download $1 failed";
return 1;
fi
fi
return 0
}
# building php
build_php() {
gunzip -c $PHP.tar.gz | tar xf -
cd $PHP
./configure --prefix=$INSTALL_DIR \
--with-config-file-path=$INSTALL_DIR/etc \
--enable-fpm \
--enable-gd-native-ttf \
--with-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-curl \
#--with-apxs2 \
--with-zlib \
--with-zlib-dir \
--with-libxml-dir \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-gd
$MAKE -j $CPU_NUM
if [ $? -eq 0 ]; then
echo "make php successed";
else
echo "Error: make php failed";
return 1;
fi
$MAKE install
if [ $? -eq 0 ]; then
echo "install php successed";
else
echo "Error: install php failed";
return 1;
fi
cd ..
return 0
}
# modify and copy php.ini
modify_php() {
set -x
cp ./conf/$PHP_FPM_CONF $INSTALL_DIR/etc/$PHP_FPM_CONF
chmod 755 $INSTALL_DIR/etc/$PHP_FPM_CONF
cp ./conf/$PHP_INI $INSTALL_DIR/etc/$PHP_INI
chmod 755 $INSTALL_DIR/etc/$PHP_INI
killall php-fpm
$INSTALL_DIR/sbin/php-fpm
set +x
netstat -antpl
}
build_zlib() {
clean_yum
yum -y install zlib-devel
if [ $? -eq 0 ]; then
echo "yum install zlib-devel successed."
else
echo "Error: yum install zlib-devel failed."
return 1;
fi
}
build_jpeg() {
clean_yum
yum -y install libjpeg-devel
if [ $? -eq 0 ]; then
echo "yum install libjpeg-devel successed."
else
echo "Error: yum install libjpeg-devel failed."
return 1;
fi
}
build_freetype() {
clean_yum
yum -y install freetype-devel
if [ $? -eq 0 ]; then
echo "yum install freetype-devel successed."
else
echo "Error: yum install freetype-devel failed."
return 1;
fi
}
build_png() {
clean_yum
yum -y install libpng-devel
if [ $? -eq 0 ]; then
echo "yum install libpng-devel successed."
else
echo "Error: yum install libpng-devel failed."
return 1;
fi
}
build_gd() {
clean_yum
yum -y install php-gd
if [ $? -eq 0 ]; then
echo "yum install php-gd successed."
else
echo "Error: yum install php-gd failed."
return 1;
fi
}
build_xml() {
clean_yum
yum -y install libxml2-devel
if [ $? -eq 0 ]; then
echo "yum install libxml2-devel successed."
else
echo "Error: yum install libxml2-devel failed."
return 1;
fi
}
build_curl() {
clean_yum
yum -y install curl-devel
if [ $? -eq 0 ]; then
echo "yum install curl-devel successed."
else
echo "Error: yum install curl-devel failed."
return 1;
fi
}
build_all()
{
#yum -y install yum-fastestmirror
build_zlib
if [ $? -eq 0 ]; then
echo "build zlib successed."
else
echo "Error: build zlib failed."
exit 1
fi
build_jpeg
if [ $? -eq 0 ]; then
echo "build jpeg successed."
else
echo "Error: build jpeg failed."
exit 1
fi
build_freetype
if [ $? -eq 0 ]; then
echo "build freetype successed."
else
echo "Error: build freetype failed."
exit 1
fi
build_png
if [ $? -eq 0 ]; then
echo "build png successed."
else
echo "Error: build png failed."
exit 1
fi
build_gd
if [ $? -eq 0 ]; then
echo "build gd successed."
else
echo "Error: build gd failed."
exit 1
fi
build_xml
if [ $? -eq 0 ]; then
echo "build xml successed."
else
echo "Error: build xml failed."
exit 1
fi
build_curl
if [ $? -eq 0 ]; then
echo "build curl successed."
else
echo "Error: build curl failed."
exit 1
fi
download $PHP.tar.gz $PHP_DOWNLOAD_PATH
if [ $? -eq 1 ]; then
exit 1;
fi
mkdir -p $INSTALL_DIR
build_php
if [ $? -eq 1 ]; then
exit 1
fi
modify_php
}
print_help() {
echo "Usage: "
echo " $0 check --- check environment"
echo " $0 install --- check & run scripts to install"
}
case $1 in
check)
print_hello $1
check_user
check_os
check_run
;;
install)
print_hello $1
check_user
check_os
check_run
build_all
;;
*)
print_help
;;
esac