LAMP:
a: apache
m: mariadb ,mysql
p: php,perl,python
LAMMP:memcached
静态资源:静态内容,客户端从服务器获得的资源的表现形式与原文件相同;
动态资源:通常是程序文件,需要在服务器端执行以后,把执行的结果返回给客户端;
动态站点:
客户端请求资源,web服务器去时别客户端请求的是哪种类型的资源,(可以通过设置过滤器,通过后缀名识别),一但发现请求的是动态资源,则将请求交给另外一个程序(所以web服务器需要与另外一个程序建立交互),让另外一个程序去加载动态资源。加载完成后得到的是一个程序文件,所以他还要在本地运行,把运行的结果返回给web服务器,web服务器再将结果封装成响应报文返回给客户端。
web服务器与程序交互需要时间,程序文件运行也需要时间,这也就使得请求动态资源比请求静态资源慢了许多。
对于客户端和应用程序服务器来说,web服务器起始就相当于一个网关,起到一个过滤作用
web服务器和另外一个程序(应用程序服务器)怎么交互? 通过cgi协议
CGI:Common Gateway Interface 通用网关接口。
程序 = 指令+数据
httpd就是通过cgi_module这个模块将自己扮演成cgi的客户端。
客户端 (http协议) web服务器 (cgi协议 )应用程序服务器(mysql协议)mysql服务器
以下内容摘自:https://www.cnblogs.com/JohnABC/p/3529786.html
FastCGI:是一个可伸缩地、高速地在HTTP server和动态脚本语言间通信的接口。多数流行的HTTP server都支持FastCGI,包括Apache、Nginx和lighttpd等,同时,FastCGI也被许多脚本语言所支持,其中就有PHP。
FastCGI 是从CGI发展改进而来的。传统CGI接口方式的主要缺点是性能很差,因为每次HTTP服务器遇到动态程序时都需要重新启动脚本解析器来执行解析,然后结 果被返回给HTTP服务器。这在处理高并发访问时,几乎是不可用的。另外传统的CGI接口方式安全性也很差,现在已经很少被使用了。
FastCGI 接口方式采用C/S结构,可以将HTTP服务器和脚本解析服务器分开,同时在脚本解析服务器上启动一个或者多个脚本解析守护进程。当HTTP服务器每次遇 到动态程序时,可以将其直接交付给FastCGI进程来执行,然后将得到的结果返回给浏览器。这种方式可以让HTTP服务器专一地处理静态请求或者将动态脚本服务器的结果返回给客户端,这在很大程度上提高了整个应用系统的性能。
httpd + php有三种结合方式:
module:将php作为httpd的模块来运行,比较简单常见。
cgi:性能较差,不常用
fastcgi(fpm):属于cgi的扩展。
php要求httpd工作在prefork MPM
phpMyadmin: mariadb的WebGUI
php解释器无需与MariaDB交互,只有那些用到数据存储系统的程序才需要与数据存储交互
存储系统:
文件系统:文件
SOL:MariDB,Oracle。。。。。。
NoSQL:redis,mongdb,......
NewSOL:
php配置文件:/etc/php.ini ,/etc/php.d/*.ini