Centos6.10编译安装php-7.1.12并安装redis模块

1、服务器初始化

yum update -y
yum install epel-release -y
yum install gcc gcc-c++ wget lsof lrzsz telnet -y

2、安装编译php依赖的包

yum install -y libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel gmp gmp-devel readline readline-devel libxslt libxslt-devel openjpeg-devel mysql-devel mysql

3、编译安装mcrypt

 php编译时候会报mcrypt.h not found,这个库作用就是用来加密的,yum又无法安装,所以就编译安装一个

wget -P /usr/local/src https://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz
cd /usr/local/src
tar cvf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8
./configure
make && make install

4、编译安装php-7.1.12

cd /usr/local/src
tar xvf /usr/local/src/php-7.1.12.tar.gz
cd /usr/local/src/php-7.1.12
./configure --prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--enable-fpm \
--with-fpm-user=bumblebee \
--with-fpm-group=bumblebee \
--enable-mysqlnd \
--with-mysqli \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--enable-mysqlnd-compression-support \
--with-iconv-dir \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-readline \
--with-libxml-dir \
--enable-xml \
--disable-rpath \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--with-curl \
--with-Core \
--with-ctype \
--enable-mbregex \
--enable-mbstring \
--enable-intl \
--with-mcrypt \
--with-libmbfl \
--enable-ftp \
--with-gd \
--enable-gd-jis-conv \
--enable-gd-native-ttf \
--with-openssl \
--enable-pcntl \
--enable-sockets \
--with-xmlrpc \
--enable-zip \
--enable-soap \
--with-gettext \
--enable-fileinfo \
--enable-opcache \
--with-pear \
--enable-maintainer-zts \
--without-gdbm

make && make install

5、修改php配置

  cp /usr/local/src/php-7.1.12/php.ini-production /usr/local/php/etc/php.ini && cd /usr/local/php/etc && cp php-fpm.conf.default php-fpm.conf
cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf

sed -i "s/;date.timezone =/date.timezone = Asia\/Shanghai/g" /usr/local/php/etc/php.ini
sed -i "s#`grep max_execution_time /usr/local/php/etc/php.ini`#max_execution_time = 300#g" /usr/local/php/etc/php.ini
sed -i "s#`grep post_max_size /usr/local/php/etc/php.ini`#post_max_size = 32M#g" /usr/local/php/etc/php.ini
sed -i "s#`grep max_input_time\ = /usr/local/php/etc/php.ini`#max_input_time = 300#g" /usr/local/php/etc/php.ini
sed -i "s#`grep memory_limit /usr/local/php/etc/php.ini`#memory_limit = 128M#g" /usr/local/php/etc/php.ini
sed -i "s#`grep post_max_size /usr/local/php/etc/php.ini`#post_max_size = 32M#g" /usr/local/php/etc/php.ini

sed -i "s/user = php-fpm/user = bumblebee/g" /usr/local/php/etc/php-fpm.d/www.conf
sed -i "s/group = php-fpm/group = bumblebee/g" /usr/local/php/etc/php-fpm.d/www.conf
 cp /usr/local/src/php-7.1.12/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
 chmod +x /etc/init.d/php-fpm

6、安装redis模块

       去github下载对应的包 https://github.com/phpredis/phpredis/releases/

  tar xvf phpredis-3.1.4.tar.gz
cd phpredis-3.1.4
./configure
phpize
make
make install

7、修改php.ini文件

 [opcache]
zend_extension=/usr/local/php/lib/php/extensions/no-debug-zts-20160303/opcache.so  #不增加这行,opcache模块不生效,网上的资料太坑了
php.ini文件末尾增加
extension=redis.so

8、启动fpm-fpm

 service fpm-start start

9、设置php环境变量并查看模块

 echo -e '\nexport PATH=/usr/local/php/bin:/usr/local/php/sbin:$PATH\n' >> /etc/profile && source /etc/profile

##查看php已安装的模块
[root@server etc]# php -m
[PHP Modules]
bcmath
Core
ctype
curl
date
dom
fileinfo
filter
ftp
gd
gettext
hash
iconv
intl
json
libxml
mbstring
mcrypt
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
posix
readline
redis
Reflection
session
shmop
SimpleXML
soap
sockets
SPL
sqlite3
standard
sysvsem
tokenizer
xml
xmlreader
xmlrpc
xmlwriter
Zend OPcache
zip
zlib

[Zend Modules]
Zend OPcache

10、一键安装脚本

#!/bin/bash
#安装php-7.1.12脚本
err_echo(){
    echo -e "\033[41;37m[Error]: $1 \033[0m"
    exit 1
}
​
info_echo(){
    echo -e "\033[42;37m[Info]: $1 \033[0m"
}
​
check_file_is_exists(){
    if [ ! -f "/usr/local/src/$1" ];then
        info_echo "$1开始下载"
    fi
}
​
check_exit(){
    if [ $? -ne 0 ]; then
        err_echo "$1"
        exit 1
    fi
}
​
check_success(){
    if [ $? -eq 0 ];then
        info_echo "$1"
    fi
}
​
[ $(id -u) != "0" ] && err_echo "please run this script as root user." && exit 1
​
function init_servers(){
​
    info_echo "开始初始化服务器"
    yum update -y
    yum install epel-release -y
    sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
    setenforce 0
    
    info_echo "更换阿里源"
    yum install wget -y
    cp /etc/yum.repos.d/* /tmp
    rm -f /etc/yum.repos.d/*
    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
    wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
    yum clean all
​
}
​
function install_package(){
​
    info_echo "开始安装系统必备依赖包"
    yum install ntpdate gcc gcc-c++ wget lsof lrzsz -y
​
    info_echo "开始安装php所需依赖包"
    yum install -y libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel gmp gmp-devel readline readline-devel libxslt libxslt-devel openjpeg-devel mysql mysql-devel
    
    info_echo "开始安装nginx所需依赖包"
    yum install -y pcre pcre-devel zlib zlib-devel
}
​
function download_install_package(){
​
    if [ ! -f "/usr/local/src/php-7.1.12.tar.gz" ];then
        info_echo "开始下载php-7.1.12.tar.gz"
        wget -P /usr/local/src http://cn2.php.net/distributions/php-7.1.12.tar.gz
        check_success "php-7.1.12.tar.gz已下载至/usr/local/src目录"
    else
        info_echo "php-7.1.12.tar.gz已存在,不需要下载"
    fi
​
}
​
function install_mcrypt()
{
  wget -P /usr/local/src https://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz
  cd /usr/local/src
  tar cvf libmcrypt-2.5.8.tar.gz
  cd libmcrypt-2.5.8
  ./configure
  make && make install
}
​
function install_php(){
​
    info_echo "开始安装php-7.1.12"
    sleep 2s
    cd /usr/local/src
    tar xvf /usr/local/src/php-7.1.12.tar.gz
    cd /usr/local/src/php-7.1.12
    ./configure --prefix=/usr/local/php \
    --with-config-file-path=/usr/local/php/etc \
    --enable-fpm \
    --with-fpm-user=bumblebee \
    --with-fpm-group=bumblebee \
    --enable-mysqlnd \
    --with-mysqli \
    --with-mysqli=mysqlnd \
    --with-pdo-mysql=mysqlnd \
    --enable-mysqlnd-compression-support \
    --with-iconv-dir \
    --with-freetype-dir \
    --with-jpeg-dir \
    --with-png-dir \
    --with-zlib \
    --with-readline \
    --with-libxml-dir \
    --enable-xml \
    --disable-rpath \
    --enable-bcmath \
    --enable-shmop \
    --enable-sysvsem \
    --enable-inline-optimization \
    --with-curl \
    --with-Core \
    --with-ctype \
    --enable-mbregex \
    --enable-mbstring \
    --enable-intl \
    --with-mcrypt \
    --with-libmbfl \
    --enable-ftp \
    --with-gd \
    --enable-gd-jis-conv \
    --enable-gd-native-ttf \
    --with-openssl \
    --enable-pcntl \
    --enable-sockets \
    --with-xmlrpc \
    --enable-zip \
    --enable-soap \
    --with-gettext \
    --enable-fileinfo \
    --enable-opcache \
    --with-pear \
    --enable-maintainer-zts \
    --without-gdbm
    check_exit "configure php-7.1.12失败"
    make && make install
    check_exit "make php-7.1.12失败"
​
    info_echo "开始配置php-7.1.12"
​
    cp /usr/local/src/php-7.1.12/php.ini-production /usr/local/php/etc/php.ini && cd /usr/local/php/etc && cp php-fpm.conf.default php-fpm.conf
    cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
​
    sed -i "s/;date.timezone =/date.timezone = Asia\/Shanghai/g" /usr/local/php/etc/php.ini
    sed -i "s#`grep max_execution_time /usr/local/php/etc/php.ini`#max_execution_time = 300#g" /usr/local/php/etc/php.ini
    sed -i "s#`grep post_max_size /usr/local/php/etc/php.ini`#post_max_size = 32M#g" /usr/local/php/etc/php.ini
    sed -i "s#`grep max_input_time\ = /usr/local/php/etc/php.ini`#max_input_time = 300#g" /usr/local/php/etc/php.ini
    sed -i "s#`grep memory_limit /usr/local/php/etc/php.ini`#memory_limit = 128M#g" /usr/local/php/etc/php.ini
    sed -i "s#`grep post_max_size /usr/local/php/etc/php.ini`#post_max_size = 32M#g" /usr/local/php/etc/php.ini
    filename=`find /usr/local/php/lib/php/extensions -name opcache.so`
    sed -i '/\[opcache\]/azend_extension=$filename' /usr/local/php/etc/php.ini 
    sed -i "s/user = php-fpm/user = bumblebee/g" /usr/local/php/etc/php-fpm.d/www.conf
    sed -i "s/group = php-fpm/group = bumblebee/g" /usr/local/php/etc/php-fpm.d/www.conf
    cp /usr/local/src/php-7.1.12/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
    chmod +x /etc/init.d/php-fpm
}
​
function main(){
​
    init_servers
    install_package
    download_install_package
    install_mcrypt
    install_php
    
    
}
​
main

 

 

posted @ 2019-06-21 20:02  梦轻尘  阅读(700)  评论(0编辑  收藏  举报