Linux中LAMP 配置与应用
一、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主要实现如下功能:
-
第一:处理http的请求、构建响应报文等自身服务;
-
第二:配置让Apache支持PHP程序的响应(通过PHP模块或FPM);
-
第三:配置Apache具体处理php程序的方法,如通过反向代理将php程序交给fcgi处理。
mysql 主要实现如下功能:
-
第一:提供PHP程序对数据的存储;
-
第二:提供PHP程序对数据的读取(通常情况下从性能的角度考虑,尽量实现数据库的读写分离)。
php主要实现如下功能:
-
第一:提供apache的访问接口,即CGI或Fast CGI(FPM);
-
第二:提供PHP程序的解释器;
-
第三:提供mysql数据库的连接函数的基本环境。
二、CGI和astcgi
2.1、CGI
CGI:Common Gateway Interface 公共网关接口
CGI 可以让一个客户端,从网页浏览器通过http服务器向执行在网络服务器上的程序传输数据;CGI描述了客户端和服务器程序之间传输的一种标准
请求流程:
Client -- (http协议) --> httpd -- (cgi协议) --> application server (program file) -- (mysql协议) --> mysql
范例:httpd 利用CGI运行shell脚本
2.2、
fastcgi的方式是,web服务器收到一个请求时,不会重新fork一个进程(因为这个进程在web服务器启动时就开启了,而且不会退出),web服务器直接把内容传递给这个进程(进程间通信,但fastcgi使用了别的方式,tcp方式通信),这个进程收到请求后进行处理,把结果返回给web服务器,最后自己接着等待下一个请求的到来,而不是退出
请求流程:
Client -- (http协议) --> httpd -- (fastcgi协议) --> fastcgi服务器 -- (mysql协议) --> mysql
2.3、
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 的配置文件:/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();?>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律