zoukankan      html  css  js  c++  java
  • 自动安装memcached服务端与PHP扩展Memcached

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

      1 #! /bin/bash
      2 #by dxd in 2015-12
      3 #only suit for centos/aliyun os, and based on aliyun install script
      4 
      5 PHP_EXT_SOURCE_PATH=""
      6 PHP_BIN_PATH=/alidata/server/php/bin
      7 
      8 DOWNLOAD_LIBEVENT_URL=http://download.verymall.cn/libevent-1.4.14b.tar.gz
      9 INSTALL_LIBEVENT_PATH=/alidata/lib/libevent
     10 NEW_LIBEVENT=""
     11 
     12 DOWNLOAD_MEMCACHE_URL=http://download.verymall.cn/memcached-1.4.25.zip
     13 INSTALL_MEMCACHE_PATH=/alidata/server/memcache
     14 MEMCACHE_PORT=12301
     15 MEMCACHE_PID_FILE=/tmp/memcached.pid
     16 
     17 CURR_PATH=$(pwd);
     18 
     19 DOWNLOAD_LIBMEMCACHED_URL=http://download.verymall.cn/libmemcached-1.0.18.zip
     20 INSTALL_LIBMEMCACHED_PATH=/alidata/lib/libmemcached
     21 
     22 DOWNLOAD_PHP_MEMCACHED=http://download.verymall.cn/php_memcached-2.2.0.zip
     23 PHP_INI_PATH=/alidata/server/php/etc/php.ini
     24 
     25 #check current path auth
     26 if [ ! -w "$CURR_PATH" ]
     27 then
     28     echo "no write"
     29     exit 1
     30 fi
     31 
     32 #check user name
     33 if [ "$(whoami)" != "root" ]
     34 then
     35     echo "please run as root"
     36     exit 1
     37 fi
     38 
     39 #check current path
     40 if [ "$(ls | grep 'install.sh')" = "" ]
     41 then
     42     echo "please put this script where install.sh locates"
     43     exit 1
     44 fi
     45 
     46 #select php ext path
     47 for dir in $(ls)
     48 do
     49     TMP_PATH=$CURR_PATH/$dir/ext
     50     if [ -d $TMP_PATH ]
     51     then
     52         PHP_EXT_SOURCE_PATH=$TMP_PATH
     53         break
     54     fi
     55 done
     56 if [ -z "$PHP_EXT_SOURCE_PATH" ]
     57 then
     58     echo "could not find php install path"
     59     exit 1
     60 fi
     61 
     62 echo -n "php ext source path is $PHP_EXT_SOURCE_PATH , (Y/N): "
     63 read USER_ANSWER
     64 until [ "$USER_ANSWER" = "Y" ] || [ "$USER_ANSWER" = "y" ]
     65 do
     66     if [ "$USER_ANSWER" = "N" ] || [ "$USER_ANSWER" = "n" ]
     67     then
     68         echo "php ext source path is fault, then exit"
     69         exit 1
     70     fi
     71     
     72     echo -n "php ext source path is $PHP_EXT_SOURCE_PATH , (Y/N): "
     73     read USER_ANSWER
     74 done
     75 
     76 #maybe gcc is not installed,but it is rare, I'm not going to handle this situation
     77 which gcc > /dev/null 2>&1
     78 if [ "$?" != "0" ]
     79 then
     80     echo "please install gcc first"
     81     exit 1
     82 fi
     83 
     84 #check is port occupied
     85 if [ -n "$(netstat -ano | grep $MEMCACHE_PORT)" ]
     86 then
     87     echo "PORT $MEMCACHE_PORT is occupied, please check"
     88     if [ -f $MEMCACHE_PID_FILE ]
     89     then
     90         echo 'maybe by old memcache server'
     91         echo "PID: $(cat $MEMCACHE_PID_FILE)"
     92     fi
     93     exit 1
     94 fi
     95 
     96 #test zip if exist
     97 unzip > /dev/null 2>&1
     98 if [ "$?" != "0" ]    #not tested yet!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     99 then
    100     yum install unzip
    101 fi
    102 
    103 #clear old memcache files
    104 if [ -d $INSTALL_MEMCACHE_PATH ]
    105 then
    106     rm -rf $INSTALL_MEMCACHE_PATH > /dev/null 2>&1
    107     if "$?"="0"
    108     then
    109         echo "$INSTALL_MEMCACHE_PATH could not be removed"
    110         exit 1
    111     fi
    112 fi
    113 
    114 if [ -d $INSTALL_LIBMEMCACHED_PATH ]
    115 then
    116     rm -rf $INSTALL_LIBMEMCACHED_PATH > /dev/null 2>&1
    117     if "$?"="0"
    118     then
    119         echo "$INSTALL_LIBMEMCACHED_PATH could not be removed"
    120         exit 1
    121     fi
    122 fi
    123 
    124 #create lib path
    125 mkdir /alidata/lib > /dev/null 2>&1
    126 
    127 #install libevent
    128 libevent=$(ldconfig -p | grep 'libevent')
    129 if [ -z "$libevent" ]    #not tested yet!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
    130 then
    131     rm -rf $INSTALL_LIBEVENT_PATH > /dev/null 2>&1
    132     mkdir $INSTALL_LIBEVENT_PATH
    133     chmod -R 0777 $INSTALL_LIBEVENT_PATH
    134 
    135     rm -f $CURR_PATH/libevent-1.4.14b.tar.gz
    136     rm -rf $CURR_PATH/libevent-1.4.14b
    137     wget $DOWNLOAD_LIBEVENT_URL
    138     tar -zxvf libevent-1.4.14b.tar.gz
    139     chmod -R 0777 ./libevent-1.4.14b
    140     cd ./libevent-1.4.14b
    141     ./configure --prefix=$INSTALL_LIBEVENT_PATH
    142     make
    143     make install
    144 
    145     NEW_LIBEVENT="1"
    146 fi
    147 
    148 cd $CURR_PATH
    149 
    150 #install memcache
    151 rm -f $CURR_PATH/memcached-1.4.25.zip
    152 rm -rf $CURR_PATH/memcached-1.4.25
    153 wget $DOWNLOAD_MEMCACHE_URL
    154 unzip memcached-1.4.25.zip
    155 chmod -R 0777 ./memcached-1.4.25
    156 cd ./memcached-1.4.25
    157 if [ $NEW_LIBEVENT="1" ]    #install libevent in this script
    158 then
    159     ./configure --prefix=$INSTALL_MEMCACHE_PATH --with-libevent=$INSTALL_LIBEVENT_PATH
    160 else
    161     ./configure --prefix=$INSTALL_MEMCACHE_PATH
    162 fi
    163 make 
    164 make install 
    165 
    166 #start memcache
    167 rm -f /tmp/memcached.pid
    168 $INSTALL_MEMCACHE_PATH/bin/memcached -d -m 300 -u root -p $MEMCACHE_PORT -c 1000 -P $MEMCACHE_PID_FILE
    169 
    170 cd $CURR_PATH
    171 
    172 #install libmemcached
    173 rm -f $CURR_PATH/libmemcached-1.0.18.zip
    174 rm -rf $CURR_PATH/libmemcached-1.0.18
    175 wget $DOWNLOAD_LIBMEMCACHED_URL
    176 unzip libmemcached-1.0.18.zip
    177 chmod -R 0777 ./libmemcached-1.0.18
    178 cd ./libmemcached-1.0.18
    179 mkdir $INSTALL_LIBMEMCACHED_PATH
    180 chmod -R 0777 $INSTALL_LIBMEMCACHED_PATH
    181 ./configure --prefix=$INSTALL_LIBMEMCACHED_PATH --with-memcached
    182 make
    183 make install
    184 
    185 cd $CURR_PATH
    186 
    187 #install php extension Memcached
    188 rm -f $CURR_PATH/php_memcached-2.2.0.zip
    189 rm -rf $CURR_PATH/memcached-2.2.0
    190 rm -rf $PHP_EXT_SOURCE_PATH/memcached-2.2.0
    191 wget $DOWNLOAD_PHP_MEMCACHED
    192 unzip php_memcached-2.2.0.zip
    193 chmod -R 0777 ./memcached-2.2.0 
    194 mv $CURR_PATH/memcached-2.2.0 $PHP_EXT_SOURCE_PATH/memcached-2.2.0
    195 cd $PHP_EXT_SOURCE_PATH/memcached-2.2.0
    196 $PHP_BIN_PATH/phpize
    197 ./configure --enable-memcached --with-php-config=$PHP_BIN_PATH/php-config --with-libmemcached-dir=$INSTALL_LIBMEMCACHED_PATH --disable-memcached-sasl
    198 make
    199 make install
    200 
    201 #write php.ini
    202 memcached_exist=$(cat $PHP_INI_PATH | grep 'memcached.so')
    203 if [ -z "$memcached_exist" ]
    204 then
    205     echo "extension=memcached.so" >> $PHP_INI_PATH
    206 fi
    207 
    208 cd $CURR_PATH
    209 
    210 #restart php fpm
    211 /etc/init.d/php-fpm restart
    212 
    213 echo "install successfully"
    214 exit 0
  • 相关阅读:
    flash 显示对象的getRect()方法的问题
    John Maccarthy
    一个c++ 2d图形引擎 AGG
    lisp 编程入门
    linux图形开发工具
    wxDevC++ – Dev C++的愛好者一定要知道的C++ IDE
    备忘 html5 canvas context2d/3d
    windows下使用boost库可以下载编译好的二进制安装包
    酷壳
    [.NET] : Provider Pattern
  • 原文地址:https://www.cnblogs.com/ddcoder/p/5050407.html
Copyright © 2011-2022 走看看