lamp平台的安装实现方式分为三种:rpm包的方式安装,以模块的方式编译安装,以fpm方式工作编译安装的php。
一、rpm包安装php:
在CentOS 6.5系统上以rpm包的方式安装httpd,php,mysq是最容易的一种,php在这种情况下做为httpd的模块来运行,在安装完php对应的rpm包以后,可以在httpd的配置文件目录中查看到php.conf文件,配置文件中定义了加载php模块对应的库文件的定义。当httpd启动进程响应客户的请求时,如果客户端请求的是php页面文件,那么httpd会调用php的模块来完成处理,要注意的是这个过程中并不会生成php进程,php作为httpd进程的过程调用出现的,php程序代码如果与数据库的交互时则是通过php-mysql模块来实现,这种方式安装的lamp平台基于一台主机实现,各模块不能分离,默认在CentOS 6上已经安装了httpd-2.2的版本,其他需要安装的是php,以及mysql,安装步骤:
测试环境为虚拟机,IP:192.168.33.123
# yum install -y php;安装php
# yum install -y mysql-server;安装mysql服务器端
# yum install -y php-mysql;安装php连接mysql的驱动程序,php连接mysql的连接器
# service mysqld start
# service httpd start
安装以上三个包以后,在httpd的主配置文件中添加DirectoryIndex指令的选项index.php以支持php格式的页面,然后在目录下创建以.php结尾的网页文件,测试在浏览器中是否可以访问,httpd默认的站点根目录/var/www/html/,在该目录下创建index.php文件,内容如下图:
输出如下信息说明php模块工作正常:
将之前访问的默认php页面中添加内容,测试数据库是否可以正常访问:
# vim /var/www/html/index.php
在浏览器内输入:http://192.168.33.123/index.php
显示如下信息说明php与mysql无法通信
显示Success信息说明php与mysql通信正常。
二、手动编译安装php的方式安装lamp平台
手动编译安装的php模块通过cgi协议与httpd通信,此时php是httpd的子进程,httpd调用php的解释器执行相应的php程序,执行完毕后,httpd还要负责php进程的销毁工作,这种手动编译安装的php与使用系统提供的rpm包在使用上几乎没有什么不同,运行过程中httpd会加载php的模块来工作,不过php程序有单独的配置文件等,是一个独立的程序,httpd与php通过axps2与httpd进程通信,axps2是apache提供的钩子程序,通过它可以实现与其他第三方模块的通信,所以在编译php的过程中需要指明axps2程序的路径位置,以便httpd可以调用php。
以httpd-2.4.9,php-5.4.31,mariadb-5.5.39的版本为例,在主机192.168.1.133,实现lamp平台的编译安装:
1、编译安装httpd-2.4.10,httpd-2.4以上版本依赖于apr1.4以上版本运行,所以需要提前编译安装apr和apr-util,使用的apr版本为1.5.1,apr-util版本为1.5.3,另外还需要安装Development tools和Server Platform Development两个开发包组,以便编译顺利完成:
# yum groupinstall -y "Development tools"
# yum groupinstall -y "Server Platform Development"
# yum install -y pcre;这个包可以实现url重新功能,建议安装
# yum install -y mod_ssl;使httpd支持ssl功能
# tar xf apr-1.5.1.tar.bz2
# cd apr-1.5.1
# ./configure --prefix=/usr/local/apr
# make && make install
# tar xf apr-util-1.5.3.tar.bz2
# cd apr-util-1.5.3
# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
# make && make install
# tar xf httpd-2.4.10.tar.bz2
# cd httpd-2.4.10
# ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd24 --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modules=most --enable-mpms-shared=all --with-mpm=event;编译httpd时使用的是event模型,如果使用的这个模型,那么在编译php时,需要明确的指明使用的maintainer-zts选项,因为event模型调用的是libphp5-zts.so模块,所以需要明确的指出该选项。
# make && make install
# cd /etc/httpd24
# vim httpd.conf;修改httpd24的配置文件,添加PidFile "/var/run/httpd.pid"一行内容,还要添加DirectoryIndex index.php
# vim /etc/rc.d/init.d/httpd24;添加脚本文件
# chmod +x /etc/rc.d/init.d/httpd24
# chkconfig --add httpd24
# service httpd24 start
2、使用通用二进制格式安装mysql,通用二进制格式的mysql路径要求在/usr/local目录下,目录名为mysql,因为程序运行时用到的脚本中定义的路径及程序名称是这样定义的,所以需要这样安装mysql。而且将mysql的数据目录单独定义在一个分区上,分区格式为逻辑卷,以方便以后扩展和备份。
安装步骤:
先创建一个新的分区,格式化为ext4格式,在该分区上创建一个逻辑卷,并将其挂载到指定的目录上:
# fdisk /dev/sda;新建一个分区出来,分区步骤未列出,假设创建的分区为sda3。
# partx -a /dev/sda
# kpartx -af /dev/sda
# pvcreate /dev/sda3
# vgcreate myvg /dev/sda3
# lvcreate -L 10G -n mydata myvg
# mke2fs -t ext4 -L MYDATA /dev/myvg/mydata
# mkdir -pv /mydata/data
# vim /etc/fstab
添加逻辑卷/dev/myvg/mydata的挂载条目,挂载至/mydata目录下
# mount -a ;挂载mydata逻辑卷
# groupadd -r mysql;添加mysql组
# useradd -g mysql -r mysql;添加mysql用户
# chown -R mysql.mysql /mydata/data;将mysql使用的数据目录的属主属组调整为mysql
# tar xf mariadb-5.5.36-linux-x86_64.tar.gz -C /usr/local;解压数据库程序至/usr/local
# cd /usr/local
# ln -sv mariadb-5.5.36-linux-x86_64 mysql;创建软链接,相当于更改名称,以方便程序的脚本执行
# cd mysql
# chown -R root.mysql ./*;将mysql目录中文件的属主改为root,属组改为mysql
# cp support-files/my-large.cnf /etc/mysql/my.cnf;为mysql提供配置文件
# vim /etc/mysql/my.cnf;在配置文件中添加数据库使用的数据目录
在/usr/local/mysql目录中有一个scripts目录,这个目录中有mariadb数据库初始化的脚本文件,运行后可以初始化数据库,但是,运行该脚本时,一定要在该目录下,而不能在脚本所在的目录下,因为这个脚本在运行时还要依赖于/usr/local/mysql/bin目录下的可执行程序,否则会报错。
数据库初始化完成后,需要为数据库提供服务启动脚本文件,在/usr/local/mysql/support-files/目录下,复制该目录下的文件至/etc/rc.d/init.d目录下:
# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
# chkconfig --add mysqld
# chkconfig --list mysqld
# service mysqld start
数据库安装完毕,安装后在/tmp目录下生成了mysql运行时需要用到的sock文件
数据库安装完毕后的配置工作:
添加PATH环境变量,以方便使用数据库提供的命令,如mysql等连接数据库的命令:
# vim /etc/profile.d/mysql.sh
export PATH=/usr/local/mysql/bin:$PATH
# source /etc/profile.d/mysql.sh
导出库文件:
# vim /etc/ld.so.conf.d/mysql.conf
/usr/local/mysql/lib
# ldconfig -v
导出头文件:
# ln -sv /usr/local/mysql/include/ /usr/include/mysql
数据库的安装工作完成。
3、编译安装php-5.4.31
首先解决依赖关系:
# yum groupinstall -y "Desktop Platform Development"
# yum -y install bzip2-devel libmcrypt-devel;(libmcrypt-devel在epel源中)
手动编译安装php与系统提供的rpm包几乎没有什么不同,在使用的过程中还是加载php的模块来工作,不过php程序有自己的配置文件,而这些配置是单独的,它不是httpd的一部分,而httpd与php交互时,需要调用php模块,也就是会调用php解释权生成php子进程来处理php脚本程序,但是这些php进程的创建和销毁是由httpd负责的。
# ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets --with-apxs2=/usr/local/apache/bin/apxs --with-mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --enable-maintainer-zts
注意编译选项中--enable-maintainer-zts选项,之前我们在编译httpd的时候定义httpd工作在event模型下,那么php在编译的时候就一定要用这个选项,因为它需要提供libphp5-zts.so模块,所以编译的时候指定这个选项。
# make && make install
在php编译安装完成后,之前提到过,httpd需要与php基于cgi协议通信,然后调用php解释器来处理php脚本程序,所以我们需要在httpd配置文件中添加调用php解释器执行程序的条目:
# vim /etc/httpd24/httpd.conf
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
为php程序提供配置文件:
# cp /root/php-5.4.31/php.ini-production /etc/php.ini
现在httpd,php,mysql都安装完毕,在httpd的站点根目录下创建一个index.php页面来测试:
# vim /usr/local/apache/htdocs/index.php;内容如下图:
在浏览器内输入http://192.168.1.133/index.php,效果如下图:
说明php与mysql交互正常,再测试mysql数据库连接是否正常,首先使用mysql命令连接数据库,创建一个数据库和对应的账户,如:
mysql>CREATE DATABASE mydatabase;
mysql>GRANT ALL ON mydabase.* TO ‘wpuser‘@‘127.0.0.1‘IDENTIFIED BY‘wppass‘;
再次测试:
三、基于fcgi模式安装配置lamp平台
安装配置httpd,mysql与前面的配置方式相同。这种模式下php工作在另一台主机上,httpd与php基于socket的方式通信,httpd工作在反向代理的模式下,而php要启动为服务,要有配置文件及服务脚本,监听在某套接字上。以这种模式工作的php在编译时不需要再指定apache的钩子程序位置,也不需要指定zts格式用来生成对应的库文件的选项,但要定义其工作的模式为fpm等。
1、解决依赖关系
# yum groupinstall -y "X Software Development";
2、编译安装php-5.4.31
# tar xf php-5.4.31.tar.bz2
# cd php-5.4.31
# ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets --enable-fpm --with-mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2
# make && make install
为php提供配置文件:
# cp php.ini-production /etc/php.in
3、配置php-fpm
为php-fpm提供脚本,并将其添加至服务列表:
# cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm
# chmod +x /etc/rc.d/init.d/php-fpm
# chkconfig --add php-fpm
# chkconfig php-fpm on
为php-fpm提供配置文件:
# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
编辑php-fpm的配置文件:
# vim /usr/local/php/etc/php-fpm.conf
启用Pid文件
pid = /usr/local/php/var/run/php-fpm.pid
启动php-fpm:
# service php-fpm start
默认情况下fpm工作在127.0.0.1的9000端口,可以使用命令验证:
# netstat -tnlp | grep php-fpm
3、调整http的工作属性,使得httpd工作在反向代理的模式下:
# vim /etc/httpd24/httpd.conf;启用LoadModule指令中的mod_proxy-fcgi模块和proxy_mod模块
配置虚拟主机支持使用fcgi,也可以在中心主机段配置,根据需要选择。在配置文件中添加如下内容:
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/usr/local/apache/htdocs/$1
编辑apache配置文件httpd.conf,让apache能识别php格式的页面,并在DocumentIndex中添加支持php格式的主页
# vim /etc/httpd/httpd.cof
添加内容为
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
DirectoryIndex index.php index.html
原文地址:http://9164364.blog.51cto.com/9154364/1539673