2018-9-8 直播课堂笔记

休息了一个星期,感觉 时间过得还是很快的。现在又可以进入紧张的学习了,让我们努力加油干吧!阿铭老师的串讲知识还是非常好的,涉及到我们的很多的基础知识。

1.LAMP到底是做什么的?

AMP架构是目前应用最为成熟的企业网站应用模式之一,指的是协同工作的一整套系统和相关软件,能够提供动态Web站点服务及其应用开发环境。

构成LAMP平台的四个组件中,每一个都经历了数十年之久的企业应用的考验,各自都是同类软件中的佼佼者,从而成为典型的“黄金搭档”,其主要优势体现在以下几个方面:

  • ➣   成本低廉:构成组件都是开放源代码的软件,可以自由获得和免费使用,在技术上和许可证方面没有太严格的限制,大大降低“企业实施成本。
  • ➣   可定制:拥有大量的额外组件和可扩展功能的模块,能够满足大部分企业应用的定制需求,甚至可以自行开发,添加新的功能。
  • ➣   易于开发:基于LAMP平台的动态网站中页面代码简洁,与HTML标记语言的结合度非常好,即便是非专业的程序员也能够轻松读懂乃至修改网页代码。
  • ➣   方便易用:PHP,Perl等属于解释性语言,开发的各种程序不需要编译,方便进行移植使用。整套的网站项目程序,通常只要复制到网站目录中,就可以直接访问了。
  • ➣   安全和稳定:得益于开源的优势,大量的程序员在关注并持续改进着LAMP平台的各个组件,发现的问题能够很快得到解决。LAMP架构已经历了数十年的长期验证,在安全性和稳定性方面表现得非常优秀。

在构建LAMP平台时,各组件的安装顺序依次为Linux、Apache、MySQL,PHP。其中Apache和MySQL的安装并没有严格的顺序;而PHP环境的安装一般放到最后,负责沟通Web服务器和数据库系统以协同工作。

扩展知识点:fiddler 抓包

Fiddler是一款非常流行并且实用的http抓包工具,它的原理是在本机开启了一个http的代理服务器,然后它会转发所有的http请求和响应,因此,它比一般的firebug或者是chrome自带的抓包工具要好用的多。不仅如此,它还可以支持请求重放等一些高级功能。显然它是可以支持对手机应用进行http抓包的.

PCRE (Perl Compatible Regular Expressions) 是一个用C语言编写的正则表达式函数库。PCRE被广泛使用在许多开源软件之中,最著名的莫过于Apache HTTP服务器和PHP脚本语言、R脚本语言,此外,正如从其名字所能看到的,PCRE也是perl语言的缺省正则库。

2.php的另外一种安装方式

2.1前面的步骤差不多是一样的,把需要的包都下载下来,并解压到当前文件夹下面

[root@knightlai src]# ls
apr-1.6.3  apr-1.6.3.tar.gz  apr-util-1.6.1  apr-util-1.6.1.tar.gz  httpd-2.4.34  httpd-2.4.34.tar.gz

2.2这里我们不用单独编译安装apr apr-uti,直接编译httpd

//将apr apr-util移动到srclib下面
[root@knightlai srclib]# mv /usr/local/src/apr-1.6.3 apr
[root@knightlai srclib]# ls
apr  Makefile.in
[root@knightlai srclib]# mv /usr/local/src/apr-util-1.6.1  apr-util
[root@knightlai srclib]# ls
apr  apr-util  Makefile.in

//我们这里需要将编译参数按以下设置
[root@knightlai httpd-2.4.34]#./configure --prefix=/dir/ --enable-so --enable-mpms-shared=all --with-mpm=event --enable-mods-shared=most --with-included-apr
[root@knightlai httpd-2.4.34]#make&&make install

3.apache的三种工作模式

Prefork MPM : 这个多路处理模块(MPM)实现了一个非线程型的、预派生的web服务器,它的工作方式类似于Apache 1.3。它适合于没有线程安全库,需要避免线程兼容性问题的系统。它是要求将每个请求相互独立的情况下最好的MPM,这样若一个请求出现问题就不会影响到其他请求。

Worker MPM : 此多路处理模块(MPM)使网络服务器支持混合的多线程多进程。由于使用线程来处理请求,所以可以处理海量请求,而系统资源的开销小于基于进程的MPM。但是,它也使用了多进程,每个进程又有多个线程,以获得基于进程的MPM的稳定性。

Event MPM:以上两种稳定的MPM方式在非常繁忙的服务器应用下都有些不足。尽管HTTP的Keepalive方式能减少TCP连接数量和网络负载,但是 Keepalive需要和服务进程或者线程绑定,这就导致一个繁忙的服务器会耗光所有的线程。 Event MPM是解决这个问题的一种新模型,它把服务进程从连接中分离出来。在服务器处理速度很快,同时具有非常高的点击率时,可用的线程数量就是关键的资源限 制,此时Event MPM方式是最有效的。一个以Worker MPM方式工作的繁忙服务器能够承受每秒好几万次的访问量(例如在大型新闻服务站点的高峰时),而Event MPM可以用来处理更高负载。值得注意的是,Event MPM不能在安全HTTP(HTTPS)访问下工作。

现在我们的工作模式一般都是设置 为Event模式。

4. apache, DSO原理

4.1 Apache HTTP服务器是一个模块化的软件,使管理者可以选择核心中包含的模块以裁剪功能。可以在编译时选择被静态包含进httpd二进制映象的模块,也可以编译成独立于主httpd二进制映象的动态共享对象DSO,DSO模块可以在编译服务器之后编译,也可以用Apache扩展工具(apxs)编译并增加。

DSO是Dynamic Shared Objects(动态共享目标)的缩写,它是现代Unix派生出来的操作系统都存在着的一种动态连接机制。它提供了一种在运行时将特殊格式的代码,在程序运行需要时,将需要的部分从外存调入内存执行的方法。Apache在1.3以后的版本后开始支持它。因为Apache早就使用一个模块概念来扩展它的功能并且在内部使用一个基于调度的列表来链接扩展模块到Apache核心模块.所以,Apache早就注定要使用DSO来在运行时加载它的模块。

4.2  apxs - Apache 扩展工具

apxs 是一个为Apache HTTP服务器编译和安装扩展模块的工具,用于编译一个或多个源程序或目标代码文件为动态共享对象,使之可以用由mod_so 提供的LoadModule 指令在运行时加载到Apache服务器中。

因此,要使用这个扩展机制,你的平台必须支持DSO特性,而且Apache httpd 必须内建了mod_so 模块

5.php中mysql,mysqli,mysqlnd,pdo

MYSQL 也叫 Original MySQL,PHP4版本的MYSQL扩展,从PHP5起已经被废弃,并别从PHP7开始已经被移除。

MYSQLI 叫做 “MySQL增强扩展”。

MYSQLND MYSQL NATIVE DIRVER 叫做MYSQL “官方驱动”或者更加直接点的叫做“原生驱动”

PDO PHP Data Objects PHP数据对象,是PHP应用中的一个数据库抽象层规范。

6.查看Nginx、apache、MySQL和PHP的编译参数

1、nginx编译参数:
#/usr/local/nginx/sbin/nginx -V
2、apache编译参数:
# cat /usr/local/apache/build/config.nice

[root@knightlai ~]# cat /usr/local/apache2.4/build/config.nice
#! /bin/sh
#
# Created by configure

"./configure" \
"--prefix=/usr/local/apache2.4" \
"--with-apr=/usr/local/apr" \
"--with-apr-util=/usr/local/apr-util" \
"--enable-so" \
"--enable-mods-shared=most" \
"$@"

3、php编译参数:
# /usr/local/php/bin/php -i |grep configure

[root@knightlai ~]# /usr/local/php/bin/php -i|grep configure
Configure Command =>  './configure'  '--prefix=/usr/local/php' '--with-apxs2=/usr/local/apache2.4/bin/apxs' '--with-config-file-path=/usr/local/php/etc' '--with-mysql=/usr/local/mysql' '--with-pdo-mysql=/usr/local/mysql' '--with-mysqli=/usr/local/mysql/bin/mysql_config' '--with-libxlml-dir' '--with-gd' '--with-jpeg-dir' '--with-png-dir' '--with-freetype-dir' '--with-iconv-dir' '--with-zlib-dir' '--with-bz2' '--with-openssl' '--with-mycrypt' '--enable-soap' '--enable-gd-native-ttf' '--enable-sockets' '--enable-exif'

4、mysql编译参数:
# cat /usr/local/mysql/bin/mysqlbug|grep configure

猜你喜欢

转载自blog.csdn.net/a1779078902/article/details/82555278