大家都知道,运维人员都是很懒的,最懒的程序猿才是最好的程序员,因为服务器环境是LNMP,nginx和mariadb都是yum安装所以做一个定时的yum update -y即可更新,PHP是编译安装,所以不能自动更新,就写了这个脚本,自动更新PHP的脚本,脚本其实很简单,就是判断你服务器上面所保存的PHP源文件版本号+0.0.1,然后下载新版本,自动编译安装新版本,假如你当前的版本号为php-7.1.6,那么升级以后版本号为php-7.1.7,同分支升级,因为PHP有7和5版本。
注意:此脚本不会改变原有的编译参数,未加编译失败回滚功能,请勿在线上环境测试。折腾帝除外,23333 此脚本只适用于/usr/local/src目录下仅有一个PHP的tar.gz包,因为未加遍历PHP包比较大小功能。因本脚本引起的任何问题,本博客以及本人,概不负责~~~
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
#Date:2017/7/14 version:1.0
#PHP安装包存放目录
DIR="/usr/local/src"
#查找PHP tar.gz包
PHPOLD=`/usr/bin/ls /usr/local/src |grep gz`
#截取包版本号最后一位
TMP=${PHPOLD:8:1}
#获取当前版本完整的解压包,以进行PHP无缝升级
PHPOLDDIR="/usr/local/src/php-7.1.$TMP"
#下载最新版的PHP tar.gz包
cd $DIR
wget http://php.net/distributions/php-7.1.$[TMP+1].tar.gz
PHPNEW="/usr/local/src/php-7.1.$[TMP+1].tar.gz"
#新的PHP版本解压目录
PHPNEWDIR="/usr/local/src/php-7.1.$[TMP+1]"
#判断是否下载了最新版的PHP tar.gz包
if [ -f "$PHPNEW" ]; then
#备份PHP文件以方便安装失败回滚
cp -a /usr/local/php /usr/local/php.bak
#开始无缝升级:参考URL:https://www.kaifashuo.com/archives/45/
cd $DIR
tar xf $PHPNEW
cp $PHPOLDDIR/config.nice $PHPNEWDIR
cd $PHPNEWDIR
./config.nice && make && make install
systemctl restart php-fpm
cd $DIR
#删除旧的压缩包文件
rm -rf $PHPOLD
#删除旧的PHP解压包
rm -rf $PHPOLDDIR
fi
#如果重启失败,判断PHP-fpm进程是否存在,如果不存在说明升级失败,设置回滚
CK=`ps -ef | grep php-fpm | grep -v grep | wc -l`;
if [ $CK == 0 ];then
rm -rf /usr/local/php
cp -a /usr/local/php.bak /usr/local/php
systemctl restart php-fpm
fi
exit
给脚本执行权限:
chmod +x upgradephp.sh
给脚本做定时任务:每天凌晨4点自动检测是否有新的PHP版本,如果有,下载并自动更新PHP版本。
0 4 * sh /root/upgradephp.sh
还没有任何评论,你来说两句吧