FastCGI实现LAPM环境搭建和Xcache

FastCGI实现LAPM环境搭建和Xcache

一.FastCGI原理

1、 Web Server启动时载入FastCGI进程管理器(IIS ISAPIApache Module)

2FastCGI进程管理器自身初始化,启动多个CGI解释器进程(可见多个php-cgi)并等待来自Web Server的连接。

3、当客户端请求到达WebServer时,FastCGI进程管理器选择并连接到一个CGI解释器。Web ServerCGI环境变量和标准输入发送到FastCGI子进程php-cgi

4FastCGI子进程完成处理后将标准输出和错误信息从同一连接返回Web Server。当FastCGI子进程关闭连接时,请求便告处理完成。FastCGI子进程接着等待并处理来自FastCGI进程管理器(运行在Web Server)的下一个连接。 在CGI模式中,php-cgi在此便退出了。

在上述情况中,你可以想象CGI通常有多慢。每一个Web请求PHP都必须重新解析php.ini、重新载入全部扩展并重初始化全部数据结构。使用FastCGI,所有这些都只在进程启动时发生一次。一个额外的好处是,持续数据库连接(Persistent database connection)可以工作。

二.FastCGICGI的区别

CGI全称是公共网关接口(Common Gateway Interface)HTTP服务器与你的或其它机器上的程序进行交谈的一种工具,其程序须运行在网络服务器上。CGI可以用任何一种语言编写,只要这种语言具有标准输入、输出和环境变量。如phpperltcl等。

wKiom1OWzPazK01BAACRyAwvk_o972.jpg 

 

FastCGI像是一个常驻(long-live)型的CGI,它可以一直执行着,只要激活后,不会每次都要花费时间去fork一次(这是CGI最为人诟病的fork-and-execute 模式)。它还支持分布式的运算即 FastCGI 程序可以在网站服务器以外的主机上执行并且接受来自其它网站服务器来的请求。

FastCGI是语言无关的、可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持在内存中并因此获得较高的性能。众所周知,CGI解释器的反复加载是CGI性能低下的主要原因如果CGI解释器保持在内存中并接受FastCGI进程管理器调度,则可以提供良好的性能、伸缩性、Fail- Over特性等等。

wKiom1OWzRrid1HHAAEKs2atzWM696.jpg 

三.FastCGI实现LAPM搭建

FastCGI实现LAPM环境的搭建具体如下:

1. MySQL的安装

首先到官网上下载mysql的软件包,然后使用ftp工具上传到根目录下(在上一篇已提过),上传后解压安装,这里所使用的软件包是二进制mysql-5.6.15-linux-glibc2.5-x86_64.tar.gz,具体安装步骤如下:

 现在卸载本机自带的mysql和mysql-server,然后安装mysql安装时所需的一些组件。

//卸载mysql和mysql-server

[root@huangzhong ~]# yum remove mysql mysql-server

//安装mysql所需的组件

[root@huangzhong ~]# yum install libaio

 拆包

因为mysql安装包为二进制安装包,所以把该软件包解压到/usr/local/目录下:

[root@huangzhong ~]# tar  -zxvf  mysql-5.6.15-linux-glibc2.5-x86_64.tar.gz   -C  /usr/local/

 进入解压的目录下为了方便操作创建软连接,然后创建mysql用户和mysql组,并且把mysql用户加入mysql组(解压后如果你不知道怎么操作可以到该文件解压后的目录下查看安装说明文件INSTALL-BINARY)。

//创建软连接

[root@huangzhong local]# ln -s mysql-5.6.15-linux-glibc2.5-x86_64/  mysql

//创建用户组(在创建时可能会显示已有,因为原来自带mysql已创建)

[root@huangzhong mysql]# groupadd  -r  mysql

//创建用户并加入mysql组

[root@huangzhong mysql]# useradd -r -g mysql  mysql

 进入创建好软连接mysql的目录下,查看该目录下文件,然后改变该目录下所有对象的所有者和所属组,然后进行初始化产生库文件,最后在把该目录下除data外所有对象的所有者改变回来,所属组不变。

//进入创建好软连接mysql的目录下

[root@huangzhong local]# cd mysql

//改变该目录下的所有对象的所属者和所属组

[root@huangzhong mysql]# chown -R mysql:mysql .  //点代表当前目录下所有

//进行初始化产生库文件

[root@huangzhong mysql]# ./scripts/mysql_install_db  --user=mysql

//初始化完后进入查看data目录下可以看到已经产生了许多库文件

[root@huangzhong mysql]# ll data/  //查看产生的库文件

//改回该目录下除data外所有对象的所有者

[root@huangzhong mysql]# chown  -R root .

[root@huangzhong mysql]# chown  -R mysql data/  //因为data目录下存放数据文件,为了能够读取和写入改变所有者为mysql或者给所属组可读写的权限。

 为了mysql能够正常的配置控制,所以要给予一个控制脚本和配置文件,因此需要以下操作:

//把该目录下的my.cnf拷贝到/etc目录下生成mysql server配置文件

[root@huangzhong mysql]# cp my.cnf /etc/  //覆盖掉旧文件

//把support-files目录下mysql.server拷贝到/etc/init.d目录下改名为mysqld,进而产生mysql-server控制脚本

[root@huangzhong mysql]# cp support-files/mysql.server   /etc/init.d/mysqld

//为了能够执行脚本所以要给予可执行权限

[root@huangzhong mysql]# chmod   a+x  /etc/init.d/mysqld

 启动mysql服务,查看端口,并且加入chkconfig管理,开启开机自动启动。

//启动mysql服务

[root@huangzhong mysql]# service mysqld start

Starting MySQL...                        [  OK  ]

//查看mysql的端口号

[root@huangzhong mysql]# netstat -tupln |grep mysql

tcp        0      0 :::3306          :::*                  LISTEN      19756/mysqld  //从这里可以看到mysql端口号已开启,切端口号为3306

//加入chkconfig管理中

[root@huangzhong mysql]# chkconfig --add mysqld

//启动开机自启

[root@huangzhong mysql]# chkconfig mysqld on

 接下来进行后续操作首先改变 PATH变量,接着改变mysql库文件的输出,最后操作man手册搜索路径

//改变 PATH变量,编辑/etc/profile文件

[root@huangzhong mysql]# vim /etc/profile

wKioL1OWzUDS1hE2AAGOKeRZs_M067.jpg

//编辑完后,重新读取以下该文件或重启服务

[root@huangzhong mysql]# . /etc/profile

//改变mysql库文件的输出,操作如下:

[root@huangzhong mysql]# echo "/usr/local/mysql/lib" > /etc/ld.so.conf.d/mysql.conf

[root@huangzhong mysql]# ldconfig  //刷新加载缓存

//改变mysql在man手册中的搜索路径

[root@huangzhong mysql]# echo "MANPATH /usr/local/mysql/man" >>/etc/man.conf

 连接mysql查看能否连接,进去后查看数据库,由于初始时管理员没有密码为了安全还需要给管理员设置密码。

//连接mysql,然后查看数据库,具体如下:

wKiom1OWzZCg19I7AAMwdPT1Lz0408.jpg 

//给管理员设置密码

[root@huangzhong ~]# mysqladmin -u root -p password '123'

Enter password:   //这里让输入密码,因为初始没有所以直接回车

到此mysql源码的安装已完成。

 

2. PHP的安装

先到官网www.php.net上下载PHP的软件包,然后使用ftp工具上传到根目录下(在上一篇已提过),上传后解压安装,这里所使用的软件包是 php-5.5.8.tar.bz2具体安装步骤如下:

 拆解PHP安装包

[root@huangzhong ~]# tar -jxvf php-5.5.8.tar.bz2  -C /usr/local/src/

 进入解压后的目录下,执行./configure进行编译

//进入解压后的目录

[root@huangzhong ~]# cd /usr/local/src/php-5.5.8/

//执行./configure进行编译

[root@huangzhong php-5.5.8]# ./configure    \

> --prefix=/usr/local/php \

> --enable-fpm   \

> --enable-sockets  \

> --with-mysql=/usr/local/mysql \

> --with-mysqli=/usr/local/mysql/bin/mysql_config  \

> --enable-mbstring  \

> --enable-xml  \

> --with-png-dir \

> --with-jpeg-dir  \

> --with-zlib  \

> --with-freetype-dir \

> --with-config-file-path=/etc/php

> --with-config-file-scan-dir=/etc/php5.d    //这些参数如果不知道可以使用--help帮助

 执行make和make install

[root@huangzhong php-5.5.8]# make && make install

因为在执行编译时参数中指定了/etc目录下的文件php和php5.d所以在/etc目录下创建php和php5.d目录

[root@huangzhong php]# mkdir -pv /etc/php /etc/php5.d

//把解压后的目录下php.ini-development拷贝到/etc/php/下

[root@huangzhong php-5.5.8]# cp php.ini-development /etc/php/php.ini

 为了能够PHP独立运行,应给予一个控制服务脚本,具体操作如下:

//把解压后目录下的sapi/fpm目录下的init.d.php-fpm脚本文件拷贝到/etc/init.d/目录下命名为php-fpm

[root@huangzhong fpm]# cp init.d.php-fpm /etc/init.d/php-fpm

//给予控制脚本可执行权限

[root@huangzhong fpm]# chmod a+x /etc/init.d/php-fpm 

启动PHP服务,病查看端口号

//启动PHP服务

[root@huangzhong etc]# service php-fpm start

//查看端口号

[root@huangzhong etc]# netstat -tupln |grep php 

tcp      0    0   127.0.0.1:9000        0.0.0.0:*        LISTEN      34703/php-fpm  //可以看出php服务已开启端口号为9000

//加入开机管理服务

[root@huangzhong etc]# chkconfig --add php-fpm

//开启永久启动

[root@huangzhong etc]# chkconfig php-fpm on

 

3. APACHE 的安装

先到官网上下载httpd的软件包,然后使用ftp工具上传到根目录下(在上一篇已提过),上传后解压安装,这里所使用的软件包是httpd-2.4.9.tar.bz2,为了httpd的可移植性还需要两个先关的安装包aprapr-util,所以安装时先安装这两个,然后再安装httpd,具体安装步骤如下:

 安装apr,操作如下:

//解压安装包apr

[root@huangzhong ~]# tar -zxvf apr-1.4.6.tar.gz -C /usr/local/src/ 

//进入解压后的目录下:

[root@huangzhong ~]# cd /usr/local/src/apr-1.4.6/

//进行编译

[root@huangzhong apr-1.4.6]# ./configure --prefix=/usr/local/apr

//执行make和make install

[root@huangzhong apr-1.4.6]# make && make install

 安装apr-util,操作如下:

//解压安装包

[root@huangzhong ~]# tar -zxvf apr-util-1.5.1.tar.gz -C /usr/local/src/

//进入解压后的文件目录下:

[root@huangzhong src]# cd /usr/local/src/apr-util-1.5.1/

//进行编译

[root@huangzhong apr-util-1.5.1]# ./configure --prefix=/usr/local/apr-utils --with-apr=/usr/local/apr/bin/apr-1-config   //这里的参数如果不知道可以用后跟参数--help查看帮助

//执行make和make install

[root@huangzhong apr-util-1.5.1]# make && make install

 安装httpd,操作如下:

//先安装一个与http的相关联的包pcre-devel,如果没安装,在编译文件时会提示出错,在这里提前安装一下

[root@huangzhong ~]# yum install pcre-devel

//解拆安装包

[root@huangzhong ~]# tar -jxvf httpd-2.4.9.tar.bz2 -C /usr/local/src/

//进入解压后的目录下

[root@huangzhong ~]# cd /usr/local/src/httpd-2.4.9/

//进行编译

[root@huangzhong httpd-2.4.9]# ./configure  \

> --prefix=/usr/local/apache  \

> --sysconfdir=/etc/httpd \

> --enable-so \

> --enable-ssl  \

> --enable-rewrite  \

> --with-apr=/usr/local/apr/bin/apr-1-config \

> --with-apr-util=/usr/local/apr-utils/bin/apu-1-config \

> --with-pcre  \

> --with-z  \

> --enable-mpms-shared=all \

> --enable-proxy\

> --enable-proxy-fcgi

//编辑文件/etc/httpd/httpd.conf文件,进行加载模块 

wKioL1OWzbDwmdBjAAIMsS3WRaM127.jpg 


//改变PATH环境变量

wKioL1OWzdCxNd3DAAGF1w0kx_A426.jpg 

//重新读取该文件或重启该服务

[root@huangzhong httpd-2.4.9]# . /etc/profile

//改变手册的搜索路径

[root@huangzhong httpd-2.4.9]# echo "MANPATH /usr/local/apache/man" >>/etc/man.conf

//创建控制脚本文件

[root@huangzhong ~]# vim /etc/init.d/httpd 

//给予可以执行权限

[root@huangzhong ~]# chmod a+x /etc/init.d/httpd 

//编辑脚本文件,编辑内容如下:

 

wKiom1OWzh-wKa-iAAMffBeCLDk664.jpg

wKiom1OWziLyHicAAAC44EQHq9M627.jpg


//编辑完后保存退出,启动httpd服务

[root@huangzhong ~]# service httpd start

//查看端口号是否开启

[root@huangzhong ~]# netstat -tupln |grep httpd

tcp        0      0 :::80            :::*               LISTEN      14008/httpd    //表明httpd已启动,端口80

//把httpd加入chkconfig管理中

[root@huangzhong ~]# chkconfig --add httpd

//开启开机自启

[root@huangzhong ~]# chkconfig httpd on

//然后在网页上测试httpd能否正常工作,能否访问到该网站,结果如下:

wKioL1OWzg2AcNP8AAEl5-r8OwY996.jpg 

到此httpd的安装就完成了,并且已正常工作。

 

4. FastCGI实现phpApache的结合验证

通过网页访问index.php,然后查看结果如下:

wKiom1OWzlDSRQIhAAKWloxgE0g532.jpg 

 

5. Xcache的安装和应用

(1)XCache的安装配置

在安装XCache前,首先到官网上该软件安装包,然后把安装包上传到根目录下,最后进行安装。

//解压安装包

[root@huangzhong ~]# tar   -zxvf  xcache-3.1.0.tar.gz  -C  /usr/local/src

//进入解压后的目录下找到安装说明文件INSTALL

[root@huangzhong htdocs]# cd /usr/local/src/xcache-3.1.0/

//打开INSTALL文件查看安装说明如下:

[root@huangzhong xcache-3.1.0]# vim INSTALL

wKioL1OWzjnDtP-4AAE12g3BrXQ056.jpg 

//按照安装说明初始化产生config文件

[root@huangzhong xcache-3.1.0]# /usr/local/php/bin/phpize

//产生config后进行编译文件

[root@huangzhong xcache-3.1.0]# ./configure  \--enable-xcache  --with-php-config=/usr/local/php/bin/php-config

//编译后执行make和make install

[root@huangzhong xcache-3.1.0]# make && make install 

//把xcache.ini拷贝到/etc/php5.d/中

[root@huangzhong xcache-3.1.0]# cp xcache.ini /etc/php5.d/

//然后编辑/etc/php5.d/xcache.ini如下:

[root@huangzhong xcache-3.1.0]# vim /etc/php5.d/xcache.ini

wKioL1OWzk2gyBHbAAGonO8Vh5A230.jpg 

//编辑完后重新启动httpd服务

[root@huangzhong xcache-3.1.0]# service httpd restart

//然后通过网页访问index.php查看xcache是否应用具体如下:

wKioL1OWzmbRvQ-pAAUWUx88Kgk529.jpg 

 

(2)XCache的web界面的管理

Xcache安装完后进入安装目录下,看到一个htdocs目录,然后把该目录下的文件拷贝到/usr/local/apache/htdocs/目录下命名为admin。

//进入安装目录下

[root@huangzhong htdocs]# cd /usr/local/src/xcache-3.1.0/

//拷贝htdocs下文件

[root@huangzhong xcache-3.1.0]# cp -r htdocs/ /usr/local/apache/htdocs/admin

//然后切换到/usr/local/apache/htdocs/目录下

[root@huangzhong xcache-3.1.0]# cd /usr/local/apache/htdocs/

//然后通过页面进行访问,具体如下:

wKiom1OWzrSzGktgAAIP61-M0pg279.jpg 

//需要身份验证所以要编辑文件/etc/php5.d/xcache.ini,编辑如下:

[root@huangzhong htdocs]# vim /etc/php5.d/xcache.ini

wKiom1OWzsfAo4wCAAJ7P7igP3Y912.jpg 

//重新通过页面访问结果如下:

wKioL1OWzrOgRzXbAAF4sTPcuPI449.jpg 

//输入用户名admin,密码123登陆结果如下:

wKioL1OWzszQHxGIAAhFicx0DAc539.jpg 

 

 


你可能感兴趣的:(cgi,fastcgi,xcache,LAPM)