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

[经验分享] LNMMP之nginx+“php-fpm”及memcached-Sysinit

[复制链接]

尚未签到

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

  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_name  www.a.com;
  
#       root /www/a.com;
  location ~\.php$ {
  fastcgi_pass   172.16.20.61:9000;
  root /web;
  fastcgi_index  index.php;
  fastcgi_param  SCRIPT_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监听端口已开启
[root@My1 ~]# ss -tunlp  
tcp   LISTEN     0      128       172.16.20.61:9000                *:*      users:(("php-fpm",2148,7),("php-fpm",2149,0),("php-fpm",2150,0))
DSC0001.jpg

  二、memcached服务器的配置
  1、安装启动memcached
[root@My2 ~]# yum install memcached  [root@My1 ~]# memcached -u memcached
  
[root@My1 ~]# 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详细信息
[root@My2 ~]# 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提供一组基本命令用于基于命令行调用其服务或查看服务器状态等。
[root@My2 ~]# 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所在的主机安装
[root@My1 ~]# cd memcache-2.2.7  
[root@My1 memcache-2.2.7]# /usr/local/php/bin/ph
  
phar        phar.phar   php         php-cgi     php-config  phpize
  
[root@My1 memcache-2.2.7]# /usr/local/php/bin/phpize
  
Configuring for:
  
PHP Api Version:         20100412
  
Zend Module Api No:      20100525
  
Zend Extension Api No:   220100525
  
[root@My1 memcache-2.2.7]# ./configure --with-php-config=/usr/local/php/bin/php-config --enable-memcache
  
[root@My1 memcache-2.2.7]# 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是否能与后端缓存服务器联系了。
[root@My1 php]# vim /web/testmem.php  

运维网声明 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.iyunv.com/thread-633586-1-1.html 上篇帖子: Nginx:The plain HTTP request was sent to HTTPS port解决办法 下篇帖子: Nginx Unit 与 LEMUR 新架构
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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