一、LAMP基础

  1.LAMP组成

          LLinuxAapache (httpd)Mmysql, mariadbPphp, perl, python

       httpd:接收用户的web请求;静态资源则直接响应;动态资源为php脚本交由php来运行;

       php:运行php程序;

       MariaDB:数据管理系统;

  2.CGI:Common Gateway Interface,通用网关接口

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

  3.请求流程

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

      客户端浏览器发出请求,通过http协议发向Web服务器,若为静态请求则httpd发起系统调用,磁盘IO调用数据,返回给用户;若为动态请求,则通过CGI通用网关接口协议发送给应用程序服务器,通过 php脚本等动态执行通过mysql协议调用mysql程序查询结果,并返回。

静态资源:Client -- http --> httpd

动态资源:Client -- http --> httpd --> libphp5.so () -- mysql --> MySQL serve

 

 

 

二、PHP

  1.php: 脚本编程语言

        嵌入到html中的嵌入式web程序开发语言,无需编译;大多数情况无需用到管理员权限运行,更加安全

        基于zend编译成opcode(二进制格式的字节码,重复运行可省略编译环境)

   Scanning(扫描) --> Parsing(分析) --> Compilation(编译) --> Execution(执行)

  2.httpd与php结合的方式

        (1)CGI:最传统方式,必要时需要创建和销毁子进程

        (2)FastCGI:将php运行成一个服务监听在套接字,有主进程和空闲进程,独立的服务进程

      注意:      

  1)需要安装php-fpm程序包,非php程序包

  2)httpd2.2不支持FastCGI协议功能需自己编译;CentOS 7httpd2.4将其加入成为模块

        (3)modules (把php编译成为httpd的模块):当请求动态请求时无需再启动一个新的进程,默认结合方式

   基于MPM相关的php所编译的模块:

prefork: libphp5.so

event, worker: libphp5-zts.so

  3.php服务配置文件

      1)/etc/php.ini,  /etc/php.d/*.ini ,一般由php-common程序包提供php相关所有配置文件

      2)php配置文件在php解释器启动时被读取,修改配置文件后重启httpd服务重启php-fpm服务;

      3)通过配置段[*]配置,directive = value方式配置每段内部信息

  [php]表示核心配置信息,其他[ ]为单独安装包组件配置信息

      4)注释符:较新的版本中,已经完全使用;进行注释;

     #:纯粹的注释信息

      ;:用于注释可启用的directive

      5)相关官方文档

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

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

 

 

 

三、数据库(mariadb为例)简介

  1.数据模型

层次模型网状模型关系模型:表(行+列)

  2.关系模型数据管理系统(实现软件)

          IngreSQL, Oracle, Sybase, Infomix, DB2, SQL Server, MySQL, PostgreSQL, MariaDB

  3.MariaDB的特性:第二段视频

       插件式存储引擎:存储管理器有多种实现版本,彼此间的功能和特性可能略有区别;用户可根据需要灵活选择;

       存储引擎也称为“表类型”;

(1) 更多的存储引擎;

(2) 诸多扩展和新特性;

(3) 提供了较多的测试组件;

(4) truly open source,完全开源;

  4.安装和使用MariaDB方式

       (1) rpm包;

  1) 由OS的发行商提供;

  2) 程序官方提供;

       (2) 源码包;

       (3) 通用二进制格式的程序包;