[TOC]javascript
LAMP是一种生产环境中经常使用的web服务组合模型。php
LAM(M)P所表达的组成方式html
WEB资源类型:java
Web相关语言python
一般,在低需求的企业环境中,咱们能够将LAMP部署在同一台设备上,下降支出。但大多数状况,咱们会将LAMP分离,分别部署在多台设备上,并让他们链接通信。mysql
CGI:Common Gateway Interface 可让一个客户端,从网页浏览器经过http服务器向执行在网络服务器上的程序传输数据;CGI描述了客户端和服务器程序之间传输的一种标准linux
请求流程:web
Client -- (httpd) --> httpd -- (cgi) --> application server (programfile) -- (mysql) --> mysqlsql
架构说明: shell
PHP是通用服务器端脚本编程语言,主要用于web开发实现动态web页面,也是最先实现将脚本嵌入HTML源码文档中的服务器端脚本语言之一。同时,php还提供了一个命令行接口,所以,其也能够在大多数系统上做为一个独立的shell来使用。
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是一种PHP脚本编译后的中间语言,相似于Java的ByteCode,或者.NET的MSL。PHP执行PHP脚本代码通常会通过以下4个步骤(确切的来讲,应该是PHP的语言引擎Zend)
一、Scanning 词法分析,将PHP代码转换为语言片断(Tokens) 二、Parsing 语义分析,将Tokens转换成简单而有意义的表达式 三、Compilation 将表达式编译成Opcode 四、Execution 顺次执行Opcode,每次一条,从而实现PHP脚本的功能
简单来讲的执行过程就是:扫描-->分析-->编译-->执行
配置文件:
/etc/php.ini /etc/php.d/*.ini
关于php所使用的配置文件,配置文件在php解释器启动时被读取 对配置文件修改生效的方法:
php中的配置字段格式为: directiove = value 以键值对的形式存在。
注释符:较新的版本中,已经彻底使用;进行注释
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的特殊扩展机制如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 httpd:接收用户的web请求;静态资源则直接响应;动态资源为php脚本,对此类资源的请求将交由php来运行 php:运行php程序 MariaDB/Mysql:数据管理系统,数据库
其中http与php结合的方式
MPM:
使用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等主流数据库。
yum -y install httpd, php, php-mysql, mysql-server service httpd start service mysqld start
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模型
#安装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
在部署以前,咱们能够须要建立一个数据库和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 wpuser@'%' 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
该软件可使用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