第十八章 lamp架构

发布时间:2025-03-10 点击:22
建站服务器
18.1 lamp简介
有了前面学习的知识的铺垫,今天可以来学习下第一个常用的web架构了。
所谓lamp,其实就是由linux apache mysql/mariadb php/perl/python的一组动态网站或者服务器的开源软件,除linux外其它各部件本身都是各自独立的程序,但是因为经常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的web应用程序平台。
lamp指的是linux(操作系统)、apache(http服务器)、mysql(也指mariadb,数据库软件)和php(有时也是指perl或python)的第一个字母,一般用来建立web应用平台
18.2 web服务器工作流程
在说lamp架构平台的搭建前,我们先来了解下什么是cgi,什么是fastcgi,什么是……
web服务器的资源分为两种,静态资源和动态资源。
所谓静态资源就是指静态内容,客户端从服务器获得的资源的表现形式与原文件相同。可以简单的理解为就是直接存储于文件系统中的资源
动态资源则通常是程序文件,需要在服务器执行之后,将执行的结果返回给客户端。
那么web服务器如何执行程序并将结果返回给客户端呢?下面通过一张图来说明一下web服务器如何处理客户端的请求
如上图所示
阶段①显示的是httpd服务器(即apache)和php服务器通过fastcgi协议进行通信,且php作为独立的服务进程运行
阶段②显示的是php程序和mysql数据库间通过mysql协议进行通信。php与mysql本没有什么联系,但是由php语言写成的程序可以与mysql进行数据交互。同理perl和python写的程序也可以与mysql数据库进行交互
18.2.1 cgi与fastcgi
上图阶段①中提到了fastcgi,下面我们来了解下cgi与fastcgi。
cgi(common gateway interface,通用网关接口),cgi是外部应用程序(cgi程序)与web服务器之间的接口标准,是在cgi程序和web服务器之间传递信息的过程。cgi规范允许web服务器执行外部程序,并将它们的输出发送给web浏览器,cgi将web的一组简单的静态超媒体文档变成一个完整的新的交互式媒体。
fastcgi(fast common gateway interface)是cgi的改良版,cgi是通过启用一个解释器进程来处理每个请求,耗时且耗资源,而fastcgi则是通过master-worker形式来处理每个请求,即启动一个master主进程,然后根据配置启动几个worker进程,当请求进来时,master会从worker进程中选择一个去处理请求,这样就避免了重复的生成和杀死进程带来的频繁cpu上下文切换而导致耗时
18.2.2 httpd与php结合的方式
httpd与php结合的方式有以下三种:
a) modules:php将以httpd的扩展模块形式存在,需要加载动态资源时,httpd可以直接通过php模块来加工资源并返回给客户端
httpd prefork:libphp5.so(多进程模型的php)
httpd event or worker:libphp5-zts.so(线程模型的php)
b) cgi:httpd需要加载动态资源时,通过cgi与php解释器联系,获得php执行的结果,此时httpd负责与php连接的建立和断开等
c) fastcgi:利用php-fpm机制,启动为服务进程,php自行运行为一个服务,https通过socket与php通信
较于cgi方式,fastcgi更为常用,很少有人使用cgi方式来加载动态资源
18.2.3 web工作流程
下面来通过上面的图说明一下web的工作流程
客户端通过http协议请求web服务器资源,web资源收到请求后判断客户端请求的资源是静态资源或是动态资源,若是静态资源则直接从本地文件系统取之返回给客户端。否则若为动态资源则通过fastcgi协议与php服务器联系,通过cgi程序的master进程调度worker进程来执行程序以获得客户端请求的动态资源,并将执行的结果通过fastcgi协议返回给httpd服务器,httpd服务器收到php的执行结果后将其封装为http响应报文响应给客户端。在执行程序获取动态资源时若需要获得数据库中的资源时,由php服务器通过mysql协议与mysql/mariadb服务器交互,取之而后返回给httpd,httpd将从php服务器收到的执行结果封装成http响应报文响应给客户端。
18.3 lamp平台构建
18.3.1 通过yum安装方式构建lamp平台
centos7下构建lamp:
要安装的程序包:httpd,php,php-mysql,mariadb-server
注意:php要求httpd使用prefork mpm
yum-yinstallhttpdphpphp-mysqlmariadb-serversystemctlstarthttpd.servicesystemctlstartmariadb.service
centos6下构建lamp:
要安装的程序包:httpd,php,php-mysql,mysql-server
yum-yinstallhttpdphpphp-mysqlmysql-serverservicehttpdstartservicemysqldstart
18.3.2 编译安装lamp
http对fastcgi协议的支持:
a) httpd-2.2:需要额外安装fastcgi模块
wgethttps://mirrors.tuna.tsinghua.edu.cn/apache//httpd/mod_fcgid/mod_fcgid-2.3.9.tar.bz2tarxfmod_fcgid-2.3.9.tar.bz2cdmod_fcgid-2.3.9./configure.apxsmakemakeinstallb) httpd-2.4:自带fastcgi模块
安装次序:httpd,mariadb,php
安装httpd-2.2:
cd/usr/srcwgethttp://mirror.bit.edu.cn/apache//httpd/httpd-2.2.32.tar.bz2tarxfhttpd-2.2.32.tar.bz2cdhttpd-2.2.32./configure--prefix=/usr/local/httpdmakemakeinstallecho\\\'path=/usr/local/httpd/bin:$path\\\'>/etc/profile.d/httpd.shsource/etc/profile.d/httpd.shln-s/usr/local/httpd/include//usr/include/httpdecho\\\'manpath/usr/local/httpd/man\\\'>>/etc/man.configapachectlstart
安装mariadb:
cd/usr/srcwgethttp://ftpmirror.gnu.org/gcc/gcc-5.2.0/gcc-5.2.0.tar.bz2tarxfgcc-5.2.0.tar.bz2cdgcc-5.2.0./contrib/download_prerequisitesyum-yinstallgcc-c glibc-staticgcc./configure--prefix=/usr/local/gcc--enable-bootstrap--enable-checking=release--enable-languages=c,c --disable-multilibmake-j$(cat/proc/cpuinfo|grep\\\'processor\\\'|wc-l)makeinstallecho\\\'exportpath=/usr/local/gcc/bin:$path\\\'>/etc/profile.d/gcc.sh./etc/profile.d/gcc.shln-sv/usr/local/gcc/include//usr/include/gccecho\\\'/usr/local/gcc/lib64\\\'>/etc/ld.so.conf.d/gcc.confecho\\\'/usr/local/gcc/lib\\\'>>/etc/ld.so.conf.d/gcc.confldconfig-p|grepgcc#验证是否导出头文件cd/usr/srcyuminstall-yncurses-developenssl-developensslcmakemysql-develwgetgroupadd-r-g306mysqluseradd-r-g306-u306mysqlmkdir-pv/data/mydatachown-rmysql.mysql/data/mydatatarxfmariadb-10.2.6.tar.gzcdmariadb-10.2.6cmake.-dcmake_install_p

购行业兴盛,xituan.com巨资从国外回购
注册中国国家级别域名.cn需要身份证吗 .cn域名有哪些特殊的含义呢
百威啤酒 30枚以太币“拿下”Beer.eth,正式进军NFT市场
ssl证书放到哪里
云服务器是挂机宝吗
麻烦把此主机升级成同时转移数据
网站备案多少钱
网站空间打不开了是为什么呢