Linux中LAMP 配置与应用

发布时间 2023-08-22 17:26:31作者: 行走的泡泡

一、LAMP架构介绍

1.1什么是LAMP

LAMP是Linux,Apache,MySQL和PHP的首字母缩写,一个开源Web开发平台,使用Linux作为操作系统,Apache作为Web服务器,MySQL作为RDBMS(关系数据库管理系统),PHP作为面向对象的脚本语言(有时使用使用Perl或Python替代PHP)。

因为平台具有四个层次,LAMP有时被称为LAMP堆栈。堆栈可以构建在不同的操作系统上。

LAMP的四个组成

了解LAMP堆栈的四个软件层有助于故障排除过程,它允许我们看到每个层如何相互依赖。下面我们来具体了解一下LAMP的四个组成部分:

Linux:操作系统(OS)构成了我们的第一层。Linux为堆栈模型奠定了基础。所有其他图层都在此图层的顶部运行。

Apache:第二层由Web服务器软件组成,通常是Apache Web Server。该层位于Linux层之上。Web服务器负责从Web浏览器转换到正确的网站。

MySQL:我们的第三层是MySQL数据库所在的位置。MySQL存储可以通过脚本查询来构建网站的详细信息。MySQL通常与Apache /第2层一起位于Linux层之上。在高端配置中,MySQL可以卸载到单独的主机服务器。

PHP(Perl或Python):在它们之上的就是我们的第四层也是最后一层。脚本层由PHP和/或其他类似的Web编程语言组成。网站和Web应用程序在此层中运行。

apache主要实现如下功能:

  1. 第一:处理http的请求、构建响应报文等自身服务;

  2. 第二:配置让Apache支持PHP程序的响应(通过PHP模块或FPM);

  3. 第三:配置Apache具体处理php程序的方法,如通过反向代理将php程序交给fcgi处理。

mysql 主要实现如下功能:

  1. 第一:提供PHP程序对数据的存储;

  2. 第二:提供PHP程序对数据的读取(通常情况下从性能的角度考虑,尽量实现数据库的读写分离)。

php主要实现如下功能:

  1. 第一:提供apache的访问接口,即CGI或Fast CGI(FPM);

  2. 第二:提供PHP程序的解释器;

  3. 第三:提供mysql数据库的连接函数的基本环境。

二、CGI和astcgi

2.1、CGI

CGI:Common Gateway Interface 公共网关接口

CGI 在2000年或更早的时候用得比较多,以前web服务器一般只处理静态的请求,如果碰到一个动态请求怎么办呢?web服务器会根据这次请求的内容,然后会 fork 一个新进程来运行外部的 C 程序或者bash,perl脚本等,这个进程会把处理完的数据返回给web服务器,最后web服务器把内容发送给用户,刚才fork的进程也随之退出。 如果下次用户还请求改动态脚本,那么web服务器又再次fork一个新进程,周而复始的进行。

CGI 可以让一个客户端,从网页浏览器通过http服务器向执行在网络服务器上的程序传输数据;CGI描述了客户端和服务器程序之间传输的一种标准

请求流程:

Client -- (http协议) --> httpd -- (cgi协议) --> application server (program file) -- (mysql协议) --> mysql

范例:httpd 利用CGI运行shell脚本

2.2、fastcgi

fastcgi的方式是,web服务器收到一个请求时,不会重新fork一个进程(因为这个进程在web服务器启动时就开启了,而且不会退出),web服务器直接把内容传递给这个进程(进程间通信,但fastcgi使用了别的方式,tcp方式通信),这个进程收到请求后进行处理,把结果返回给web服务器,最后自己接着等待下一个请求的到来,而不是退出

请求流程:

Client -- (http协议) --> httpd -- (fastcgi协议) --> fastcgi服务器 -- (mysql协议) --> mysql

2.3、CGI和fastcgi比较

CGI: 兼职, 一次性的过河拆桥式的服务

FASTCGI: 专职,全周期的持续式的服务

 三、PHP

3.1PHP简介

PHP(Hypertext Preprocessor,超文本预处理器)是一种通用开源脚本语言,其语法吸收了C语言、Java 和 Perl 的特点,利于学习,使用广泛,主要适用于 Web 开发领域。

PHP 独特的语法混合了 C、Java、Perl 以及 PHP 自创的语法,它可以比 CGI 或者 Perl 更快速地执行动态网页。

与其他的编程语言相比,PHP 是将程序嵌入到 HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成 HTML 标记的 CGI 要高许多。

PHP 还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。

3.2 PHP 配置

php 的配置文件:/etc/php.ini, /etc/php.d/*.ini

配置文件在php解释器启动时被读取

对配置文件的修改生效方法

  • Modules:重启httpd服务

  • FastCGI:重启php-fpm服务

/etc/php.ini配置文件格式:

[foo]:Section Header
directive = value

注释符:

  • 以#开头,纯粹的注释信息

  • 以 ; 开头,用于注释可启用的directive

提示:较新的版本中,已经完全使用 “ ; ” 进行注释

php.ini 配置参考文档:

php.ini的核心配置选项文档: http://php.net/manual/zh/ini.core.php

php.ini配置选项列表:http://php.net/manual/zh/ini.list.php

php常见设置:

expose_php = On                                 #响应报文显示首部字段x-powered-by: PHP/x.y.z,暴露php版本,建议为off
max_execution_time= 30                      #最长执行时间30s
memory_limit=128M                             #生产不够,可调大
display_errors=off                                #调试使用,不要打开,否则可能暴露重要信息
display_startup_errors=off                   #建议关闭
post_max_size=8M                                #最大上传数据大小,生产可能调大,比下面项大
upload_max_filesize =2M                      #最大上传文件,生产可能要调大
max_file_uploads = 20                          #同时上传最多文件数
date.timezone =Asia/Shanghai              #指定时区
short_open_tag=on                               #开启短标签,如: <? phpinfo();?>