lamp基础应用(二)

概述:

=========================================================================================

回顾:

lamp 详解

1.php嵌入式web应用编程语言

作者

  • Rasmus Lerdorf,Personal Home Page tool, C语言(CGI,Web Forms), PHP/FI
  • zeev, andi重写php的解析器,

    zend engine 1.0, php 4.0;

    zend engine 2.0,php 5.0(增强的面向对象,PDO)

zend engine引擎

  • 分两各个阶段:解析和执行

解析:编译 --> opcode操作码

  • 整个过程分为四步

1)Scanning(Lexing):扫描,做词法分析

2)Parsing:语法分析

3)Compilation:编译成二进制格式

4)Excution:执行

前三步为解析编译过程,最后为执行过程。

  • hhvm:将PHP代码转换成高级别的字节码(通常称为中间语言)。然后在运行时通过即时(JIT)编译器将这些字节码转换为x64的机器码;

php加速器:

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

    APC,eAccelerator

    XCache:快速而且稳定的php opcode缓存,经过严格测试被大量应用于生产环境

配置文件:

  • /etc/php.ini, /etc/php.d/*.ini
  • ini:

[section_id]

directive = value

注释符为分号;

需要修改的位置date.timezone时区

  • php.ini的核心配置选项:

http://php.net/manual/zh/ini.core.php

  • php.ini配置选项列表:

http://php.net/manual/zh/ini.list.php

2)FastCGI之php-fpm

★FastCGI:php以fpm机制独立地监听在一个套接字上;

★php-fpm

[[email protected] ~]# yum info php-fpm
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Available Packages
Name        : php-fpm
Arch        : x86_64
Version     : 5.4.16
Release     : 36.el7_1
Size        : 1.4 M
Repo        : CDROM
Summary     : PHP FastCGI Process Manager
URL         : http://www.php.net/
License     : PHP and Zend and BSD
Description : PHP-FPM (FastCGI Process Manager) is an alternative PHP FastCGI
            : implementation with some additional features useful for sites of
            : any size, especially busier sites.

安装方式:

# yum install php-fpm

注意:php-fpm和php二者不能同时存在会起冲突的,只能选择其一。

主程序

  • /usr/sbin/php-fpm
  • Unit File(开机自启的服务):/usr/lib/systemd/system/php-fpm.service

配置文件:

  • ini:配置php解释器工作环境;

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

  • conf:配置fpm守护进程的工作模式;

/etc/php-fpm.conf, /etc/php-fpm.d/*.conf

配置

[global]       # 定义全局进程自己的工作特性
[pool-id]      # 定义连接池

listen = 127.0.0.1:9000 
# 监听的地址和端口,默认是本地的地址,所以httpd和fpm只能部署在同一台主机上,如果在不同的主机上,就要监听在与web主机能够通信的地址才可以。

listen.backlog = -1  # 超出请求时排队的队列长度
listen.allowed_clients = 127.0.0.1 # 访问控制列表(允许来自于哪些客户端主机地址的访问)

user = apache
group = apache

pm = dynamic
    # 定义process管理机制:static, dynamic
	 # static:服务启动时创建出所有子进程;
	 # dynamic:根据用户请求量的变化来维护子进程数量;

pm.max_children = 50          # 最大子进程数量即连接池上限
pm.start_servers = 5          # 服务器启动时要启动多少个进程
pm.min_spare_servers = 5      # 最少空闲子进程
pm.max_spare_servers = 35     # 最大空闲子进程
pm.max_requests = 500         # 每个子进程的最大请求数

pm.status_path = /fpm-status  # 获取状态信息

ping.path = /ping ;ping.response = pong # 探测fpm服务是否工作正常

rlimit_files = 1024  # 用户所能打开的文件数总数
rlimit_core = 0      # 核心可以占据多少个空间,0表示无限制

php_value[session.save_handler] = files
php_value[session.save_path] = /var/lib/php/session  # 需要创建目录并把权限赋予apache

演示如下:

编辑配置文件,并根据配置文件要求创建/var/lib/php/session 目录,且属主和属组为apache,然后启动服务

[[email protected] ~]# vim /etc/php-fpm.d/
 pm.status_path = /fpm-status
 rlimit_files = 1024
 rlimit_core = 0 
 ping.path = /ping 
 ping.response = pong
 
[[email protected]~]# mkdir /var/lib/php/session
[[email protected]~]# chown -R apache:apache  /var/lib/php/session # 定义文件属主和属组
[[email protected]~]# ll -d  /var/lib/php/session
drwxr-xr-x. 2 apache apache 4096 10月 13 20:17 /var/lib/php/session

启动服务,并查看端口9000

[[email protected]~]# systemctl start php-fpm # 启动服务
[[email protected] ~]# ss -tnl
State       Recv-Q Send-Q                                      Local Address:Port                                                     Peer Address:Port              
LISTEN      0      128                                             127.0.0.1:9000                                                                *:*                  
LISTEN      0      5                                           192.168.122.1:53                                                                  *:*                  
LISTEN      0      128                                                     *:22                                                                  *:*                  
LISTEN      0      128                                             127.0.0.1:631                                                                 *:*                  
LISTEN      0      100                                             127.0.0.1:25                                                                  *:*                  
LISTEN      0      128                                             127.0.0.1:6010                                                                *:*                  
LISTEN      0      128                                                    :::80                                                                 :::*                  
LISTEN      0      128                                                    :::22                                                                 :::*                  
LISTEN      0      128                                                   ::1:631                                                                :::*                  
LISTEN      0      100                                                   ::1:25                                                                 :::*                  
LISTEN      0      128                                                   ::1:6010                                                               :::*

接下来我们配置一个虚拟主机

 [[email protected] ~]# vim /etc/httpd/conf.d/vhost.conf
 <VirtualHost *:80>
        ServerName www.taotao.com
        DocumentRoot "/vhost/www"
        <Directory "/vhost/www">
               Options None
               AllowOverride None
               Require all granted
        </Directory>
</VirtualHost>

[[email protected] ~]# mkdir -pv /vhosts/www
mkdir: 已创建目录 "/vhosts"
mkdir: 已创建目录 "/vhosts/www"

[[email protected] ~]#  httpd -t
Syntax OK

[[email protected] ~]# vim /vhosts/www/phpinfo.php # 创建一个测试页
 <?php
       phpinfo()
 ?>

如上,配置好之后,我们用浏览器访问(访问之前一定要关闭SElinux,并且关闭防火墙)如下:

可以看到,显示的是源代码,这是因为这是的httpd作为了一的静态服务器,而动态内容需要执行后在可以显示。

接下来我们就来配置虚拟主机支持使用fcgi

[[email protected] ~]# vim /etc/httpd/conf.d/vhost.conf
 "vhost.conf" 9L, 248C                                  3,9          全部
<VirtualHost *:80>
        ServerName www.taotao.com
        DocumentRoot "/vhosts/www"
        <Directory "/vhosts/www">
               Options None
               AllowOverride None
               Require all granted
        </Directory>
        ProxyRequests off # 关闭正向代理
        ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/vhosts/www/$1 
        # 表示把所有以.php结尾内容通通映射到后面,$1为后向引用     
</VirtualHost>
 # 只映射单个文件如下: 
ProxyPass /phpinfo.php fcgi://127.0.0.1:9000/vhosts/www/phpinfo.php 

[[email protected] conf.d]# httpd -t
Syntax OK
[[email protected] conf.d]# systemctl restart httpd

再次刷新网页如下:

如果前端主机上有一个静态内容,依然是由前端主机响应的

[[email protected] conf.d]# echo "Home Page" > /vhosts/www/index.html
[[email protected] conf.d]# cat /vhosts/www/index.html
Home Page

如下:

如上就是二者间的结合

一般来说动态页面内容的站点主页内容为index.php结尾的,所以为了能够让apache能识别php格式的页面,并支持php格式的主页,编辑apache配置文件如下:

    [[email protected] ~]# vim /etc/httpd/conf.d/vhost.conf
     DocumentRoot "/vhosts/www"
        <Directory "/vhosts/www">
               Options None
               AllowOverride None
               Require all granted
        </Directory>
        ProxyRequests off
        ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/vhosts/www/$1
        # 添加默认主页面
        DirectoryIndex index.php index.html

获取pfm的状态信息页php-status和ping探测页设置如下

     [[email protected] ~]# vim /etc/httpd/conf.d/vhost.conf
        <Directory "/vhosts/www">
               Options None
               AllowOverride None
               Require all granted
        </Directory>
        ProxyRequests off
        ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/vhosts/www/$1
        ProxyPassMatch ^/(php-status|ping)$ fcgi://127.0.0.1:9000/$1 # 添加单独映射到后端
        DirectoryIndex index.php index.html
时间: 2024-10-25 21:33:55

lamp基础应用(二)的相关文章

Python基础(二)

Python基础(二) Python 运算符(算术运算.比较运算.赋值运算.逻辑运算.成员运算) 基本数据类型(数字.布尔值.字符串.列表.元组.字典.set集合) for 循环 enumrate range和xrange 编码与进制转换 Python 运算符 1.算术运算: 2.比较运算: 3.赋值运算: 4.逻辑运算:  5.成员运算: 基本数据类型 1.数字 int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483

Python之路【第三篇】:Python基础(二)

Python之路[第三篇]:Python基础(二) 内置函数 一 详细见python文档,猛击这里 文件操作 操作文件时,一般需要经历如下步骤: 打开文件 操作文件 一.打开文件 1 文件句柄 = file('文件路径', '模式') 注:python中打开文件有两种方式,即:open(...) 和  file(...) ,本质上前者在内部会调用后者来进行文件操作,推荐使用 open. 打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,日后通过此文件句柄对该文件操作.

MySQL 基础(二)

MySQL 基础(二) ============================================================================== 概述: ============================================================================== MySQL   1.数据结构: ★分类: 结构化数据:  关系型数据库 半结构化数据:YAML.XML.JSON 非结构化数据:日志文件,NoSQL  

Linux系统基础(二)

            Linux系统基础(二) 一.linux系统结构 1.linux系统结构是倒树型 2. /bin##二进制可执行文件也就是系统命令 /sbin##系统管理命令存放位置 /boot##启动分区,负责系统启动 /dev##设备管理文件 /etc##大多数系统管理文件 /home##普通用户的家目录 /lib##32位系统库文件存放位置 /lib64##64位系统库文件存放位置 /media##系统临时设备挂载点 /mnt##系统临时设备挂载点 /run##系统临时设备挂载点

java 基础(二)

java 基础(二)java 基础(二) 2016-2-1 by Damon 61. 编写多线程程序有几种实现方式 Java 5以前实现多线程有两种实现方法:一种是继承Thread类:另一种是实现Runnable接口.两种方式都要通过重写run()方法来定义线程的行为,推荐使用后者,因为Java中的继承是单继承,一个类有一个父类,如果继承了Thread类就无法再继承其他类了,显然使用Runnable接口更为灵活. 补充:Java 5以后创建线程还有第三种方式:实现Callable接口,该接口中的

好好写,好好干-PHP基础(二)

hi 好久没写,昨儿一写,感觉还是有人看的,至少是有一两个评论的~~好好干! 每天需要坚持的就那么4件事儿:写这个,学一点法语,看会儿书,锻炼.单身狗也有好处. 1.PHP 一.PHP基础(二) 1.3 数据类型 8种——4种标量:布尔boolean,整型integer,浮点float/双精度double,字符串string:2种复合:数组array,对象object:2种特殊:资源resource,NULL无: 推荐记住英文,在学习的过程中,变量通常都是这么来命名的. php是弱类型语言,也就

JMS基础篇(二)

简介 异构集成是消息发挥作用的一个领域,大型公司内部可能会遇到很多的平台,Java,.net或者公司自己的平台等. 传送消息还应该支持异步机制,以提高系统整体的性能.异步传输一条消息意味着,发送者不必等到接收者接收或者处理消息,可以接着做后续的处理. 应用程序发送消息至另外一个应用程序,需要使用到消息中间件.消息中间件应提供容错,负载均衡,可伸缩的事务性等特性. JMS与JDBC类似,是一种与厂商无关的API.应用程序开发者可以使用同样的API来访问不同的系统. 可以认为JMS是一种标准,各消息

数字视频基础(二)

2.    常用数字视频标准 2.1 BT656 首先要理解模拟PAL/NTSC的视频信号的波形: 要进行视频的数字传输,首先我们要将模拟视频信号数字化,获得每个像素的YUV值,一般采用YUV422格式,仅仅传输图像数据还不行,还要传输行同步.场同步.奇偶场信号.以及每行图像什么时候开始的,什么时候结束的.这样在接收端才能正确接收和理解数据,并获得视频的重现. SAV(有效视频开始)和EAV(有效视频结束)码,反映了模拟视频的同步信号.由前导符FF.00.00开始,这三个字节的前导符在视频数据中

Python基础之二:数据类型

四.Python数据类型 数字 字符串 列表 元祖 字典 1.数字类型 整型 表示范围:-2147483648到2147483647,超过该范围的会被当作长整型 示例:num=123 type(num)-返回<type 'int'>,用来测试变量的类型 长整型 表示范围:任意大整数,后跟L或l与整型区别 示例:num=1l type(num)-返回<type 'long'> 浮点型 示例:num=12.0 type(num) -返回<type'float'> 复数型 示

[LAMP环境搭建二]MySQL安装

安装前准备工作:[[email protected] src]# yum -y install bison bison-devel ncurses ncurses-devel openssl openssl-devel cmake下载安装http://www.cmake.org/files/v2.8/cmake-2.8.12.2.tar.gz wgettar -zxvfcd./bootstrapgmakegmake install/********************************