该脚本基于阿里云服务器安装脚本,并只能运用于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
自动安装memcached服务端与PHP扩展Memcached
原文:http://www.cnblogs.com/ddcoder/p/5050407.html