设为首页 收藏本站
查看: 1065|回复: 0

lamp平台三种实现方式

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-8-14 17:09:49 | 显示全部楼层 |阅读模式
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文件,内容如下图:
wKiom1PrM4DhWXIUAAB9v4a2zXs028.jpg
输出如下信息说明php模块工作正常:
wKiom1PrM7KT54vOAAPA4Z9E1z4603.jpg
将之前访问的默认php页面中添加内容,测试数据库是否可以正常访问:
# vim /var/www/html/index.php
wKiom1PrNWPRs5okAAC4eiCXr3Q345.jpg
在浏览器内输入:http://192.168.33.123/index.php
显示如下信息说明php与mysql无法通信
wKioL1PrOI3BtiLpAACX1AGnIic710.jpg
显示Success信息说明php与mysql通信正常。
wKiom1PrN5Hz97EGAACSQcprJG0926.jpg
二、手动编译安装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;在配置文件中添加数据库使用的数据目录
wKioL1PrTOTxz5KFAABtW-_JBJ8181.jpg
在/usr/local/mysql目录中有一个scripts目录,这个目录中有mariadb数据库初始化的脚本文件,运行后可以初始化数据库,但是,运行该脚本时,一定要在该目录下,而不能在脚本所在的目录下,因为这个脚本在运行时还要依赖于/usr/local/mysql/bin目录下的可执行程序,否则会报错。
wKiom1PrWcyTqnlFAAB1U2jpnnI384.jpg
数据库初始化完成后,需要为数据库提供服务启动脚本文件,在/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;内容如下图: wKiom1PrZE6TS4uSAAB9v4a2zXs659.jpg
在浏览器内输入http://192.168.1.133/index.php,效果如下图:
wKiom1PrZJCA9bhhAAI0NqaSzxg980.jpg

说明php与mysql交互正常,再测试mysql数据库连接是否正常,首先使用mysql命令连接数据库,创建一个数据库和对应的账户,如:
mysql>CREATE DATABASE mydatabase;
mysql>GRANT ALL ON mydabase.* TO 'wpuser'@'127.0.0.1'IDENTIFIED BY'wppass';
然后修改index.php内容 wKioL1PrafSTXO2OAAC4eiCXr3Q368.jpg
再次测试:
wKiom1PraPmS2gQSAACNpBMIGIo572.jpg
三、基于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模块
wKioL1PrcICAW3XsAADrSV5MVkM102.jpg
配置虚拟主机支持使用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


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-23792-1-1.html 上篇帖子: Windows XP下安装和配置Apache2.2.22服务器+PHP5+Mysql5 下篇帖子: 编译安装LAMP+phpMyAdmin
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表