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]