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

994 阅读6分钟

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资源类型:

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

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

静态资源示例

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

1.2 LAPM架构得组成

a1.png

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

1.3 LAPM架构说明

A2.png

工作过程:

  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服务器方面在对数据进行处理的进程方面
cgifork一个新的进程进行处理读取参数,处理数据,然后就结束生命期
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配置文件格式:

[foo]:Section Header
directive = value

注释符:

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

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();?>

3. 搭建LAMP平台

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

1.png

2.png

3.png

4.png

5.png

6.png

7.png

8.png

9.png

10.png

11.png

12.png

13.png

14.png

15.png

16.png

17.png

18.png

19.png

20.png

21.png

22.png

23.png

24.png

25.png

26.png

27.png

28.png

29.png

30.png

31.png

32.png

33.png

34.png

35.png

36.png

37.png

38.png

39.png

40.png

41.png

42.png

43.png

44.png

45.png

46.png

47.png

48.png

49.png

50.png

51.png

52.png

53.png

54.png

55.png

56.png

57.png

58.png

59.png

60.png

61.png

62.png

63.png

64.png