LAMP架构详解-搭建LAMP平台-Discuz论坛和WordPress

1. LAPM架构简介

LAMP 环境 指的是在 Linux 操作系统中分别安装 Apache 网页服务器MySQL 数据库服务器PHP 开发服务器,以及一些对应的扩展软件。AMP也支持win操作系统

LAMP架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整套系统和相关软件,能够提供动态web站点服务及其应用开发环境。(前台)Apache:作为LAMP架构的前端,是一款功能强大,稳定性好的web服务器程序,该服务器直接面向用户提供网站访问,发送网页,图片等内容。

**后台Mysql:**作为LAMP架构的后端,是一款流行的开源关系型数据库。在企业网站、业务系统应用中,各种账户信息、产品信息,客户资料、业务数据等都可以存储到mysql数据库,其他程序可以通过sql语句来查询,更改这些信息。

**(中间连接)PHP/Perl/Python:**作为三种开发动态的网页编程语言,负责解释动态网页文件,负责沟通web服务器和数据库系统已协同工作,并提供web应用程序的开发运行环境。其中PHP是一种广泛应用的开放源代码的多用途脚本语言,它可以嵌入到HTML中,尤其适合于web应用开发。

1.1 动态资源与语言

WEB资源类型:

  • 静态资源:原始形式与响应内容一致,在客户端浏览器执行
  • 动态资源:原始形式通常为程序文件,需要在服务器端执行之后,将执行结果返回给客户端

注意:静态和动态的区别,不在于网页是否能动态变化,而在于服务端的页面文件和客户端得到页面文件是否一致

静态资源示例

bash 复制代码
vim   test.html
#客户端主机现在的时间:
<script type="text/javascript">
document.write(new Date());
</script>

1.2 LAPM架构得组成

  • L:linux
  • A:apache (httpd)
  • M:mysql, mariadb
  • P:php, perl, python

1.3 LAPM架构说明

工作过程:

  1. 当客户端请求的是静态资源时,web服务器会直接把静态资源返回给客户端
  2. 当客户端请求的是动态资源时,http的php模块会进行相应的动态资源运算,如果此过程还需要数据的数据作为运算参数时,php会连接mysql取得数据然后进行运算,运算结果转为静态资源由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数据库的连接函数的基本环境。

1.4 CGI和astcgi

1.4.1CGI

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

请求流程: Client -- (http协议) --> httpd -- (cgi协议) --> application server (program file) -- (mysql协议) --> mysql

1.4.2 fastcgi

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

1.4.3 CGI和fastcgi比较

**CGI:**兼职, 一次性的过河拆桥式的服务 FASTCGI: 专职,全周期的持续式的服务

名称 在web服务器方面 在对数据进行处理的进程方面
cgi fork一个新的进程进行处理 读取参数,处理数据,然后就结束生命期
fastcgi 用tcp方式跟远程主机上的进程或本地进程建立连接 要开启tcp端口,进入循环,等待数据的到来,处理数据

2、PHP

PHP(Hypertext Preprocessor 超文本预处理器)是通用服务器端脚本编程语言,主要用于web开发实现动态web页面,也是最早实现将脚本嵌入HTML源码文档中的服务器端脚本语言之一。同时,php还提供了一个命令行接口,因此,其也可以在大多数系统上作为一个独立的shell来使用

2.1 PHP的Opcode语言

Opcode是一种PHP脚本编译后的中间语言,类似于Java的ByteCode,或者.NET的MSL

PHP的语言引擎Zend执行PHP脚本代码一般会经过如下4个步骤

  1. Scanning 词法分析,将PHP代码转换为语言片段(Tokens)
  2. Parsing 语义分析,将Tokens转换成简单而有意义的表达式
  3. Compilation 将表达式编译成Opcode
  4. Execution 顺次执行Opcode,每次一条,从而实现PHP脚本的功能

即:扫描-->分析-->编译-->执行

4.3 PHP 配置

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

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

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

  • Modules:重启httpd服务
  • FastCGI:重启php-fpm服务

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

bash 复制代码
[foo]:Section Header
directive = value

注释符:

  • 以#开头,纯粹的注释信息
  • 以 ; 开头,用于注释可启用的directive

php常见设置

bash 复制代码
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();?>

3. 搭建LAMP平台

编译安装Apache,mysql,php,然后使用搭建的LAMP平台安装论坛和博客

相关推荐
2402_857589363 分钟前
SpringBoot框架:作业管理技术新解
java·spring boot·后端
一只爱打拳的程序猿21 分钟前
【Spring】更加简单的将对象存入Spring中并使用
java·后端·spring
颇有几分姿色24 分钟前
深入理解 Linux 内存管理:free 命令详解
linux·运维·服务器
AndyFrank1 小时前
mac crontab 不能使用问题简记
linux·运维·macos
筱源源1 小时前
Kafka-linux环境部署
linux·kafka
算法与编程之美2 小时前
文件的写入与读取
linux·运维·服务器
假装我不帅2 小时前
asp.net framework从webform开始创建mvc项目
后端·asp.net·mvc
神仙别闹2 小时前
基于ASP.NET+SQL Server实现简单小说网站(包括PC版本和移动版本)
后端·asp.net
xianwu5432 小时前
反向代理模块
linux·开发语言·网络·git