zycchen 发表于 2018-11-11 10:03:54

LNMMP之nginx+“php-fpm”及memcached-Sysinit

  LNMMP之nginx+“php-fpm”及memcached
  说明:nginx不能像apache一样动态的装卸载php模块,所以只能使用fastcgi协议跟后端php建立连接。Nginx提供静态页面,并将动态页面提交给后端php-fpm服务器处理,
  为了应付更大的访问量对服务器造成的压力,方案引进了memcached做为缓存服务器。
  Memcached是一种开发工具,作为一个服务器启动使用。要想使用它需要程序员在php代码中调用使用。需要结合使用memcachephp扩展来实现调用这一功能。

  Memcached简介:
  Memcached是一种免费、开源、高性能、分布式内存对象缓存系统,用于加速动态web应用程序,减轻数据库负载。可应用各种需要缓存的场景,其主要目的是通过降低对Database的访问来加速web应用程序。它是一个基于内存的“键值对”存储,用于存储数据库调用、API调用或页面引用结果的直接数据,如字符串、对象等。
  Memcached简单而强大。它的简单的设计促进快速部署,易于开发,解决了大数据缓存面临许多问题。是一款比较常用的开发工具。
  Memcached工作机制
  1. 简单key/value存储:服务器不关心数据本身的意义及结构,只要是可序列化数据即可。、
  2.功能的实现一半依赖于客户端,一半基于服务器端:客户负责发送存储项至服务器端、从服务端获取数据以及无法连接至服务器时采用相应的动作;服务端负责接收、存储数据,并负责数据项的超时过期;
  3. 各服务器间彼此无视:不在服务器间进行数据同步;
  4. O(1)的执行效率
  5. 清理超期数据:默认情况下,Memcached是一个LRU缓存,同时,它按事先预订的时长清理超期数据;memcached不会删除任何已缓存数据,只是在其过期之后不再为客户所见;而且,memcached也不会真正按期限清理缓存,而仅是当get命令到达时检查其时长;
  官网下载地址:http://www.memcached.org/
  安装:
  l Nginx源码安装:
  编译安装nginx需要事先需要安装开发包组"Development Tools"和 "Development Libraries"。同时,还需要专门安装pcre-devel包:
  首先添加用户nginx,实现以之运行nginx服务进程:
# groupadd -r nginx  
# useradd -r -g nginx nginx
  
接着开始编译和安装:
  
# ./configure \
  --prefix=/usr/local/nginx \
  --sbin-path=/usr/local/nginx/sbin/nginx \
  --conf-path=/etc/nginx/nginx.conf \
  --error-log-path=/var/log/nginx/error.log \
  --http-log-path=/var/log/nginx/access.log \
  --pid-path=/var/run/nginx/nginx.pid\
  --lock-path=/var/lock/nginx.lock \
  --user=nginx \
  --group=nginx \
  --with-http_ssl_module \
  --with-http_flv_module \
  --with-http_stub_status_module \
  --with-http_gzip_static_module \
  --http-client-body-temp-path=/var/tmp/nginx/client/ \
  --http-proxy-temp-path=/var/tmp/nginx/proxy/ \
  --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \
  --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \
  --http-scgi-temp-path=/var/tmp/nginx/scgi \
  --with-pcre
  
# make && make install
  l 工作于fastcgi模式的php的安装
# yum -y groupinstall "X Software Development"  
如果想让编译的php支持mcrypt、mhash扩展和libevent,此处还需要如下几个rpm包并安装之:
  
libmcrypt-2.5.8-4.el5.centos.i386.rpm
  
libmcrypt-devel-2.5.8-4.el5.centos.i386.rpm
  
mhash-0.9.9-1.el5.centos.i386.rpm
  
mhash-devel-0.9.9-1.el5.centos.i386.rpm
  
mcrypt-2.6.8-1.el5.i386.rpm
  
# tar xf php-5.4.4.tar.bz2
  
# cd php-5.4.4
  
#./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --enable-fpm --enable-sockets --enable-sysvshm--with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib-dir --with-libxml-dir=/usr --enable-xml--with-mhash --with-mcrypt--with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --with-curl
  实验步骤:
  一、配置nginx
  1、配置nginx提供虚拟主机
server {  listen       80;
  server_namewww.a.com;
  
#       root /www/a.com;
  location ~\.php$ {
  fastcgi_pass   172.16.20.61:9000;
  root /web;
  fastcgi_indexindex.php;
  fastcgi_paramSCRIPT_FILENAME/scripts$fastcgi_script_name;
  include      fastcgi_params;
  fastcgi_cache fcgi;
  fastcgi_cache_valid 200 10m;
  fastcgi_cache_valid 301 302 3m;
  fastcgi_cache_valid any 1m;
  }
  location ~*/(status|ping){-----------可以查看php—fpm状态信息
  
#               root /www/a.com;
  fastcgi_pass 172.16.20.61:9000;
  fastcgi_param SCRIPT_FILENAME$fastcgi_script_name;
  include fastcgi_params;
  }
  2、测试nginx和php的结合是否成功运行
  后端php监听端口已开启
# ss -tunlp  
tcp   LISTEN   0      128       172.16.20.61:9000                *:*      users:(("php-fpm",2148,7),("php-fpm",2149,0),("php-fpm",2150,0))

  二、memcached服务器的配置
  1、安装启动memcached
# yum install memcached  # memcached -u memcached
  
# ss -tunlp
  
udp    UNCONN   0      0                                                      :::11211                                                   :::*      users:(("memcached",2428,29))
  
tcp    LISTEN   0      128                                                      :::11211                                                   :::*      users:(("memcached",2428,27))
  
tcp    LISTEN   0      128                                                       *:11211                                                    *:*      users:(("memcached",2428,26))
  
tcp    LISTEN   0      128                                                      :::111                                                   :::*
  2、查看memcached详细信息
# memcached -u memcached -vv
  
3、slab>
  
4、slab>
  
5、slab>
  
6、slab>
  
7、slab>
  
8、slab>
  
9、slab>
  
10、slab>
  
11、slab>  3、使用telnet连接查看memcached信息
  Memcached提供一组基本命令用于基于命令行调用其服务或查看服务器状态等。
# telnet 127.0.0.1 11211  
Trying 127.0.0.1...
  
Connected to 127.0.0.1.
  
Escape character is '^]'.
  
Stats------------------键入stats查看详情
  
STAT pid 2480
  
STAT uptime 46
  
STAT time 1398506695
  
STAT version 1.4.4
  
STAT pointer_size 64
  
STAT rusage_user 0.003999
  
STAT rusage_system 0.000000
  
STAT curr_connections 10
  
STAT total_connections 12
  
add xuxu 0 50 12
  
hello xuxuxu
  
STORED
  
get xuxu
  
VALUE xuxu 0 12
  
hello xuxuxu
  
END
  三、安装memcachephp扩展,让php连接测试memcached
  程序员在开发的时候,自行调用了memcached的API,memcached的功能才能生效,而且要想使用还需要安装php和memcached 的扩展。可以去php官网下载memcache扩展包
  在php所在的主机安装
# cd memcache-2.2.7  
# /usr/local/php/bin/ph
  
phar      phar.phar   php         php-cgi   php-configphpize
  
# /usr/local/php/bin/phpize
  
Configuring for:
  
PHP Api Version:         20100412
  
Zend Module Api No:      20100525
  
Zend Extension Api No:   220100525
  
# ./configure --with-php-config=/usr/local/php/bin/php-config --enable-memcache
  
# make && make install
  安装完成的时候会生成一个memcache.so模块的路径,记得把这个路径记下来写到php的配置文件中。
  编辑/usr/local/php/lib/php.ini,在“动态模块”相关的位置添加如下一行来载入memcache扩展:
  extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/memcache.so
  然后就可以写一个测试页面,来测试php是否能与后端缓存服务器联系了。
# vim /web/testmem.php  
页: [1]
查看完整版本: LNMMP之nginx+“php-fpm”及memcached-Sysinit