auto_lnmp/include/memcached.sh
2021-08-19 06:35:24 +08:00

204 lines
6.8 KiB
Bash

#!/usr/bin/env bash
Install_PHPMemcache()
{
echo "Install memcache php extension..."
cd ${cur_dir}/src
if echo "${Cur_PHP_Version}" | grep -Eqi '^8.';then
Download_Files ${Download_Mirror}/web/memcache/${PHP8Memcache_Ver}.tgz ${PHP8Memcache_Ver}.tgz
Tar_Cd ${PHP8Memcache_Ver}.tgz ${PHP8Memcache_Ver}
elif echo "${Cur_PHP_Version}" | grep -Eqi '^7.';then
Download_Files ${Download_Mirror}/web/memcache/${PHP7Memcache_Ver}.tgz ${PHP7Memcache_Ver}.tgz
Tar_Cd ${PHP7Memcache_Ver}.tgz ${PHP7Memcache_Ver}
else
Download_Files ${Download_Mirror}/web/memcache/${PHPMemcache_Ver}.tgz ${PHPMemcache_Ver}.tgz
Tar_Cd ${PHPMemcache_Ver}.tgz ${PHPMemcache_Ver}
fi
${PHP_Path}/bin/phpize
./configure --with-php-config=${PHP_Path}/bin/php-config
Make_Install
cd ../
}
Install_PHPMemcached()
{
echo "Install memcached php extension..."
cd ${cur_dir}/src
Get_Dist_Name
if [ "$PM" = "yum" ]; then
yum install cyrus-sasl-devel -y
Get_Dist_Version
if echo "${CentOS_Version}" | grep -Eqi '^5'; then
yum install gcc44 gcc44-c++ libstdc++44-devel -y
export CC="gcc44"
export CXX="g++44"
fi
elif [ "$PM" = "apt" ]; then
export DEBIAN_FRONTEND=noninteractive
apt-get install libsasl2-2 sasl2-bin libsasl2-2 libsasl2-dev libsasl2-modules -y
fi
Download_Files ${Download_Mirror}/web/libmemcached/${Libmemcached_Ver}.tar.gz
Tar_Cd ${Libmemcached_Ver}.tar.gz ${Libmemcached_Ver}
if gcc -dumpversion|grep -Eq "^[7-9]|10"; then
patch -p1 < ${cur_dir}/src/patch/libmemcached-1.0.18-gcc7.patch
fi
./configure --prefix=/usr/local/libmemcached --with-memcached
Make_Install
cd ../
cd ${cur_dir}/src
if echo "${Cur_PHP_Version}" | grep -Eqi '^8.';then
[[ -d "php-memcached-src" ]] && rm -rf "php-memcached-src"
Get_Country
if [ "${country}" = "CN" ]; then
git clone https://github.com.cnpmjs.org/php-memcached-dev/php-memcached php-memcached-src
cd php-memcached-src
else
git clone https://github.com/php-memcached-dev/php-memcached php-memcached-src
cd php-memcached-src
fi
elif echo "${Cur_PHP_Version}" | grep -Eqi '^7.';then
Download_Files ${Download_Mirror}/web/php-memcached/${PHP7Memcached_Ver}.tgz ${PHP7Memcached_Ver}.tgz
Tar_Cd ${PHP7Memcached_Ver}.tgz ${PHP7Memcached_Ver}
else
Download_Files ${Download_Mirror}/web/php-memcached/${PHPMemcached_Ver}.tgz ${PHPMemcached_Ver}.tgz
Tar_Cd ${PHPMemcached_Ver}.tgz ${PHPMemcached_Ver}
fi
${PHP_Path}/bin/phpize
./configure --with-php-config=${PHP_Path}/bin/php-config --enable-memcached --with-libmemcached-dir=/usr/local/libmemcached
Make_Install
cd ../
}
Install_Memcached()
{
ver="1"
echo "Which memcached php extension do you choose:"
echo "Install php-memcache, please enter: 1"
echo "Install php-memcached, please enter: 2"
read -p "Enter 1 or 2 (Default 1): " ver
if [ "${ver}" = "1" ]; then
echo "You choose php-memcache"
PHP_ZTS="memcache.so"
elif [ "${ver}" = "2" ]; then
echo "You choose php-memcached"
PHP_ZTS="memcached.so"
else
ver="1"
echo "You choose php-memcache"
PHP_ZTS="memcache.so"
fi
echo "====== Installing memcached ======"
Press_Start
rm -f ${PHP_Path}/conf.d/005-memcached.ini
Addons_Get_PHP_Ext_Dir
zend_ext=${zend_ext_dir}${PHP_ZTS}
if [ -s "${zend_ext}" ]; then
rm -f "${zend_ext}"
fi
cat >${PHP_Path}/conf.d/005-memcached.ini<<EOF
extension = ${PHP_ZTS}
EOF
echo "Install memcached..."
cd ${cur_dir}/src
if [ -s /usr/local/memcached/bin/memcached ]; then
echo "Memcached already exists."
else
Download_Files ${Download_Mirror}/web/memcached/${Memcached_Ver}.tar.gz ${Memcached_Ver}.tar.gz
Tar_Cd ${Memcached_Ver}.tar.gz ${Memcached_Ver}
./configure --prefix=/usr/local/memcached
make &&make install
cd ../
rm -rf ${cur_dir}/src/${Memcached_Ver}
ln -sf /usr/local/memcached/bin/memcached /usr/bin/memcached
\cp ${cur_dir}/init.d/init.d.memcached /etc/init.d/memcached
chmod +x /etc/init.d/memcached
useradd -s /sbin/nologin nobody
fi
if [ ! -d /var/lock/subsys ]; then
mkdir -p /var/lock/subsys
fi
StartUp memcached
if [ "${ver}" = "1" ]; then
Install_PHPMemcache
elif [ "${ver}" = "2" ]; then
Install_PHPMemcached
fi
echo "Copy Memcached PHP Test file..."
\cp ${cur_dir}/conf/memcached${ver}.php ${Default_Website_Dir}/memcached.php
Restart_PHP
if command -v iptables >/dev/null 2>&1; then
if iptables -C INPUT -i lo -j ACCEPT; then
iptables -A INPUT -p tcp --dport 11211 -j DROP
iptables -A INPUT -p udp --dport 11211 -j DROP
if [ "$PM" = "yum" ]; then
service iptables save
service iptables reload
elif [ "$PM" = "apt" ]; then
if [ -s /etc/init.d/netfilter-persistent ]; then
/etc/init.d/netfilter-persistent save
/etc/init.d/netfilter-persistent reload
else
/etc/init.d/iptables-persistent save
/etc/init.d/iptables-persistent reload
fi
fi
fi
fi
echo "Starting Memcached..."
/etc/init.d/memcached start
if [ -s "${zend_ext}" ] && [ -s /usr/local/memcached/bin/memcached ]; then
Echo_Green "====== Memcached install completed ======"
Echo_Green "Memcached installed successfully, enjoy it!"
else
rm -f ${PHP_Path}/conf.d/005-memcached.ini
Echo_Red "Memcached install failed!"
fi
}
Uninstall_Memcached()
{
echo "You will uninstall Memcached..."
Press_Start
rm -f ${PHP_Path}/conf.d/005-memcached.ini
Restart_PHP
Remove_StartUp memcached
echo "Delete Memcached files..."
rm -rf /usr/local/libmemcached
rm -rf /usr/local/memcached
rm -rf /etc/init.d/memcached
rm -rf /usr/bin/memcached
if command -v iptables >/dev/null 2>&1; then
iptables -D INPUT -p tcp --dport 11211 -j DROP
iptables -D INPUT -p udp --dport 11211 -j DROP
if [ "$PM" = "yum" ]; then
service iptables save
service iptables reload
elif [ "$PM" = "apt" ]; then
if [ -s /etc/init.d/netfilter-persistent ]; then
/etc/init.d/netfilter-persistent save
/etc/init.d/netfilter-persistent reload
else
/etc/init.d/iptables-persistent save
/etc/init.d/iptables-persistent reload
fi
fi
fi
Echo_Green "Uninstall Memcached completed."
}