LAMP PHP 详解

目录

  • LAMP PHP 详解

    • LAMP 请求流程与原理
    • PHP 简介
      • PHP Zend Engine
      • Opcode
      • php 配置详解
      • php 加速器
    • 部署LAMP
      • 使用 php 连接 mysql
      • 最基本的部署LAMP
      • 部署PhpMyAdmin
      • 部署wordpress
      • 编译安装php-xcache访问加速器

LAMP PHP 详解

LAMP是一种生产环境中常用的web服务组合模型。

LAM(M)P所表达的组成方式

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

WEB资源类型:

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

Web相关语言

  • 客户端技术: html,javascript
  • 服务器端技术:php, jsp,python,asp

通常,在低需求的企业环境中,我们可以将LAMP部署在同一台设备上,降低支出。但大多数情况,我们会将LAMP分离,分别部署在多台设备上,并让他们连接通讯。

LAMP 请求流程与原理

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

请求流程:

Client -- (httpd) --> httpd -- (cgi) --> application server (programfile) -- (mysql) --> mysql

架构说明:

PHP 简介

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

PHP Zend Engine

Zend Engine 1.0于1999年随PHP 4发布,由C语言开发且经过高度优化,并能够做为PHP的后端模块使用。Zend Engine为PHP提供了内存和资源管理的功能以及其它的一些标准服务,其高性能、可靠性和可扩展性在促进PHP成为一种流行的语言方面发挥了重要作用。
Zend Engine的出现将PHP代码的处理过程分成了两个阶段:首先是分析PHP代码并将其转换为称作Zend opcode的二进制格式opcode(类似Java的字节码),并将其存储于内存中;第二阶段是使用Zend Engine去执行这些转换后的Opcode。

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 配置详解

配置文件:

/etc/php.ini
/etc/php.d/*.ini

关于php所使用的配置文件,配置文件在php解释器启动时被读取
对配置文件修改生效的方法:

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

php中的配置字段格式为: directiove = value 以键值对的形式存在。

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

  • :纯粹的注释信息

  • ;:用于注释可启用的directive

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

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

php语言格式

<?php
...php code...
?>

常用配置选项:

#设置程序 最长超时,生产中可以调大些
max_execution_time= 30
#设置程序占用的最大内存,生产不够,可调大
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
#开启短标签,如<? phpinfo();?>
short_open_tag=on 

php 加速器

php的加速器:基于PHP的特殊扩展机制如opcode缓存扩展也可以将opcode缓存于php的共享内存中,从而可以让同一段代码的后续重复执行时跳过编译阶段以提高性能。这些加速器并非真正提高了opcode的运行速度,而仅是通过分析opcode后并将它们重新排列以达到快速执行的目的。

XCache
快速而且稳定的PHP opcode缓存,经过严格测试且被大量用于生产环境。项目地址:http://xcache.lighttpd.net/,收录EPEL源

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

NuSphere PhpExpress
NuSphere的一款开源PHP加速器,它支持装载通过NuSphere PHP Encoder编码的PHP程序文件,并能够实现对常规PHP文件的执行加速。项目地址,http://www.nusphere.com/products/phpexpress.htm

部署LAMP

在LAMP架构中,每个服务都有他自身所负责的任务。

LAMP
httpd:接收用户的web请求;静态资源则直接响应;动态资源为php脚本,对此类资源的请求将交由php来运行
php:运行php程序
MariaDB/Mysql:数据管理系统,数据库

其中http与php结合的方式

  • CGI
  • FastCGI
  • modules (将php编译成为httpd的模块,默认方式,在使用该模式的时候,php就仅是http服务中的一个mod模块,而不是一个独立服务形式存在。)

MPM:

  • prefork: libphp5.so
  • event, worker: libphp5-zts.so

使用 php 连接 mysql

使用mysql扩展连接数据库的测试代码
<?php
#创建一个连接 参数分别为:主机名 mysql账户 密码
$conn = mysql_connect(‘localhost','root','123456');
if ($conn)
    echo "OK";
else
    echo "Failure";
    #echo mysql_error();
mysql_close();
?>

Php使用mysqli扩展连接数据库的测试代码
<?php
$mysqli=new mysqli("mysqlserver",“username",“password");
if(mysqli_connect_errno())
{
    echo "Failure";
    $mysqli=null;
    exit;
}
echo “OK";
$mysqli->close();
?>

使用pdo扩展连接数据库的测试代码1
<?php
$dsn='mysql:host=localhost;dbname=mysql';
$username='root';
$passwd='centos';
$dbh=new PDO($dsn,$username,$passwd);
var_dump($dbh);
?>

使用pdo扩展连接数据库的测试代码2
<?php
try {
    $user='root';
    $pass=‘centos';
    $dbh = new PDO('mysql:host=localhost;dbname=mysql', $user, $pass);
    foreach($dbh->query('SELECT user,host from user') as $row) {
    print_r($row);
    }
    $dbh = null;
} catch (PDOException $e) {
    print "Error!: " . $e->getMessage() . "<br/>";
    die();
}
?>

需要注意一点,前两种方式只能连接mysql,而基于pdo的方式可以连接mysql,sql server ,oracle等主流数据库。

最基本的部署LAMP

centos6

yum -y install httpd, php, php-mysql, mysql-server
service httpd start
service mysqld start

centos7

Modules模块模式
yum -y install httpd php php-mysql mariadb-server

FastCGI独立服务模式
yum -y install httpd php-fpm php-mysql mariadb-server

systemctl start httpd.service
systemctl start mariadb.service
注意:要使用prefork模型

部署PhpMyAdmin

#安装lmap环境
yum -y install httpd mariadb-server php php-mysql php-mbstring

#启动并初始化 phpmyadmin登录必须使用密码非空的账户
systemctl start httpd
systemctl start mariadb
mysql_secure_installation

下载:https://www.phpmyadmin.net/downloads/

#解压 由于他是直接可以使用的php程序,所以放到我们的http根目录下即可
tar xvf phpMyAdmin-4.0.10.20-all-languages.tar.xz cd /var/www/html
cd phpadmin/

#修改配置文件
cp config.sample.inc.php config.inc.php

vim config.inc.php
#修改该行为自定义随机数,这是用来随机cookie的
$cfg['blowfish_secret'] = 'a8b7c6d'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

#重新读取配置即可
systemctl reload httpd

部署wordpress

在部署之前,我们可以需要创建一个数据库和mysql账户,用于wordpress使用。

#下载
https://cn.wordpress.org

#解压缩WordPress博客程序到网页站点目录下
unzip wordpress-4.3.1-zh_CN.zip

#创建wordpress用户
mysql> create database wpdb;
mysql> grant all privileges on wpdb.* to [email protected]'%' identified by"wppass"

打开http://webserver/wordpress进行页面安装

或者 进入wordpress 目录
cp wp-config-sample.php wp-config.php
vim wp-config.php

/** WordPress数据库的名称 */
define('DB_NAME', 'wpdb');
/** MySQL数据库用户名 */
define('DB_USER', 'http');
/** MySQL数据库密码 */
define('DB_PASSWORD', 'centos');
/** MySQL主机 */
define('DB_HOST', '192.168.1.10');

注意wordpress目录权限
Setfacl –R –m u:apache:rwx wordpress

编译安装php-xcache访问加速器

该软件可以使用yum安装,最新版本也是2014年的版本,已经是一个过时的老古董了。

yum install -y php-xcache

以下为编译安装步骤

#安装编译所需环境
yum groupinstall "development tools"

#安装该软件需要的配置文件生成器
yum install php-devel

下载并解压缩xcache-3.2.0.tar.bz2
tar xvf xcache-3.2.0.tar.gz

cd xcache-3.2.0.tar.gz

#使用该命令生成配置文件
phpize 

#编译 安装
 ./configure  --enable-xcache --with-php-config=/usr/bin/php-config
 make -j 4 && make install

 #复制配置文件  /usr/lib64/php/modules/ 表示默认该模块的位置,xcache已mod的形式存在
 cp xcache.ini  /etc/php.d/

 #重启服务 激活该MOD
systemctl restart httpd

原文地址:https://www.cnblogs.com/ddz-linux/p/10699453.html

时间: 2024-11-10 21:05:55

LAMP PHP 详解的相关文章

LAMP 安装详解

1. LAMP 的安装 sudo apt-get install apache2 mysql-server mysql-client php5 php5-gd php5-mysql 2. 由于LAMP大部分操作与/var/www目录相关,为了方便,修改该目录的权限为普通用户可访问. sudo chmod 777 /var/www/ 3. Apache 配置 (1)启用 mod_rewrite 模块 终端命令:sudo a2enmod rewrite (2)重启Apache服务器:sudo /et

超详细Memcached+LAMP搭建详解操作命令

简介 Memcached是一套高性能内存对象缓存系统,用于一些高负载的Web网站,主要作用是通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的响应速度.提高可扩展性.Memcached是典型的C/S架构,因此需要安装服务器端与客户端.服务器端是用C语言编写的,客户端可用任何语言来编写,如PHP. Python.Perl等.为了提高性能,Memcached中保存的数据都存储在memcached内置的内存存储空间中,读取速度快.由于数据仅存在于内存中,因此重启memcached.重启

CentOS 7系统之 lamp ( module )详解

         安装要求:CentOS 7系统之 lamp ( module ) (1) 三者分离于两台主机: (2) 一个虚拟主机用于提供phpMyAdmin:另一个虚拟主机用于提供wordpress: (3) xcache (4) 为phpMyAdmin提供https虚拟主机:   安装环境:         IP        系统        安装软件     192.168.1.103       CentOS 7 httpd,php ,wordpress,phpMyAdmin  

php以模块方式、和fpm方式 搭建LAMP环境详解

CentOS6.6上编译安装LAMP apache版本:2.4.12 php版本: mysql版本:mariadb-5.5.43-linux-x86_64.tar.gz 要求: 提供2个虚拟主机, web1:phpMyAdmin, 同时提供SSL web2:wordpress; 其中php与其它软件的结合,要求分2种情况实现(1.php模块;2.php是fpm方式) 详细配置过程如下: 1.编译安装httpd(构建 MPM 为动态模块) # httpd-2.4.9编译过程依赖于pcre-deve

lamp编译详解

首先确认系统环境:centos6.4 min版本 1.安装需要的开发环境 yum groupinstall "Development Tools" "Server Platform Development" -y 2.下载并安装依赖的包(由于编译的是httpd2.4的版本对apr有更高要求) wget http://mirrors.hust.edu.cn/apache//apr/apr-1.6.2.tar.gz wget http://mirrors.hust.ed

CentOS下搭建LAMP环境详解

前言:在这里将介绍如何在CentOS下搭建LAMP环境(全部使用源码编译安装),用于web服务器开发. •LAMP: Linux + Apache + PHP + Mysql. •系统: CentOS 6.5,32位. CentOS安装 我选取了32位的CentOS 6.5这个Linux系统,安装过程也很简单,不再过多叙述,只稍微介绍一下我的分区情况: 分区名  大小 /boot  200MB /swap  2GB(不大于物理分区即可) /  20GB /home 剩余空间 Apache编译安装

CentOS 7系统之 lamp (php-fpm)详解

  安装要求: (1) 三者分离于三台主机 (2) 一个虚拟主机用于提供phpMyAdmin:另一个虚拟主机用于提供wordpress: (3) xcache          IP     系统              软件 192.168.1.103    CentOS 7              httpd      192.168.1.104    CentOS 7        php-fpm,php-mysql,,xcache      192.168.1.105    Cent

Lamp搭建详解

介绍linux系统下yum安装Apache+PHP+MySQL的方法. 首先创建本地源 Cd /media/RHEL_后面是挂载镜像的版本号 Ls 会查看到Packages repodata 两个文件夹 Mkdir  /home/repo   创建一个你喜欢存放东西的路径下创建一个repo的文件夹 Cp –R –f Packages  /home/repo Cp –R –f repodata  /home/repo  将两个文件夹的内容复制到这个文件夹中(过程可能很慢,但是正常现象毕竟这个rpm

详解LAMP源码编译安装

实战:LAMP源码编译安装 家住海边喜欢浪:zhang789.blog.51cto.com 目录 详解LAMP源码编译安装 LAMP简介 一.准备工作 二.编译安装 Apache 三.编译安装 MySQL 四.编译安装 PHP 测试LAMP搭建开源数据web管理程序phpMyadmin 详解LAMP源码编译安装 LAMP简介 LAMP是当下非常流行的一套Web架构,我们可以在GNU/Linux下通过其他人打包的程序包来进行安装; 但是在生产环境中,很多时候都需要我们自己定制安装AMP,编译安装L