memcached-1.4.13 + repcached 自动安装脚本

来源:互联网 发布:labview编程样式 编辑:程序博客网 时间:2024/05/16 23:03
#!/bin/bash# Author:Jian# Date:2017-11-16# Version:0.1# Description: 自动安装memcached-1.4.13并自动打上对应版本的repcached-1.4.13补丁,适用于CentOS64位系统,在CentOS6/7上通过测试url1="http://memcached.org/files/old/memcached-1.4.13.tar.gz"url2="http://mdounin.ru/files/repcached-2.3.1-1.4.13.patch.gz"url3="https://github.com/libevent/libevent/releases/download/release-2.1.8-stable/libevent-2.1.8-stable.tar.gz"string=`cat /etc/redhat-release`vers=`echo ${string##*release}|sed 's/^[[:space:]]*//g'|awk -F"." '{print $1}'`download_dir=/usr/local/src/export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/bin:/sbin:/usr/local/memcached/binif which memcached &>/dev/null ; then   echo -e "\033[31mYou have installed memcached on your system,please uninstall it first!\033[0m"   exit 1ficheck_user() {if [ $UID -ne 0 ] ;then   echo -e "\033[31mYou must be root to run this script!\033[0m" 1>&2   exit 1fi}install_progs() {for prog in `echo $@`doif ! which $prog &>/dev/null; then   echo "Installing $prog ..."    yum install $prog -y &>/dev/null    if [ $? -eq 0 ];then      echo "Install $prog OK"    else      echo "Download $prog failed,exit"       exit 2   fifidone}download() {   cd $download_dir   for url in `echo $@`   do       if [ ! -e ${download_dir}${url##*/} ];then         echo "Downloading ${url##*/} ..."         if wget -q -t 8 -c -T 3 $url ;then             echo "Download ${url##*/} OK."          else            echo -e "\033[31mDownload ${url##*/} failed.\033[0m"         fi      else          echo "File ${download_dir}${url##*/} exists."      fi   done}# libevent-2.1.8-stable.tar.gzinstall_libevent() {   cd $download_dir   if [ -f /usr/local/libevent/lib/libevent-2.1.so.6 ];then      echo "Libevent has installed on your system"   else       echo "Installing libevent..."      tar xf ${url3##*/} &>/dev/null      cd $(echo "${url3##*/}" |sed 's/\.tar\.gz//g')      ./configure --prefix=/usr/local/libevent      make && make install      echo "/usr/local/libevent/lib" > /etc/ld.so.conf.d/libevent.conf      ldconfig   fi}install_memcached() {cd $download_dirtar xf ${url1##*/} &>/dev/nullgzip -d -c ${download_dir}${url2##*/} > ${download_dir}repcached-2.3.1-1.4.13.patchcd $(echo "${url1##*/}" |sed 's/\.tar\.gz//g')patch -p1 <../repcached-2.3.1-1.4.13.patch./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent --enable-replication --enable-64bitmake && make installecho 'export PATH=/usr/local/memcached/bin:$PATH' > /etc/profile.d/memcached.shsource /etc/profile.d/memcached.sh}check_userinstall_progs wget gccdownload $url1 $url2 $url3if [ -f ${download_dir}${url1##*/} ] && [ -f ${download_dir}${url2##*/} ] && [ -f ${download_dir}${url3##*/} ];then   install_libevent   install_memcachedelse    echo "There is a lack of necessary installation packages,please check."   echo "You can download the package manually and put the package into: /usr/local/src"   exit 1fiif [ -f /usr/local/memcached/bin/memcached ];then   echo -e "\033[32mCongratulations,you have successfuly installed memcached!\033[0m"    cd $download_dir   rm -rf ${download_dir}$(echo "${url1##*/}" |sed 's/\.tar\.gz//g')   rm -rf ${download_dir}$(echo "${url3##*/}" |sed 's/\.tar\.gz//g')else   echo -e "\033[31mInstalled memcached failed,please check!\033[0m"fi echo 'PORT="11211"' > /etc/sysconfig/memcachedecho 'MAXCONN="1024"' >> /etc/sysconfig/memcachedecho 'CACHESIZE="64"' >> /etc/sysconfig/memcachedecho 'OPTIONS=""' >> /etc/sysconfig/memcachedif id -u memcached &>/dev/null || id -g memcached &>/dev/null;then   echo -e "\033[31mUser or group 'memcached' exists and now use 'nobody'as a user\033[0m"   echo 'USER="nobody"' >> /etc/sysconfig/memcachedelse   groupadd -r memcached   useradd -r -s /sbin/nologin -g memcached memcached   echo 'USER="memcached"' >> /etc/sysconfig/memcached   chown -R memcached:memcached /usr/local/memcachedfiexit 0##############################################################################   下面分为CentOS6、CentOS7提供的服务脚本                                  #################################################################################centos6服务脚本,将其写入/etc/rc.d/init.d/memcached文件####!/bin/bash## Init file for memcached## chkconfig: - 86 14# description: Distributed memory caching daemon## processname: memcached# config: /etc/sysconfig/memcached. /etc/rc.d/init.d/functions. /etc/sysconfig/memcached## Default variablesRETVAL=0prog="/usr/local/memcached/bin/memcached"desc="Distributed memory caching"lockfile="/var/lock/subsys/memcached"start() {        echo -n $"Starting $desc (memcached): "        daemon $prog -d -p $PORT -u $USER -c $MAXCONN -m $CACHESIZE $OPTIONS        RETVAL=$?        [ $RETVAL -eq 0 ] && success && touch $lockfile || failure        echo        return $RETVAL}stop() {        echo -n $"Shutting down $desc (memcached): "        killproc $prog        RETVAL=$?        [ $RETVAL -eq 0 ] && success && rm -f $lockfile || failure        echo        return $RETVAL}restart() {        stop        start}reload() {        echo -n $"Reloading $desc ($prog): "        killproc $prog -HUP        RETVAL=$?        [ $RETVAL -eq 0 ] && success || failure        echo        return $RETVAL}case "$1" in  start)        start        ;;  stop)        stop        ;;  restart)        restart        ;;  condrestart)        [ -e $lockfile ] && restart        RETVAL=$?        ;;         reload)        reload        ;;  status)        status $prog        RETVAL=$?        ;;   *)        echo $"Usage: $0 {start|stop|restart|condrestart|status}"        RETVAL=1esacexit $RETVAL###centos7服务脚本,将其写入/usr/lib/systemd/system/memcached.service文件###[Unit]Description=MemcachedBefore=httpd.serviceAfter=network.target[Service]Type=simpleEnvironmentFile=-/etc/sysconfig/memcachedExecStart=/usr/local/memcached/bin/memcached -u $USER -p $PORT -m $CACHESIZE -c $MAXCONN $OPTIONS[Install]WantedBy=multi-user.target