该脚本基于阿里云服务器安装脚本,并只能运用于centos / aliyun os,该脚本使用时,需要与阿里云安装脚本的install.sh放在同一目录下。有缘人切忌乱用:

 #! /bin/bash
#by dxd in -
#only suit for centos/aliyun os, and based on aliyun install script CURR_PATH=$(pwd); PHP_EXT_SOURCE_PATH=""
PHP_BIN_PATH=/alidata/server/php/bin DOWNLOAD_TCL_URL=http://download.verymall.cn/tcl8.6.1.zip
INSTALL_TCL_PATH=/alidata/lib/tcl DOWNLOAD_REDIS_URL=http://download.verymall.cn/redis-3.0.3.zip
DOWNLOAD_REDIS_SCRIPT_URL=http://download.verymall.cn/redis.script
INSTALL_REDIS_PATH=/alidata/server/redis REDIS_PORT= DOWNLOAD_REDIS_EXT_URL=http://download.verymall.cn/phpredis.zip
PHP_INI_PATH=/alidata/server/php/etc/php.ini function check_curr_path_auth()
{
if [ ! -w "$CURR_PATH" ]
then
echo "no write"
exit
fi
} function check_user_name()
{
if [ "$(whoami)" != "root" ]
then
echo "please run as root"
exit
fi
} function is_curr_path_leagal()
{
if [ "$(ls | grep 'install.sh')" = "" ]
then
echo "please put this script where install.sh locates"
exit
fi
} function get_php_ext_source_path()
{
for dir in $(ls)
do
TMP_PATH=$CURR_PATH/$dir/ext
if [ -d $TMP_PATH ]
then
PHP_EXT_SOURCE_PATH=$TMP_PATH
break
fi
done
if [ -z "$PHP_EXT_SOURCE_PATH" ]
then
echo "could not find php install path"
exit
fi echo -n "php ext source path is $PHP_EXT_SOURCE_PATH , (Y/N): "
read USER_ANSWER
until [ "$USER_ANSWER" = "Y" ] || [ "$USER_ANSWER" = "y" ]
do
if [ "$USER_ANSWER" = "N" ] || [ "$USER_ANSWER" = "n" ]
then
echo "php ext source path is fault, then exit"
exit
fi echo -n "php ext source path is $PHP_EXT_SOURCE_PATH , (Y/N): "
read USER_ANSWER
done
} function check_gcc()
{
which gcc > /dev/null >&
if [ "$?" != "" ]
then
echo "please install gcc first"
exit
fi
} function check_redis_port()
{
if [ -n "$(lsof -i:$REDIS_PORT)" ]
then
echo "PORT $REDIS_PORT is occupied"
exit
fi
} function check_unzip() #not tested yet!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
{
unzip > /dev/null >&
if [ "$?" != "" ]
then
yum install unzip
fi
} function check_alidata_path()
{
if [ ! -d /alidata ]
then
mkdir /alidata
fi if [ ! -d /alidata/lib ]
then
mkdir /alidata/lib
fi if [ ! -d /alidata/server ]
then
echo "alidata server has not been installed"
exit
fi
} function install_tcl_lib()
{
if [ -n "$(ldconfig -p | grep 'libtcl8.6')" ]
then
return
fi if [ -d $INSTALL_TCL_PATH ]
then
rm -rf $INSTALL_TCL_PATH
fi
mkdir $INSTALL_TCL_PATH
chmod -R $INSTALL_TCL_PATH if [ -d ./tcl8.6.1 ]
then
rm -rf ./tcl8.6.1
fi if [ -a ./tcl8.6.1.zip ] && [ -n "$(md5sum ./tcl8.6.1.zip | grep 'f3d76fa9f96eab32e2f2655dd48a21a8')" ]
then
echo "tcl8.6.1.zip exist"
else
rm -f ./tcl8.6.1.zip
wget $DOWNLOAD_TCL_URL
fi unzip ./tcl8.6.1.zip
chmod -R ./tcl8.6.1
cd ./tcl8.6.1/unix
./configure --prefix=$INSTALL_TCL_PATH --without-tzdata --mandir=/usr/share/man $([ $(uname -m) = x86_64 ] && echo --enable-64bit)
make
sed -e "s@^\(TCL_SRC_DIR='\).*@\1/usr/include'@" -e "/TCL_B/s@='\(-L\)\?.*unix@='\1/usr/lib@" -i tclConfig.sh
make install
make install-private-headers
ln -v -sf tclsh8. /usr/bin/tclsh
ln -s $INSTALL_TCL_PATH/lib/libtcl8..so /usr/lib/libtcl8..so
chmod $INSTALL_TCL_PATH/lib/libtcl8..so
chmod -v /usr/lib/libtcl8..so
ldconfig cd $CURR_PATH
} function install_redis()
{
if [ -d $INSTALL_REDIS_PATH ]
then
rm -rf $INSTALL_REDIS_PATH
fi
mkdir $INSTALL_REDIS_PATH
chmod -R $INSTALL_REDIS_PATH if [ -d ./redis-3.0. ]
then
rm -rf ./redis-3.0.
fi if [ -a ./redis-3.0..zip ] && [ -n "$(md5sum ./redis-3.0.3.zip | grep '05c5e89354bd14f1eb2dfbc88dec24ae')" ]
then
echo "redis-3.0.3.zip exist"
else
rm -f ./redis-3.0..zip
wget $DOWNLOAD_REDIS_URL
fi unzip ./redis-3.0..zip
chmod -R ./redis-3.0.
cd ./redis-3.0.
make
make install sed "s/port 6379/port $REDIS_PORT/g" ./redis.conf > $INSTALL_REDIS_PATH/redis.conf
sed -i "s/daemonize no/daemonize yes/g" $INSTALL_REDIS_PATH/redis.conf > /dev/null >& #start up redis
redis-server $INSTALL_REDIS_PATH/redis.conf cd $CURR_PATH
} function install_dos2unix()
{
which dos2unix > /dev/null >&
if [ "$?" != "" ]
then
yum install dos2unix
fi
} function create_init_script()
{
rm -f /etc/rc.d/init.d/redis
wget $DOWNLOAD_REDIS_SCRIPT_URL -O /etc/rc.d/init.d/redis
chmod /etc/rc.d/init.d/redis
chmod +x /etc/rc.d/init.d/redis
dos2unix /etc/rc.d/init.d/redis chkconfig --add redis
chkconfig --level redis on service redis restart
} function install_php_redis_ext()
{
if [ -d ./phpredis ]
then
rm -rf ./phpredis
fi if [ -d $PHP_EXT_SOURCE_PATH/ext/redis ]
then
rm -rf $PHP_EXT_SOURCE_PATH/ext/redis
fi if [ -a ./phpredis.zip ] && [ -n "$(md5sum ./phpredis.zip | grep '1a6eef0989cab3b34eebc45e3f6d9b71')" ]
then
echo "php redis exist"
else
wget $DOWNLOAD_REDIS_EXT_URL
fi unzip ./phpredis.zip
chmod -R ./phpredis
mv ./phpredis $PHP_EXT_SOURCE_PATH/redis cd $PHP_EXT_SOURCE_PATH/redis
$PHP_BIN_PATH/phpize
./configure --with-php-config=$PHP_BIN_PATH/php-config
make
make install #write php.ini
redis_exist=$(cat $PHP_INI_PATH | grep 'redis.so')
if [ -z "$redis_exist" ]
then
echo "extension=redis.so" >> $PHP_INI_PATH
fi cd $CURR_PATH
} function restart_php_fpm()
{
/etc/init.d/php-fpm restart
} check_curr_path_auth
check_user_name
is_curr_path_leagal
get_php_ext_source_path
check_gcc
check_redis_port
check_unzip
check_alidata_path
install_tcl_lib
install_redis
install_dos2unix
create_init_script
install_php_redis_ext
restart_php_fpm echo "redis install successfully"
exit

自动安装Redis服务端与PHP扩展Redis的更多相关文章

  1. 自动安装memcached服务端与PHP扩展Memcached

    该脚本基于阿里云服务器安装脚本,并只能运用于centos / aliyun os,该脚本使用时,需要与阿里云安装脚本的install.sh放在同一目录下.有缘人切忌乱用: #! /bin/bash # ...

  2. 安装redis服务端

    1. redis服务端和客户端的安装 [root@xxx ~]# cd /usr/local/src [root@xxx src]# wget http://download.redis.io/rel ...

  3. 编译安装rabbitmq服务端

    有一种方式是:下载rabbitmq-server-generic-unix压缩包,是不用编译的.是已经编译好的源码了 下面介绍编译源码安装   总括: 需要以下步骤:   1.安装erlange.因为 ...

  4. Redis01 Redis服务端环境搭建

    1 前提准备 下载 VM centos6 安装包,安装好虚拟系统 2 安装远程连接工具 工具获取 2.1 SecureCRT.Xshell 连接远程服务器 2.2 WinSCP 向远程服务器发送文件 ...

  5. Windows安装VNC服务端

    下载VNC服务端 由于服务器在IDC机房,只能使用系统自带远程桌面连接到服务器进行安装VPC服务端 但在安装过程发现,如果是通过远程桌面连接到服务器进行安装,VNC Mirror Driver会报错无 ...

  6. 多个Linux发行版安装ss服务端

    本文仅做技术探讨,请在遵守相应的法律法规的前提下使用. Centos 7一键安装脚本 简单快捷,随机生成密码,默认端口默认加密类型 bash <(curl -s http://morning.w ...

  7. suse安装svn服务端和客户端的使用

    suse安装svn服务端 一. 安装服务端 配置网络安装源(suse11sp1为例) 新建11.1.repo11.1为软件源名称,可自定义文件并添加如下内容后保存 linux-e0xg:/etc/zy ...

  8. centos 7安装vnc服务端&vnc客户端连接

    前言 工作需求,需要用到vnc,介绍一下相关内容. 安装vnc服务端 在执行其他相关的之前,需要先安装一下vnc的服务端,命令如下: yum install tigervnc-server 配置vnc ...

  9. 怎样连接REDIS服务端

    怎样连接REDIS服务端 REDIS服务器是TCP/IP SERVER,因此客户端要访问,必须先同服务器建立SOCKET连接,然后才可以发送各种REDIS COMMAND(指令). 首先要引用单元文件 ...

随机推荐

  1. 玩转docker镜像和镜像构建

    摘要 本文从个人的角度,讲述对于docker镜像和镜像构建的一些实践经验.主要内容包括利用docker hub进行在线编译,下载镜像,dind的实践,对于镜像的一些思考等.本文是对当时微信分享内容的一 ...

  2. JAVA线程间的状态转换

    线程间的状态转换:  1. 新建(new):新创建了一个线程对象. 2. 可运行(runnable):线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法.该状态的线程位于可运 ...

  3. hash实现锚点平滑滚动定位

    一.科普时间 hash hash 属性是一个可读可写的字符串,该字符串是 URL 的锚部分(从 # 号开始的部分). location.hash=anchorname. 锚点 锚点是网页制作中超级链接 ...

  4. .Net基于RealProxy实现AOP

    一.概述 关于AOP(面向切面编程)还是先讲一个日常经常碰到的场景"错误日志的记录",一般来说我们编码的时候想记录错误日志都是用try..catch来进行捕捉和记录,慢慢的你会发现 ...

  5. 蓝桥杯 C语言 基础训练 数列排序

    问题描述 给定一个长度为n的数列,将这个数列按从小到大的顺序排列.1<=n<=200 输入格式 第一行为一个整数n. 第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000. 输 ...

  6. Redmine数据库备份及搬家

    Bitnami Redmine的备份分2种方式: 1.导出数据库 2.整个目录搬家 不管是哪种都想停掉服务,redmine相关的服务有以下5个: redmineApache redmineMySQL ...

  7. [HMLY]11.iOS函数式编程的实现&&响应式编程概念

    简介 本篇主要回顾一下--iOS函数式编程 && 响应式编程概念 ,如何一步步实现函数式编程的过程,对阅读Masonry && SnapKit源码有一定的帮助. 作为一 ...

  8. readonly属性在各浏览器中的区别

    有个项目需求是正常显示时为只读,不可修改: 点击修改按钮后,可修改表单元素. 首先想到的是readonly属性,其用于规定输入字段为只读,不能修改.在javascript中消除readonly值,可将 ...

  9. C# IIS7.0+ Web.Config 配置Session过期时间

    1. 2. 3. <sessionState mode="InProc" timeout="120"></sessionState>

  10. java 基本数据类型跟封装类型的差距

    import java.util.*; class test1{ public static void main(String[] args){ long start1 = System.curren ...