设为首页 收藏本站
查看: 717|回复: 0

[经验分享] 集群三 php+memcached缓存服务器

[复制链接]

尚未签到

发表于 2018-12-14 12:51:18 | 显示全部楼层 |阅读模式
nginx+php 安装
yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel gd gd-devel curl curl-devel e2fsprogs e2fsprogs-devel  krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers pcre pcre-devel ImageMagick ImageMagick-devel git
mkdir /hequan && cd /hequan
wget http://cn2.php.net/distributions/php-5.6.22.tar.bz2
wget http://ncu.dl.sourceforge.net/project/mhash/mhash/0.9.9.9/mhash-0.9.9.9.tar.gz
wget http://nchc.dl.sourceforge.net/project/mcrypt/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz
wget http://nchc.dl.sourceforge.net/project/mcrypt/MCrypt/2.6.8/mcrypt-2.6.8.tar.gz
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
wget http://pecl.php.net/get/memcache-2.2.7.tgz
wget http://xcache.lighttpd.net/pub/Releases/3.2.0/xcache-3.2.0.tar.gz
wget http://pecl.php.net/get/imagick-3.1.2.tgz
git clone https://github.com/cfsego/ngx_log_if.git
php安装简单版
./configure --prefix=/usr/local/php --with-config-file-path=/etc --with-mysql --with-mysqli \
--with-config-file-scan-dir=/etc/php.d --enable-fpm --with-gd --with-iconv \
--with-zlib --enable-xml --enable-inline-optimization --with-openssl --enable-pcntl \
--enable-zip --with-curl --with-bz2 --with-jpeg-dir --with-png-dir --enable-mbstring
tar -zvxf libiconv-1.14.tar.gz
cd libiconv-1.14/srclib
sed -i -e '/gets is a security/d' ./stdio.in.h
cd ../
./configure --prefix=/application/
make
make install
cd /hequan
tar -zxvf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8/
./configure
make
make install
cd libltdl/
./configure --enable-ltdl-install
make
make install
cd /hequan
tar -zxvf mhash-0.9.9.9.tar.gz
cd mhash-0.9.9.9/
./configure
make
make install
ln -s /usr/local/lib/libmcrypt.la /usr/lib/libmcrypt.la
ln -s /usr/local/lib/libmcrypt.so /usr/lib/libmcrypt.so
ln -s /usr/local/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so.4
ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib/libmcrypt.so.4.4.8
ln -s /usr/local/lib/libmhash.a /usr/lib/libmhash.a
ln -s /usr/local/lib/libmhash.la /usr/lib/libmhash.la
ln -s /usr/local/lib/libmhash.so /usr/lib/libmhash.so
ln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2
ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib/libmhash.so.2.0.1
ln -s /usr/local/bin/libmcrypt-config /usr/bin/libmcrypt-config
cd /hequan
tar -zxvf mcrypt-2.6.8.tar.gz
cd mcrypt-2.6.8
export LD_LIBRARY_PATH=/usr/local/lib: LD_LIBRARY_PATH
./configure
make
make install
cd /hequan/
tar -jxvf php-5.6.22.tar.bz2
cd php-5.6.22
./configure --prefix=/usr/local/php --with-config-file-path=/application/php/etc --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-magic-quotes --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-mbstring --with-mcrypt --enable-ftp --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --disable-fileinfo --enable-maintainer-zts
make ZEND_EXTRA_LIBS='-liconv'
make install
cp php.ini-production /usr/local/php/etc/php.ini
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod u+x /etc/init.d/php-fpm
chkconfig --add php-fpm
chkconfig php-fpm on
groupadd www
useradd -s /sbin/nologin -g www -M www
mv /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
ln -s /usr/local/php/etc/php.ini /etc/php.ini
ln -s /usr/local/php/etc/php-fpm.conf /etc/php-fpm.conf
/usr/local/php/sbin/php-fpm
iptables -I INPUT -s 172.16.10.0/24 -p tcp --dport 9000 -j ACCEPT
zlib====》提供数据压缩用的函式库
pcre====》rewrite的支持库
openssl====》https的支持库
libiconv====》字符编码转换库
libxml====》XML库
libpng====》图片库
freetype====》字库
libmcrypt====》加密算法
mhash====》加密库
curl====》URL传输
gd====》绘图

yum -y install  nfs
vim /etc/exports
/data/web/      192.168.50.58/24(rw,sync)
/data/web/      192.168.50.59/24(rw,sync)
/data/web/      192.168.50.60/24(r,sync)
/data/web/      192.168.50.61/24(r,sync)
systemctl rstart nfs.service
systemctl enable nfs.service  
yum install nfs-utils  -y
showmount -e  192.168.50.62
mkdir -p /data/web/
mount -t nfs 192.168.50.62:/data/web/  /data/web
echo "DynamicServer is Health. "  > /data/web/www/health.php
echo "StaticServer  is Health. "   >  /data/web/www/health.html
Memcached 安装
下载
cd /tmp
wget http://downloads.sourceforge.net/levent/libevent-2.0.22-stable.tar.gz
wget http://www.memcached.org/files/memcached-1.4.33.tar.gz
tar zxvf libevent-2.0.22-stable.tar.gz
cd libevent-2.0.22-stable
./configure  -prefix=/usr/local/
make && make install
ls -al /usr/local/lib | grep libevent-   

cd /tmp
tar zxvf memcached-1.4.33.tar.gzsgh5+9
cd memcached-1.4.33
./configure  --with-libevent=/usr/local/ --enable-64bit --enable-threads
make && make install
ls -al /usr/local/bin/memcached  0sac
groupadd memcached
useradd -g memcached memcached
cd /var/run
mkdir memcached
chown -R memcached.memcached memcached
cp /tmp/memcached-1.4.33/scripts/memcached.sysv /etc/init.d/memcached
chown memcached.memcached /etc/init.d/memcached
chmod 755 /etc/init.d/memcached
vim /etc/init.d/memcached
PORT=11211
USER=memcached
MAXCONN=1024
CACHESIZE=128
OPTIONS=””
chown $USER /usr/local/bin/memcached
/usr/local/bin/memcached –d –p $PORT –u $USER –m $CACHESIZE –c $MAXCONN –P /var/run/memcached/memcached.pid $OPTIONS

启动
chkconfig --add memcached
chkconfig --level 235 memcached on
chkconfig --list memcached
service memcached start
ps -ef | grep memcached
service memcached stop
magent安装
cd /usr/local   
mkdir magent   
cd magent
tar zxvf magent-0.5.tar.gz
vim ketama.h          #在开头添加这三行
#ifndef SSIZE_MAX   
#define SSIZE_MAX 32767   
#endif
ln -s /usr/lib64/libm.so /usr/lib64/libm.a
/sbin/ldconfig
sed -i "s#LIBS = -levent#LIBS = -levent -lm#g" Makefile   
vi Makefile
CFLAGS = -lrt -Wall -O2 -g  #修改这行
make
keepalived设置
主memcache:    开机不启动keepalved  memcached
vim  /etc/keepalived/keepalived.conf
! Configuration File for keepalived   
global_defs {
router_id  mem1
}
vrrp_script chk_magent {
  script "/opt/magent.sh"
  interval 2
}
vrrp_script chk_memcached {
   script "killall -0 memcached"
   interval 1
   weight -20
}
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id  101
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.50.199/24
    }
    track_script {
        chk_magent
            chk_memcached
        }
   notify_master  "/etc/keepalived/changemail.py master"
   notify_backup   "/etc/keepalived/changemail.py backup"
   notify_fault    "/etc/keepalived/changemail.py fault"
}
vim  /opt/magent.sh
#!/bin/bash
k=`ps -ef |grep keepalived |grep -v grep |wc -l`
if [ $k -gt 0 ];then
    /usr/local/magent/magent  -u root -n 51200 -l 192.168.50.199 -p 12000 -s 192.168.50.63:11211 -b 192.168.50.64:11211
else
pkill -9 magent
fi
备用memcache:
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived   
global_defs {
router_id  mem2
}
vrrp_script chk_magent {
        script "/opt/magent.sh"
        interval 2
}
vrrp_script chk_memcached {
   script "killall -0 memcached"
   interval 1
   weight -20
}
vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id  101
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.50.199/24
    }
    track_script {
       chk_magent
          chk_memcached
        }
   notify_master  "/etc/keepalived/changemail.py master"
   notify_backup   "/etc/keepalived/changemail.py backup"
   notify_fault    "/etc/keepalived/changemail.py fault"
}
vim /opt/magent.sh
#!/bin/bash
k=`ip a |grep 192.168.50.199 |wc -l`
if [ $k -gt 0 ];then
        /usr/local/magent/magent -u root -n 51200 -l 192.168.50.199 -p 12000 -s 192.168.50.53:11211 -b 192.168.50.64:11211
else
pkill -9 magent
fi
注意:如果将故障的memcached节点修复后,缓存是不会再通过到已修复的节点上的,如果是magent指定的主节点故障,那么主节点的缓存数据会丢失,修复后不能立刻重启memcached服务,如果重启,客户端会去查询主节点的数据。并发高的网站会拖死数据库。因此,建议一般业务低峰期的时候再启动memcached主节点服务。然后通过magent再指定主缓存节点和备缓存节点。
1.若memcached读写的数据多,一定将关掉防火墙或将防火墙设置为不使用跟踪链接表,否则会导致/var/log/message报错“kernel: nf_conntrack: table full, dropping packet”,详情请参考本博客中的博文http://blog.csdn.net/yanggd1987/article/details/45886913。
2.使用service iptables stop关掉,并且不能用iptables -L -vnx查看,因此使用此命令会将防火墙开启,虽然规则是清空的,但仍会记录连接跟踪表。
https://my.oschina.net/kisops/blog/150995
安装php扩展
cd /tmp
tar zxvf /software/memcache-3.0.8.tgz -C /tmp
cd memcache-3.0.8
/usr/local/php/bin/phpize
./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config --with-zlib-dir
make
make install
vim /usr/local/php/etc/php.ini
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/"
extension=memcache.so
[Memcache]
memcache.allow_failover = 1
memcache.max_failover_attempts=20
memcache.chunk_size =8192
发布discuz
unzip /software/Discuz_X3.2_SC_UTF8.zip -d /discuz/
chmod -R 777 /discuz/
#开启memcache支持
vim /discuz/upload/config/config_global.php
$_config['memory']['memcache']['server'] = '192.168.50.199';  #magent代理服务器地址
$_config['memory']['memcache']['port'] = 12000;
$_config['memory']['memcache']['pconnect'] = 1;
$_config['memory']['memcache']['timeout'] = 1;
yum install -y telnet
telnet 192.168.50.199  12000
stats
STAT cmd_get 199
STAT cmd_set 37
STAT cmd_flush 0
STAT cmd_touch 0
STAT get_hits 167
STAT get_misses 32  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-651368-1-1.html 上篇帖子: php不能解析的故障 下篇帖子: PHP课程总结20161226
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表