LAMP

type
status
date
slug
summary
tags
category
icon
password

LAMP

linux+apache+mysql+php
WEB资源类型静态资源:原始形式与响应内容一致,在客户端浏览器执行动态资源:原始形式通常为程序文件,需要在服务器端执行之后,将执行结果返回给客户端 Web相关语言 客户端技术: html,javascript,css,jpg 服务器端技术:php, jsp,python,asp

CGI

  • CGI:Common Gateway Interface 可以让一个客户端,从网页浏览器通过http服务器向执行在网络服务器上的程序传输数据;CGI描述了客户端和服务器程序之间传输的一种标准
  • 请求流程: Client – (http) –> httpd – (cgi) –> application server (program file) – (mysql) –> mysql
  • php: 脚本编程语言、嵌入到html中的嵌入式web程序语言 基于zend编译成opcode(二进制格式的字节码,重复运行,可省略编译环境)
有两种模式加载php 一种是模块的方式加载,第二种是使用CGI,独立处理动态语言,将执行结果返回给httpd,在返回给客户端

LAMP工作原理

notion image

php

官网:http://www.php.net/ PHP是通用服务器端脚本编程语言,主要用于web开发实现动态web页面,也是最早实现将脚本嵌入HTML源码文档中的服务器端脚本语言之一。同时,php还提供了一个命令行接口,因此,其也可以在大多数系统上作为一个独立的shell来使用 C –> 二进制 –> 在运行,运行速度慢,执行快,编译语言 Python –> 直接运行,运行速度快,执行慢,解释语言 现在流行解释语言,节省时间成本

PHP的Opcode

  • Opcode是一种PHP脚本编译后的中间语言,类似于Java的ByteCode,或者.NET的MSL。PHP执行PHP脚本代码一般会经过如下4个步骤(确切的来说,应该是PHP的语言引擎Zend) 1、Scanning 词法分析,将PHP代码转换为语言片段(Tokens) 2、Parsing 语义分析,将Tokens转换成简单而有意义的表达式 3、Compilation 将表达式编译成Opcode 4、Execution 顺次执行Opcode,每次一条,从而实现PHP脚本的功能
  • 扫描–>分析–>编译–>执行

php配置

php:脚本语言解释器
  • 配置文件:/etc/php.ini, /etc/php.d/\*.ini
  • 配置文件在php解释器启动时被读取
  • 对配置文件的修改生效方法 Modules:重启httpd服务 FastCGI:重启php-fpm服务
    php.ini的核心配置选项文档: http://php.net/manual/zh/ini.core.php php.ini配置选项列表:http://php.net/manual/zh/ini.list.php
    php常见设置
    说明
    最长执行时间30s
    生产不够,可调大
    调试使用,不要打开,否则可能暴露重要信息
    最大上传数据大小,生产可能调大,比下面项大
    最大上传文件,生产可能要调大(比如上传外附件大小)
    同时上传最多文件数
    指定时区(时间未定义就是UTC 英国时间 天文台)
    开启短标签,如
    • httpd:接收用户的web请求;静态资源则直接响应;动态资源为php脚本,对此类资源的请求将交由php来运行
    • php:运行php程序
    • MariaDB:数据管理系统
    • http与php结合的方式 CGI FastCGI modules (将php编译成为httpd的模块,默认方式)(模块化影响性能)
      • 注意:cenots 6 默认是不支持fastcgi
    依赖包 httpd php mariadb-server php-mysql 注意:要使用prefork模型
    php使用mysql扩展连接数据(这种方法目前不推荐了
    php使用mysqli扩展连接数据库
    php使用PDO(PHP Data Object)扩展连接数据库
    两种模块,不同的方式连接数据库 php-pdo、php-mysql

    常见LAMP应用

    • PhpMyAdmin是一个以PHP为基础,以Web-Base方式架构在网站主机上的MySQL的数据库管理工具,让管理者可用Web接口管理MySQL数据库
    • WordPress是一种使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站。也可把 WordPress当作一个内容管理系统(CMS)来使用
    • PHPWind:2003年发布了PHPWind的前身版本ofstar,并发展成为包含BBS、CMS、博客、SNS等一系列程序的通用型建站软件, 于2008年加入阿里巴巴集团
    • Crossday Discuz! Board(简称 Discuz!)是一套通用的社区论坛软件系统。自2001年6月面世以来,是全球成熟度最高、覆盖率最大的论坛软件系统之一。2010年8月23日,与腾讯达成收购协议
    • ECShop是一款B2C独立网店系统,适合企业及个人快速构建个性化网上商店。系统是基于PHP语言及MYSQL数据库构架开发的跨平台开源程序。2006年6月,ECShop推出第一个版本1.0
    phpmyadmin
    wordpress
    Discuz!

    php的加速器

    php的加速器:基于PHP的特殊扩展机制如opcode缓存扩展也可以将opcode缓存于php的共享内存中,从而可以让同一段代码的后续重复执行时跳过编译阶段以提高性能。这些加速器并非真正提高了opcode的运行速度,而仅是通过分析opcode后并将它们重新排列以达到快速执行的目的 当多个用户请求同一个php页面时,服务端会为每个请求处理php一次,已经处理过了,还需要在处理,这样会影响性能,opcode是请求同一个php页面时,服务端会将请求处理放在自己内存中,下次在有用户请求时,直接从内存中读取
    • 常见的php加速器有: 1、APC (Alternative PHP Cache) 遵循PHP License的开源框架,PHP opcode缓存加速器,目前的版本不适用于PHP 5.4项目地址http://pecl.php.net/package/APC 2、eAccelerator 源于Turck MMCache,早期的版本包含了一个PHP encoder和PHP loader,目前encoder已经不在支持。项目地址 http://eaccelerator.net/ 3、XCache 快速而且稳定的PHP opcode缓存,经过严格测试且被大量用于生产环境。项目地址:http://xcache.lighttpd.net/ ,收录EPEL源 4、Zend Optimizer和Zend Guard Loader Zend Optimizer并非一个opcode加速器,它是由Zend Technologies为PHP5.2及以前的版本提供的一个免费、闭源的PHP扩展,其能够运行由ZendGuard生成的加密的PHP代码或模糊代码。 而Zend Guard Loader则是专为PHP5.3提供的类似于Zend Optimizer功能的扩展。项目地址http://www.zend.com/en/products/guard/runtime-decoders 5、NuSphere PhpExpress NuSphere的一款开源PHP加速器,它支持装载通过NuSphere PHP Encoder编码的PHP程序文件,并能够实现对常规PHP文件的执行加速。项目地址,http://www.nusphere.com/products/phpexpress.htm

    php

    httpd+php结合的方式: module: php(目前不推荐使用) fastcgi : php-fpm(理论效率会更高)
    centos6 PHP-5.3.2之前:默认不支持fpm机制;需要自行打补丁并编译安装 httpd-2.2:默认不支持fcgi协议,需要自行编译此模块 解决方案:编译安装httpd-2.4, php-5.3.3+
    centos7 httpd-2.4:rpm包默认编译支持fcgi模块 php-fpm包:专用于将php运行于fpm模式
    模块和fastcgi只能使用一种,不能同时使用yum remove -y php && yum install php-fpm
    配置fastcgi说明 配置文件:/etc/php.ini,/etc/php.d/*.ini module模式下,重启httpd服务 fastcgi模式,重启php-fpm服务php.ini核心配置的详细说明http://php.net/manual/zh/ini.core.phpphp.ini配置选项列表http://php.net/manual/zh/ini.list.php

    编译安装LAMP

    安装顺序建议 maraidb –> httpd –> php

    php使用socket

    若php+apache是运行在一台机器上的情况下建议开启

    小结

    1、php7比php5(官方说明性能很更好) 2、php-7.3.25以上需要需要升级sqlite 3、目前不推荐使用模块的方式,使用fcgi的方式,性能更好 4、若httpd和php-fpm在一台机器上,可使用socket方式,这样性能会有所提升,若使用IP和端口方式,会多做了封包解包的过程,直接使用socket方式,是可以直接与内存交互的 5、httpd是支持php socket模式的,但需要注意下httpd版本,官方说明httpd版本需要2.4.9以上才支持 6、模块和fastcgi只能使用一种,不能同时使用 7、安装lamp环境,部署应用时,先确保php是否正常,在看mysql是否正常(可使用php页面测试连接数据库),在检查相关权限 8、php优化器的原理,可查看php加速器,简单来说当多个用户请求同一个php页面时,服务端会为每个请求处理php一次,已经处理过了,还需要在处理,这样会影响性能,opcode是请求同一个php页面时,服务端会将请求处理放在自己内存中,下次在有用户请求时,直接从内存中读取

    转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 438803792@qq.com
    上一篇
    lvs
    下一篇
    KVM
    Loading...