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

 #! /bin/bash
#by dxd in -
#only suit for centos/aliyun os, and based on aliyun install script PHP_EXT_SOURCE_PATH=""
PHP_BIN_PATH=/alidata/server/php/bin DOWNLOAD_LIBEVENT_URL=http://download.verymall.cn/libevent-1.4.14b.tar.gz
INSTALL_LIBEVENT_PATH=/alidata/lib/libevent
NEW_LIBEVENT="" DOWNLOAD_MEMCACHE_URL=http://download.verymall.cn/memcached-1.4.25.zip
INSTALL_MEMCACHE_PATH=/alidata/server/memcache
MEMCACHE_PORT=
MEMCACHE_PID_FILE=/tmp/memcached.pid CURR_PATH=$(pwd); DOWNLOAD_LIBMEMCACHED_URL=http://download.verymall.cn/libmemcached-1.0.18.zip
INSTALL_LIBMEMCACHED_PATH=/alidata/lib/libmemcached DOWNLOAD_PHP_MEMCACHED=http://download.verymall.cn/php_memcached-2.2.0.zip
PHP_INI_PATH=/alidata/server/php/etc/php.ini #check current path auth
if [ ! -w "$CURR_PATH" ]
then
echo "no write"
exit
fi #check user name
if [ "$(whoami)" != "root" ]
then
echo "please run as root"
exit
fi #check current path
if [ "$(ls | grep 'install.sh')" = "" ]
then
echo "please put this script where install.sh locates"
exit
fi #select php ext 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 #maybe gcc is not installed,but it is rare, I'm not going to handle this situation
which gcc > /dev/null >&
if [ "$?" != "" ]
then
echo "please install gcc first"
exit
fi #check is port occupied
if [ -n "$(netstat -ano | grep $MEMCACHE_PORT)" ]
then
echo "PORT $MEMCACHE_PORT is occupied, please check"
if [ -f $MEMCACHE_PID_FILE ]
then
echo 'maybe by old memcache server'
echo "PID: $(cat $MEMCACHE_PID_FILE)"
fi
exit
fi #test zip if exist
unzip > /dev/null >&
if [ "$?" != "" ] #not tested yet!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
then
yum install unzip
fi #clear old memcache files
if [ -d $INSTALL_MEMCACHE_PATH ]
then
rm -rf $INSTALL_MEMCACHE_PATH > /dev/null >&
if "$?"=""
then
echo "$INSTALL_MEMCACHE_PATH could not be removed"
exit
fi
fi if [ -d $INSTALL_LIBMEMCACHED_PATH ]
then
rm -rf $INSTALL_LIBMEMCACHED_PATH > /dev/null >&
if "$?"=""
then
echo "$INSTALL_LIBMEMCACHED_PATH could not be removed"
exit
fi
fi #create lib path
mkdir /alidata/lib > /dev/null >& #install libevent
libevent=$(ldconfig -p | grep 'libevent')
if [ -z "$libevent" ] #not tested yet!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
then
rm -rf $INSTALL_LIBEVENT_PATH > /dev/null >&
mkdir $INSTALL_LIBEVENT_PATH
chmod -R $INSTALL_LIBEVENT_PATH rm -f $CURR_PATH/libevent-1.4.14b.tar.gz
rm -rf $CURR_PATH/libevent-1.4.14b
wget $DOWNLOAD_LIBEVENT_URL
tar -zxvf libevent-1.4.14b.tar.gz
chmod -R ./libevent-1.4.14b
cd ./libevent-1.4.14b
./configure --prefix=$INSTALL_LIBEVENT_PATH
make
make install NEW_LIBEVENT=""
fi cd $CURR_PATH #install memcache
rm -f $CURR_PATH/memcached-1.4..zip
rm -rf $CURR_PATH/memcached-1.4.
wget $DOWNLOAD_MEMCACHE_URL
unzip memcached-1.4..zip
chmod -R ./memcached-1.4.
cd ./memcached-1.4.
if [ $NEW_LIBEVENT="" ] #install libevent in this script
then
./configure --prefix=$INSTALL_MEMCACHE_PATH --with-libevent=$INSTALL_LIBEVENT_PATH
else
./configure --prefix=$INSTALL_MEMCACHE_PATH
fi
make
make install #start memcache
rm -f /tmp/memcached.pid
$INSTALL_MEMCACHE_PATH/bin/memcached -d -m -u root -p $MEMCACHE_PORT -c -P $MEMCACHE_PID_FILE cd $CURR_PATH #install libmemcached
rm -f $CURR_PATH/libmemcached-1.0..zip
rm -rf $CURR_PATH/libmemcached-1.0.
wget $DOWNLOAD_LIBMEMCACHED_URL
unzip libmemcached-1.0..zip
chmod -R ./libmemcached-1.0.
cd ./libmemcached-1.0.
mkdir $INSTALL_LIBMEMCACHED_PATH
chmod -R $INSTALL_LIBMEMCACHED_PATH
./configure --prefix=$INSTALL_LIBMEMCACHED_PATH --with-memcached
make
make install cd $CURR_PATH #install php extension Memcached
rm -f $CURR_PATH/php_memcached-2.2..zip
rm -rf $CURR_PATH/memcached-2.2.
rm -rf $PHP_EXT_SOURCE_PATH/memcached-2.2.
wget $DOWNLOAD_PHP_MEMCACHED
unzip php_memcached-2.2..zip
chmod -R ./memcached-2.2.
mv $CURR_PATH/memcached-2.2. $PHP_EXT_SOURCE_PATH/memcached-2.2.
cd $PHP_EXT_SOURCE_PATH/memcached-2.2.
$PHP_BIN_PATH/phpize
./configure --enable-memcached --with-php-config=$PHP_BIN_PATH/php-config --with-libmemcached-dir=$INSTALL_LIBMEMCACHED_PATH --disable-memcached-sasl
make
make install #write php.ini
memcached_exist=$(cat $PHP_INI_PATH | grep 'memcached.so')
if [ -z "$memcached_exist" ]
then
echo "extension=memcached.so" >> $PHP_INI_PATH
fi cd $CURR_PATH #restart php fpm
/etc/init.d/php-fpm restart echo "install successfully"
exit

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

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

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

  2. 编译安装rabbitmq服务端

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

  3. Windows安装VNC服务端

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

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

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

  5. Memcached服务端自动启动(转载)

    Memcached服务端自动启动 原文链接:http://www.cnblogs.com/technet/archive/2011/09/11/2173485.html  经测试,要使得Memcach ...

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

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

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

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

  8. 安装oracle服务端之后再安装oracle客户端导致sqlplus命令无法使用??

    首先小编自述一下所遇到的问题: 昨天在已经安装 oracle 服务端的 win7 X64 主机上安装 oracle client 之后,发现我的sqlplus命令无法用了??经过百度,都说我服务没有开 ...

  9. CentOS 7.4安装telnet服务端

    CentOS 7.4安装telnet服务端 安装xinetd服务 # yum -y install xinetd 安装telnet-server # yum -y install telnet-ser ...

随机推荐

  1. 写一个Redis封装类

    打算自己封装一个Redis操作类,方便使用,且有一定log记录.Redis的封装思路:基于Redis类进一步封装 一般属性 单例 (配置参数从配置文件中读取还是写死?考虑多配置之间切换) 常规操作根据 ...

  2. 使用 IDEA 创建 Maven Web 项目 (三)- 编写一个简单的 WEB 应用

    编写 Servlet 类 首先,需要在 java 目录下,创建一个名为 org.smart4j.chapter1 的包.然后,在该包下创建一个 HelloServlet  的类,代码如下: packa ...

  3. PYTHON黑帽编程 4.1 SNIFFER(嗅探器)之数据捕获(下)

    上一节(<4.1 SNIFFER(嗅探器)之数据捕获(上)>)中, 我们讲解了通过Raw Socket的方式来编写Sniffer的基本方法. 本节我们继续来编写Sniffer,只不过使用现 ...

  4. 微型orm框架--dapper的简单使用

    1.安装 首先使用nuget安装dapper,因为这里的示例是使用mysql,所以还要安装mysql的驱动.如下图: 2 数据库表 脚本 ; -- -------------------------- ...

  5. Andrew Ng机器学习入门——线性回归

    本人从2017年起,开始涉猎机器学习.作为入门,首先学习的是斯坦福大学Andrew Ng(吴恩达)教授的Coursera课程 2 单变量线性回归 线性回归属于监督学习(Supervise Learni ...

  6. 软件各种版本的含义!例如RC,M,GA等等

    RC版本   RC:(Release Candidate)   Candidate是候选人的意思,用在软件上就是候选版本.Release是发行.发布的意思.Release.Candidate.就是发行 ...

  7. C# 线程同步之排它锁/Monitor监视器类

    一.Monitor类说明,提供同步访问对象的机制. 1.位于System.Threading命名空间下,mscorlib.dll程序集中. 2.Monitor通过获取和释放排它锁的方式实现多线程的同步 ...

  8. 如何对Javascript代码进行二次压缩(混淆)

    如何对Javascript代码进行二次压缩(混淆) 对Javascript代码进行压缩(混淆),可以有效减少传输和加载时间.但是,不是所有的变量(方法)都能被混淆的,一般来说,只有非属性的变量(方法) ...

  9. JavaEE XML StAX创建

    StAX创建XML文档 @author ixenos 1. 如果通过DOM树来创建XML文件时,发现这个DOM树没有其他用途,那么这种方式就不是很高效,这时我们可以使用StAX API直接将XML树写 ...

  10. 分离JavaScript

    分离JavaScript类似于使用style属性,在HTML文档里使用诸如onclick之类的属性也是一种既没有效率又容易引发问题的做法.如果我们用一个"挂钩",就像CSS机制中的 ...