码迷,mamicode.com
首页 > 其他好文 > 详细

lamp平台三种实现方式

时间:2014-08-14 03:57:48      阅读:364      评论:0      收藏:0      [点我收藏+]

标签:php   配置   mysql   lamp   httpd   

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文件,内容如下图:

bubuko.com,布布扣

输出如下信息说明php模块工作正常:

bubuko.com,布布扣

将之前访问的默认php页面中添加内容,测试数据库是否可以正常访问:

# vim /var/www/html/index.php

bubuko.com,布布扣

在浏览器内输入:http://192.168.33.123/index.php

显示如下信息说明php与mysql无法通信

bubuko.com,布布扣

显示Success信息说明php与mysql通信正常。

bubuko.com,布布扣

二、手动编译安装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;在配置文件中添加数据库使用的数据目录

bubuko.com,布布扣

在/usr/local/mysql目录中有一个scripts目录,这个目录中有mariadb数据库初始化的脚本文件,运行后可以初始化数据库,但是,运行该脚本时,一定要在该目录下,而不能在脚本所在的目录下,因为这个脚本在运行时还要依赖于/usr/local/mysql/bin目录下的可执行程序,否则会报错。

bubuko.com,布布扣

数据库初始化完成后,需要为数据库提供服务启动脚本文件,在/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;内容如下图:bubuko.com,布布扣

在浏览器内输入http://192.168.1.133/index.php,效果如下图:

bubuko.com,布布扣


说明php与mysql交互正常,再测试mysql数据库连接是否正常,首先使用mysql命令连接数据库,创建一个数据库和对应的账户,如:

mysql>CREATE DATABASE mydatabase;

mysql>GRANT ALL ON mydabase.* TO ‘wpuser‘@‘127.0.0.1‘IDENTIFIED BY‘wppass‘;

然后修改index.php内容bubuko.com,布布扣

再次测试:

bubuko.com,布布扣

三、基于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模块

bubuko.com,布布扣

配置虚拟主机支持使用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



lamp平台三种实现方式,布布扣,bubuko.com

lamp平台三种实现方式

标签:php   配置   mysql   lamp   httpd   

原文地址:http://9164364.blog.51cto.com/9154364/1539673

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!