LAMP网站架构---(二)PHP、nginx结合php-fpm、memcache、openresty

news/2024/5/17 7:40:36/文章来源:https://blog.csdn.net/s191946202/article/details/120094927

3#### 一、PHP的安装部署

网址导航:https://www.php.net/

PHP简介:

PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。

PHP-FPM简介:

PHP-FPM是一个PHP FastCGI管理器,是只用于PHP的,可以在 http://php-fpm.org/download下载得到.
PHP-FPM其实是PHP源代码的一个补丁,旨在将FastCGI进程管理整合进PHP包中。必须将它patch到你的PHP源代码中,在编译安装PHP后才可以使用。
新版PHP已经集成php-fpm了,不再是第三方的包了,推荐使用。PHP-FPM提供了更好的PHP进程管理方式,可以有效控制内存和进程、可以平滑重载PHP配置,比spawn-fcgi具有更多优点,所以被PHP官方收录了。在./configure的时候带 –enable-fpm参数即可开启PHP-FPM,其它参数都是配置php的。

Memcache:

Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。memcached是一个开源的、高性能的,具有分布式内存对象的缓存系统。memcached是通过在事先规划好的内存空间中缓存数据库中的数据,达到减少数据库的高并发访问,从而达到提升数据库的访问性能,加速动态应用服务的能力。在memcacahed中每条数据都是以key-value的形式存在。

OpenResty:

OpenResty 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。
OpenResty® 的目标是让你的Web服务直接跑在 Nginx 服务内部,充分利用 Nginx 的非阻塞 I/O 模型,不仅仅对 HTTP 客户端请求,甚至于对远程后端诸如 MySQL、PostgreSQL、Memcached 以及 Redis 等都进行一致的高性能响应。

1. 安装
wget http://172.25.28.250/pub/docs/lamp/php-7.4.12.tar.bz2
tar jxf php-7.4.12.tar.bz2 
cd /root/php-7.4.12
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --with-curl --with-iconv --with-zlib --with-openssl --enable-mysqlnd --with-mysqli --with-pdo-mysql --disable-debug --enable-sockets --enable-soap --enable-inline-optimization --enable-xml  --enable-ftp --enable-gd --enable-exif --enable-mbstring --enable-bcmath --with-fpm-systemd --with-mhash	编译
yum install -y systemd-devel libxml2-devel sqlite-devel libcurl-devel libpng-devel	根据编译提示安装依赖性
wget http://172.25.28.250/pub/docs/lamp/oniguruma-6.8.2-1.el7.x86_64.rpm  系统仓库中没有此安装包,所以从网上下载
wget http://172.25.28.250/pub/docs/lamp/oniguruma-devel-6.8.2-1.el7.x86_64.rpm	系统仓库中没有此安装包,所以从网上下载
yum install -y  oniguruma-devel-6.8.2-1.el7.x86_64.rpm oniguruma-6.8.2-1.el7.x86_64.rpm	安装依赖性
./configer	重新编译
make
make install
2. 部署:拷贝php-fpm配置文件
1)php-fpm.conf
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf	
2)www.conf
cd  /usr/local/php/etc/php-fpm.d/
cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf	
vim 	/usr/local/php/etc/php-fpm.d/www.confpid = run/php-fpm.pid	##取消注释
3)php.ini
cp /root/php-7.4.12/php.ini-production /usr/local/php/etc/php.ini
vim /usr/local/php/etc/php.inidate.timezone = Asia/Shanghai	##取消注释
4)php-fpm.service,读取并开启服务
cp /root/php-7.4.12/sapi/fpm/php-fpm.service /usr/lib/systemd/system
vim /usr/lib/systemd/system/php-fpm.service	##php-fpm启动文件#ProtectSystem=full			##注释掉
systemctl daemon-reload 
systemctl start php-fpm.service

二、nginx结合php-fpm

1、修改nginx配置文件

切入配置目录,编辑配置文件,注释之前的设定,取消php的注释。

vim /usr/local/nginx/conf/nginx.conflocation / {root   html;index  index.html index.htm index.php;}location ~ \.php$ {root           html;fastcgi_pass   127.0.0.1:9000;fastcgi_index  index.php;#fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;include        fastcgi.conf;}
vim /usr/local/nginx/html/index.php<?phpphpinfo()?>
nginx -s reload
宿主机浏览器访问172.25.28.1/index.php,出现php的测试页面表示成功
2、添加环境变量
cd
vim .bash_profile PATH=$PATH:$HOME/bin:/usr/local/php/bin
source .bash_profile 
which php		##/usr/local/php/bin/php
which phpize	##/usr/local/php/bin/phpize

三、php添加memcache功能模块

Memcache是danga.com的一个项目,最早是为 LiveJournal 服务的,目前全世界不少人使用这个缓存项目来构建自己大负载的网站,来分担数据库的压力。
它可以应对任意多个连接,使用非阻塞的网络IO。由于它的工作机制是在内存中开辟一块空间,然后建立一个HashTable,Memcached自管理这些HashTable。
Memcache官方网站:http://www.danga.com/memcached,更多详细的信息可以来这里了解

1、安装部署php的memcache
wget http://pecl.php.net/get/memcache-4.0.5.2.tgz				二选一
wget http://172.25.28.250/pub/docs/lamp/memcache-4.0.5.2.tgz	二选一
tar zxf memcache-4.0.5.2.tgz
cd memcache-4.0.5.2/
phpize	执行phpize,提醒缺少依赖。phpize是用来扩展php扩展模块的,通过phpize可以建立php的外挂模块。
yum install -y autoconf automake.noarch	安装依赖性
phpize	扩展成功./configure --enable-debug	对memcache进行源码编译,configure--make--make install 三步曲。makemake install
ls /usr/local/php/lib/php/extensions/no-debug-non-zts-20190902/	查看memcache.so是否存在
vim /usr/local/php/etc/php.ini ;;;;;;;;;;;;;;;;;;;;;;; Dynamic Extensions ;			在这个位置;;;;;;;;;;;;;;;;;;;;;;extension=memcache				连接php与memcache服务,938行插入
systemctl reload php-fpm.service
php -m | grep memcache				出现memcache表示添加成功
2、添加memcache功能模块
yum install -y memcached			安装memcached
systemctl start memcached.service	开启服务
cat /etc/sysconfig/memcached		11211端口PORT="11211"
netstat -antlp | grep 11211			查看有无11211端口
cp /root/memcache-4.0.5.2/example.php /usr/local/nginx/html/
cp /root/memcache-4.0.5.2/memcache.php /usr/local/nginx/html/
vim /usr/local/nginx/html/memcache.phpdefine('ADMIN_PASSWORD','westos');      // Admin Password					设定密码$MEMCACHE_SERVERS[] = '172.25.24.1:11211'; // add more as an array			server1IP#$MEMCACHE_SERVERS[] = 'mymemcache-server2:11211'; // add more as an array	注释	
nginx -s reload
systemctl start php-fpm.service
systemctl start memcached.service

宿主机浏览器测试:

在这里插入图片描述
用户memcache,密码westos
在这里插入图片描述
在这里插入图片描述

四、配置php加载模块openresty,构建nginx高速缓存

基于openresty(构建高效透明的缓存机制) 访问,能将缓存放在nginx中,速度更快。
使用memc-nginx和srcache-nginx模块构建高效透明的缓存机制。
如果需要做到高速缓存,nginx可以跳过php直接向memcache存储,但是只能做静态存储 ,如果需要动态存储,还是要调用php,因此两种缓存策略时同时在进行的。
在这里插入图片描述

1、安装部署
wget https://openresty.org/download/openresty-1.19.3.1.tar.gz		二选一
wget http://172.25.28.250/pub/docs/lamp/openresty-1.19.3.1.tar.gz	二选一
tar zxf openresty-1.19.3.1.tar.gz 
cd openresty-1.19.3.1/
./configure --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio
make
make install
2、软件配置

编辑配置文件,拷贝配置文件,重启服务。

vim /usr/local/openresty/nginx/conf/nginx.confuser  nginx;worker_processes  1;events {worker_connections  65535;}location ~ \.php$ {root           html;fastcgi_pass   127.0.0.1:9000;fastcgi_index  index.php;#fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;include        fastcgi.conf;}
cp /usr/local/nginx/html/example.php /usr/local/openresty/nginx/html/
cp /usr/local/nginx/html/index.php /usr/local/openresty/nginx/html/
/usr/local/openresty/nginx/sbin/nginx
/usr/local/openresty/nginx/sbin/nginx -t
/usr/local/openresty/nginx/sbin/nginx -s reload
3. 进一步配置来提升性能
 vim /usr/local/openresty/nginx/conf/nginx.confhttp {upstream memcache {server 127.0.0.1:11211;keepalive 512;					##保持512个不立即关闭的连接用于提升性能}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}location /memc {internal;						##表示只接受内部访问memc_connect_timeout 100ms;memc_send_timeout 100ms;memc_read_timeout 100ms;set $memc_key $query_string;	##使用内置的$query_string来作为keyset $memc_exptime 300;			##表示缓存失效时间memc_pass memcache;}
/usr/local/openresty/nginx/sbin/nginx -t
/usr/local/openresty/nginx/sbin/nginx -s reload

在真机进行测试。

ab -c10 -n 5000 http://172.25.24.1/example.phpComplete requests:      5000Failed requests:        0Total transferred:      1425000 bytesHTML transferred:       580000 bytes##可以看到压测速度很快,且没有报错,速度很快。
ab -c10 -n 5000 http://172.25.24.1/index.phpComplete requests:      5000Failed requests:        492(Connect: 0, Receive: 0, Length: 492, Exceptions: 0)Total transferred:      358824457 bytesHTML transferred:       357979457 bytes##传输量大幅度提升

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_903824.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LAMP网站架构---(三)Tomcat、memcache交互存储

Tomcat Tomcat是Apache下的一个核心子项目&#xff0c;是使用量较大的免费的JAVA服务器。主要处理的是JSP页面和Servlet文件。Tomcat常常与Apache整合起来使用&#xff0c;Apache处理静态页面&#xff0c;比如Html页面&#xff0c;而Tomcat负责编译处理JSP页面与Servlet。在静态…

LAMP网站架构---(四)LVS+Keepalived高可用负载均衡

基本信息 简介&#xff1a; LVS是Linux Virtual Server的简写&#xff0c;意即Linux虚拟服务器&#xff0c;是一个虚拟的服务器集群系统&#xff1b;本项目在1998年5月由章文嵩博士成立&#xff0c;是中国国内最早出现的自由软件项目之一 使用集群技术和Linux操作系统实现一…

LAMP网站架构---(五)HAProxy+Pacemaker高可用负载均衡

基本信息 HAProxy是一个使用C语言编写的自由及开放源代码软件&#xff0c;其提供高可用性、负载均衡&#xff0c;以及基于TCP和HTTP的应用程序代理 HAProxy特别适用于那些负载特大的web站点&#xff0c;这些站点通常又需要会话保持或七层处理 HAProxy运行在当前的硬件上&…

javaweb项目 基于jsp+servlet的 个人博客网站

源代码和获取更多信息 >源代码MyBlog MyBlog a personal blog site based on Jsp/Servlet - 基于jsp/servlet的个人博客网站 introduction - 简介 java web博客项目&#xff0c;实现mvc模式&#xff0c;没有使用到框架&#xff0c;实现了首页预览&#xff0c;文章发布&a…

网络另类生意闷声挣钱 一人经营几十万个网站

对于自己的“另类生意”&#xff0c;许扬有充分的自信&#xff0c;“我就是把整个业务模式都公开&#xff0c;别人也很难复制&#xff0c;太难了”。 本报记者 徐胤 摄 创业篇 视频网站、交友网站、行业网站&#xff0c;正当数以万计的网络掘金者们在这些热门业务中争得头破血流…

网站测试步骤

网站测试需分以下五个阶段进行才能提交客户&#xff0c;所有测试均提供测试报告&#xff1a; a.功能测试  b.性能测试  c.可用性测试  d.兼容性测试  e.安全测试 功能测试&#xff1a; 1、链接测试 链接是Web应用系统的一个主要特征&#xff0c;它是在页面之间切换和指…

给自己的网站添加HTTPS / 优化 / 续约

写在前面 这里面我主要是自己独立的服务器添加HTTPS支持&#xff0c;关于对GitHub个人站点添加的以后再写。我的笔记和操作使用的是免费的域名和免费的HTTPS证书&#xff0c;但是操作对于所有的来说都是一样的。证书基于 TrustAsia&#xff0c; 别的都差不多的。VPS 上用的LNM…

使用IntelliJ IDEA开发SpringMVC网站(三)数据库配置

注&#xff1a;在阅读本文前&#xff0c;请先阅读&#xff1a; 使用IntelliJ IDEA开发SpringMVC网站&#xff08;一&#xff09;开发环境 使用IntelliJ IDEA开发SpringMVC网站&#xff08;二&#xff09;框架配置 访问GitHub下载最新源码&#xff1a;https://github.com/gauss…

大型网站应用之海量数据和高并发解决方案总结一二

一、网站应用背景 开发一个网站的应用程序&#xff0c;当用户规模比较小的时候&#xff0c;使用简单的&#xff1a;一台应用服务器一台数据库服务器一台文件服务器&#xff0c;这样的话完全可以解决一部分问题&#xff0c;也可以通过堆硬件的方式来提高网站应用的访问性能&…

Yupoo! 的网站技术架构

作者: Fenng | 可以转载, 转载时务必以超链接形式标明文章原始出处和作者信息及版权声明网址: http://www.dbanotes.net/arch/yupoo_arch.html 又有机会爆料国内 Web 2.0 网站的架构了。这次是 Yupoo! 。非正式的采访了一下 Yupoo!(又拍网) 的创建人之一的 阿华&#xff08;沈志…

.NET 发布网站步骤

本文章分为三个部分: web网站发布、IIS6 安装方法、ASP.NET v4.0 安装方法 一、web网站发布 1.打开 Visual Studio 2013 编译环境 2.在其解决方案上右击弹出重新生成解决方案,以查看是否有错误 3.如果项目没有错误右击WebUI层发布

新概念绿色上网工具,向网站病毒say no

Dear All: 近來很多網站都含有病毒或木馬程式,而上網者多數都是用超級用戶或power user的權限上網,中招後惡意程序會更改windows系統,或設置一些木馬程序.用戶電腦的資料完全暴露,而且還要忍受廣告困擾,雖然裝有防毒軟件,但防毒軟件也不是萬能,特別是木馬程序,經常變化.所以用戶…

PHP——网站构成即LAMP基础知识

网站的构成&#xff1a; 客户端IE/FireFox/Safari等多种浏览器 超文本标记语言HTML 层叠样式表CSS 客户端脚本编程语言JavaScript/VBScript/Applet等中的一种 Web服务器Apache/ Nginx/TomCat/IIS等中的一种 服务器端编程语言PHP/JSP/ASP等中的一种 数据库管理系统MySQL…

网站架构的伸缩性设计

网站开发初期&#xff0c;我们习惯性把所有代码都写到一个项目中。 前台、后台、缓存、数据库、静态资源... 等等。 网站系统物理分离 慢慢的系统会原来越大&#xff0c;很显然需要面对大量用户的高并发访问和存储海量数据。 很多用户的请求&#xff0c;不可能在一台服务器上…

以电商网站为例,谈大型分布式架构设计与优化

本文大纲&#xff1a; 目录 一、使用电商案例的原因 二、电商网站需求 三、网站初级架构 四、系统容量预估 五、网站架构分析 六.网站架构优化 本文主题为电商网站架构案例&#xff0c;将介绍如何从电商网站的需求&#xff0c;到单机架构&#xff0c;逐步演变为常用的、…

使用cloudflare+wzfou为自己的网站配置CDN加速

本文同步于个人博客 &#xff1a; 蝴蝶飞不过沧海 | Blog 本文链接 泛播 Cloudflare 挖站否 Wzfou 为什么用到挖站否?单独泛播不就可以作cdn加速吗? 众所周知泛播&#xff08;cloudflare&#xff09;国外知名免费cdn服务商无需网站备案 但有个缺点就是单独使用泛播&…

企业网站建设需要做哪些前期准备工作?

随着互联网的发展&#xff0c;制作官方网站已经成了众多企业的需求。定制企业网站有助于提升企业形象&#xff0c;增加品牌曝光度&#xff0c;配合网络营销&#xff0c;可以给企业带来更多的业务。很多企业选择了外包给专业的开发公司来定制自己的网站&#xff0c;但并不是说所…

程序员应该熟知的网站TIOBE

TIOBE TIOBE 排行榜是根据互联网上有经验的程序员、课程和第三方厂商的数量&#xff0c;并使用搜索引擎&#xff08;如Google、Bing、Yahoo!&#xff09;以及Wikipedia、Amazon、YouTube统计出排名数据&#xff0c;只是反映某个编程语言的热门程度&#xff0c;并不能说明一门编…

使用Chrome浏览器查看淘宝的IPhone版网站

用IPhone手机访问http://m.taobao.com &#xff0c;淘宝的设计已经达到了和APP相媲美的地步。多次想查看其源码学习&#xff0c;单无奈用PC浏览器访问该网址&#xff0c;出现的是一个比较简化的wap2.0版本的。经过若干的夜晚的冥思苦想&#xff0c;终于想出了解决方案。 1.IPho…

Springboot+Vue开发旅游网站

项目简介 所需技术栈&#xff1a; 后端技术栈&#xff1a;springboot mybatis 前后端分离&#xff1a;axios、json 前端技术栈、技术架构&#xff1a;Vue、node.js 前置知识&#xff1a; 了解 Vue 组件之前的知识 对 springboot mybatis 较熟悉 开发流程&#xff1a; 需求…