自动安装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
原文地址:https://www.cnblogs.com/ddcoder/p/5050407.html