CentOS 6系统的 lamp (编译安装,模块或php-fpm)详解

LAMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写:

1、Linux;操作系统;

2、Apache;网页服务器;

3、MariaDB或MysqL数据库管理系统(或者数据库服务器);

4、PHP、Perl或Python,脚本语言;


实验要求:

(1) 三者分离于两台或三台主机;

(2) 一个虚拟主机用于提供PHPMyAdmin;另一个虚拟主机用于提供wordpress

(3) xcache

(4) 尝试mpm为非prefork机制;




IP 系统 软件
192.168.1.102 CentOS 6.7 httpd(event)
192.168.1.103 CentOS 6.7 PHP-fpm,xcache
192.168.1.104 CentOS 6.7 mariadb



CentOS 6:

PHP-5.3.2-:不支持fpm机制;需要自行打补丁并编译安装;

httpd-2.2:不支持fcgi协议,需要自行编译此模块;


解决方案:编译安装httpd-2.4,apr,apr-util版本为1.4+,PHP-5.3.3+;


实验安装版本:httpd-2.4.10 + apr-1.5.0+ apr-util-1.5.3 + PHP-5.4.40 + xcache-3.2.0 + mariadb-5.5.46


wKiom1dTuyqgmu3UAABMnwaJ4hY069.png



192.168.1.102主机,编译安装httpd-2.4.10+ apr-1.5.0 + apr-util-1.5.3


httpd-2.4.10需要较新版本的apr和apr-util,因此需要事先对其进行升级,这里使用源代码编译安装。

apr和apr-util的包下载地址:https://archive.apache.org/dist/apr/
httpd程序源码包下载地址https://archive.apache.org/dist/httpd/

1、安装开发环境包组和开发程序包


# hwclock -s //将软件时间同步为硬件时间

#yumgrouplist //查看包组

#yumgroupinstall"DevelopmentTools""ServerPlatformDevelopment"-y //开发环境包组

#yuminstallpcre-devel-y //httpd-2.4.10编译过程要依赖于pcre-devel软件包


wKiom1dT35vB_dGXAAA_7YEN8CQ911.png


2、编译安装apr


# tar xf apr-1.5.0.tar.bz2

# cd apr-1.5.0

# ./configure --prefix=/usr/local/apr

# make && make install


wKioL1dTxIiDAvrpAAAq2RHrPbY500.png


3、编译安装apr-util


# 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


wKiom1dTxGChfes7AAAUSmGPZcs757.png


4、编译安装并配置httpd-2.4.10

4.1编译安装


# rpm -qa httpd

httpd-2.2.15-45.el6.centos.x86_64

# yum remove httpd -y //卸载之前rpm包安装的httpd


# tar xf httpd-2.4.10.tar.bz2

# cd httpd-2.4.10

#./configure --prefix=/usr/local/apache24 --sysconfdir=/etc/httpd24 --enable-so --enable-ssl --enable-cgi --enable-cgid --enable-rewrite--enable-modules=most--enable-mods-shared=most--enable-mpms-shared=all --with-mpm=event--with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util

# make && make install



//sysconfdir=/etc/httpd24 指定配置文件安装位置

//enable-so 支持动态共享模块(DOS),如果没有这个模块PHP将无法与apache结合工作

//enable-ssl 支持ssl功能

//enable-proxy 支持代理

//enable-proxy-fcgi 支持fcgi

// enable-cgi 支持cgi

//enable-rewrite 支持URL重写

//enable-modules=most 启用哪些模块

//enable-mpms-shared=all 支持多道处理模块

//with-mpm=event 设定认模块为prefork模块

//with-zlib 支持压缩库,便于页面压缩后的发送和接收,互联网传播时可节约带宽

//with-pcre 支持cre扩展的正则表达式,支持更强大的正则表达式分析功能





4.2修改httpd.pid路径,认安装时的路径在/usr/local/apache24/logs


# /usr/local/apache24/bin/apachectl start

wKioL1dhIALxiSzrAAAXW3yGJFU359.png

# /usr/local/apache24/bin/apachectl stop

# vim /etc/httpd24/httpd.conf

pidfile "/var/run/httpd.pid" //在ServerRoot "/usr/local/apache24" 下面添加这一行

#/usr/local/apache24/bin/apachectl start

# ls /var/run //发现httpd.pid出现


4.3 修改PATH环境变量,让系统可以直接使用apachectl的相关命令



# vim /etc/profile.d/httpd24.sh

exportPATH=/usr/local/apache24/bin:$PATH


编辑配置文件(全局有效且重启shell后依然有效)此时,环境变量不会立即生效,但是对新登录用户有效,然后新用户登录进行验证


wKioL1dTzWjy_8PUAAA2eY-cEAg497.png


4.4、提供SysV服务脚本/etc/rc.d/init.d/httpd24


# vim/etc/rc.d/init.d/httpd24 //内容如下


#!/bin/bash

#

# httpd Startup script for the Apache HTTP Server

#

# chkconfig: - 85 15

# description: Apache is a World Wide Web server. It is used to serve \

# HTML files and CGI.

# processname: httpd

# config: /etc/httpd24/httpd.conf

# config: /etc/sysconfig/httpd24

# pidfile: /var/run/httpd.pid


# Source function library.

. /etc/rc.d/init.d/functions


if [ -f /etc/sysconfig/httpd24 ]; then

. /etc/sysconfig/httpd24

fi


# Start httpd in the C locale by default.

HTTPD_LANG=${HTTPD_LANG-"C"}


# This will prevent initlog from swallowing up a pass-phrase prompt if

# mod_ssl needs a pass-phrase from the user.

INITLOG_ARGS=""


# Set HTTPD=/usr/sbin/httpd.worker in /etc/sysconfig/httpd to use a server

# with the thread-based "worker" MPM; BE WARNED that some modules may not

# work correctly with a thread-based MPM; notably PHP will refuse to start.


# Path to the apachectl script,server binary,and short-form for messages.

apachectl=/usr/local/apache24/bin/apachectl

httpd=${HTTPD-/usr/local/apache24/bin/httpd}

prog=httpd

pidfile=${PIDFILE-/var/run/httpd.pid}

lockfile=${LOCKFILE-/var/lock/subsys/httpd}

RETVAL=0


start() {

echo -n $"Starting $prog: "

LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS

RETVAL=$?

echo

[ $RETVAL = 0 ] && touch ${lockfile}

return $RETVAL

}


stop() {

echo -n $"Stopping $prog: "

killproc -p ${pidfile} -d 10 $httpd

RETVAL=$?

echo

[ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}

}

reload() {

echo -n $"Reloading $prog: "

if ! LANG=$HTTPD_LANG $httpd $OPTIONS -t >&/dev/null; then

RETVAL=$?

echo $"not reloading due to configuration Syntax error"

failure $"not reloading $httpd due to configuration Syntax error"

else

killproc -p ${pidfile} $httpd -HUP

RETVAL=$?

fi

echo

}


# See how we were called.

case "$1" in

start)

start

;;

stop)

stop

;;

status)

status -p ${pidfile} $httpd

RETVAL=$?

;;

restart)

stop

start

;;

condrestart)

if [ -f ${pidfile} ] ; then

stop

start

fi

;;

reload)

reload

;;

graceful|help|configtest|fullstatus)

$apachectl $@

RETVAL=$?

;;

*)

echo $"Usage: $prog {start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}"

exit 1

esac


exit $RETVAL


而后为此脚本赋予执行权限:

# chmod +x /etc/rc.d/init.d/httpd24


加入服务列表:

# chkconfig --add httpd24

开机自动启动

#chkconfighttpd24 on


启动服务

#servicehttpd24 start

#ss-tnl


wKiom1dhIE6CNwEPAAAfjEbjGOg205.png





附加:这里httpd编译安装时指定MPM模块类型为event,想要切换MPM中的类型可以编辑主配置文件即可。

例如:改为prefork模型

#vim /etc/httpd24/httpd.conf //编辑生成的主配置文件


Include/etc/httpd24/extra/httpd-mpm.conf //去掉注释符,启用extra模块

#LoadModulempm_event_modulemodules/mod_mpm_event.so //注释掉当前模型

LoadModulempm_prefork_modulemodules/mod_mpm_prefork.so //改成要使用的MPM模块类型

重启httpd服务后发现MPM模块类型切换为prefork模型


# httpd -M


wKiom1dTB2HCojPRAAA25YyAXqU015.png



二、192.168.1.104主机,通用二进制格式安装mariadb-5.5.46



1、下载加压mariadb


下载平台对应的MysqL版本至本地,下载地址为https://downloads.mariadb.com/archives/


# tar xf mariadb-5.5.46-linux-x86_64.tar.gz -C /usr/local

# cd /usr/local/

# ln -sv mariadb-5.5.46-linux-x86_64/ MysqL

# cd MysqL


2、创建用户以安全方式运行进程


#groupadd-r-g306MysqL

#useradd-g306-r-u306MysqL

# chown -R MysqL:MysqL /usr/local/MysqL/*

3、准备数据存放的文件系统


新建一个逻辑卷,并将其挂载至特定目录即可。这里假设其逻辑卷的挂载目录为/mydata,而后需要创建/mydata/data目录做为MysqL数据的存放目录。


#mkdir/mydata/data-pv

#chown-RMysqL.MysqL/mydata/data

# chmod750/mydata/data

4、初始化MysqL-5.5.46


# cd /usr/local/MysqL

# scripts/MysqL_install_db --user=MysqL --datadir=/mydata/data

5、为MysqL提供主配置文件


# cd /usr/local/MysqL

# cp support-files/my-large.cnf /etc/my.cnf

# vim/etc/my.cnf

#cat/proc/cpuinfo //查看cpu个数


修改文件中thread_concurrency的值为你的cpu个数乘以2,比如这里使用如下行:

thread_concurrency = 2


另外还需要在[MysqLd]下添加数据文件的存放位置:

datadir = /mydata/data


wKiom1dS4-ThMJxeAAAdH5tx1rM199.png


6、为MysqL提供sysv服务脚本

# cd /usr/local/MysqL

# cp support-files/MysqL.server /etc/rc.d/init.d/MysqLd

# chmod +x /etc/rc.d/init.d/MysqLd


添加至服务列表:

# chkconfig --add MysqLd

# chkconfig MysqLd on

7、启动MysqL服务

# service MysqLd start

wKioL1dS5djC4PldAAAZjRFt-a8338.png

8、修改PATH环境变量,让系统可以直接使用MysqL的相关命令

此时必须指明全路径才可以进入MySQL命令行界面,想要直接使用MysqL进入命令行,需要编辑配置文件(全局有效且重启shell后依然有效,对当前shell无效,需要登出再登入)

wKiom1dS5zChYrXwAAAdQUmUdSA058.png

# vim /etc/profile.d/MysqL.sh


exportPATH=/usr/local/MysqL/bin:$PATH


wKiom1dS6AHgzYh7AAAsNwHiL34612.png



为了使用MysqL的安装符合系统使用规范,并将其开发组件导出给系统使用,这里还需要进行如下步骤:


9、输出MysqL的man手册至man命令的查找路径


编辑/etc/man.config添加如下行即可:

MANPATH /usr/local/MysqL/man


wKiom1dS6SOCadp2AAAI-9bQJQs080.png


10、输出MysqL的头文件至系统头文件路径/usr/include


# ln -sv /usr/local/MysqL/include /usr/include/MysqL


11、输出MysqL的库文件给系统库查找路径


# echo '/usr/local/MysqL/lib' > /etc/ld.so.conf.d/MysqL.conf


12、系统重新载入系统库


# ldconfig


13、创建和授权wordpressPHPMyAdmin用户

MariaDB [(none)]> CREATE DATABASE wpdb;//创建wordpress数据库

MariaDB [(none)]> GRANT ALL ON wpdb.* TO wpuser@'192.168.1.%' IDENTIFIED BY 'wppass'; //授权wordpress用户

MariaDB [(none)]> FLUSH PRIVILEGES;

MariaDB [(none)]> CREATE DATABASE pma; //创建PHPMyAdmin数据库

Query OK,1 row affected (0.00 sec)

MariaDB [(none)]> GRANT ALL ON pma.* TO pmauser@'192.168.1.%' IDENTIFIED BY 'pmapass';

Query OK,0 rows affected (0.00 sec)

MariaDB [(none)]> FLUSH PRIVILEGES;

Query OK,0 rows affected (0.00 sec)


三、192.168.1.103主机,编译安装PHP-5.4.40

1、解决依赖关系


自行配置好yum源(系统安装源及epel源后执行如下命令:


# yum groupinstall "Server Platform Development" "Development tools" -y

# yum install bzip2-devel libmcrypt-devel libxml2-devel mhash mhash-devel libmcrypt-devel libmcrypt -y

2、编译安装PHP-5.4.40


下载源码包至本地目录,下载位置http://mirrors.sohu.com/php/


# tar xf PHP-5.4.40.tar.bz2

# cd PHP-5.4.40

#./configure --prefix=/usr/local/PHP --with-openssl --with-MysqL=MysqLnd --with-pdo-MysqL=MysqLnd --with-MysqLi=MysqLnd --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--enable-maintainer-zts



要想支持fpm时,需要去掉--with-apxs2=/usr/local/apache/bin/apxs,添加--enable-fpm ,注意两者不能同时存在

说明:如果使用PHP5.3以上版本,为了链接MysqL数据库,可以指定MysqLnd,这样在本机就不需要先安装MysqLMysqL开发包了。MysqLnd从PHP5.3开始可用,可以编译时绑定到它(而不用和具体的MysqL客户端库绑定形成依赖),但从PHP5.4开始它就是认设置了。

#./configure--with-MysqL=MysqLnd--with-pdo-MysqL=MysqLnd--with-MysqLi=MysqLnd


#make -j 4 && make install


3、为PHP提供配置文件


# cp PHP.ini-production /etc/PHP.ini


4、配置PHP-fpm


PHP-fpm提供SysVinit脚本,并将其添加至服务列表:

#cpsapi/fpm/init.d.PHP-fpm/etc/rc.d/init.d/PHP-fpm

#chmod+x/etc/rc.d/init.d/PHP-fpm

#chkconfig--addPHP-fpm

#chkconfigPHP-fpmon


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


配置fpm的相关选项为你所需要的值,并启用pid文件

pm.max_children=50

pm.start_servers=5

pm.min_spare_servers=2

pm.max_spare_servers=8

pid=run/PHP-fpm.pid //启用

listen=192.168.1.103:9000

listen.allowed_clients=192.168.1.102


然后就可以启动PHP-fpm了,查看9000端口。

#servicePHP-fpmstart


wKiom1dhKtDQ-AMrAAAV1vQSOWc261.png


、192.168.1.103主机,安装xcache,为PHP加速:(可以支持PHP-5.4的xcache版本必须为2.0+)

下载地址https://xcache.lighttpd.net/pub/Releases


1、编译安装


#tarxfxcache-3.2.0.tar.bz2

#cdxcache-3.2.0

#/usr/local/PHP/bin/PHPize

wKioL1dhLHGTdZnSAAANrPiLqNw252.png

#./configure--enable-xcache--with-PHP-config=/usr/local/PHP/bin/PHP-config

#make&&makeinstall



安装结束时,会出现类似如下行:

wKiom1dhK8rhXSJsAAAOC0SBC1o922.png



2、编辑PHP.ini,整合PHP和xcache:


首先将xcache提供的样例配置导入PHP.ini

#mkdir/etc/PHP.d

#cp/root/xcache-3.2.0/xcache.ini/etc/PHP.d

编辑配置文件/etc/PHP.d/xcache.ini

# vim/etc/PHP.d/xcache.ini

[xcache-common]开下,修改为如下行:

extension=/usr/local/PHP/lib/PHP/extensions/no-debug-zts-20100525/xcache.so

wKiom1dhLHzzJmjZAAASOtEnM9k251.png


注意:如果PHP.ini文件中有多条extension指令行,要确保此新增的行排在第一位。



五、192.168.1.102主机,配置httpd-2.4.10


1、编辑httpd主配置文件关闭中心主机,启用虚拟主机配置文件启用httpd的相关模块


# vim /etc/httpd24/httpd.conf

#DocumentRoot"/usr/local/apache24/htdocs" //注释掉这一行

Include/etc/httpd24/extra/httpd-vhosts.conf //找到并启用这一行

LoadModulelog_config_modulemodules/mod_log_config.so //确认这一行启用,虚拟主机 配置文件中会用到mod_log_config


在Apachehttpd2.4以后已经专门有一个模块针对FastCGI的实现,此模块为mod_proxy_fcgi.so,它其实是作为mod_proxy.so模块的扩充,因此,这两个模块都要加载

LoadModuleproxy_modulemodules/mod_proxy.so //启用

LoadModuleproxy_fcgi_modulemodules/mod_proxy_fcgi.so //启用

添加如下二行

AddTypeapplication/x-httpd-PHP.PHP

AddTypeapplication/x-httpd-PHP-source.PHPs


wKiom1dhLxLzcLZpAAANMfhMlpY601.png


定位至DirectoryIndexindex.html


修改为:

DirectoryIndexindex.PHPindex.html




2、编辑虚拟主机的配置文件

1)配置虚拟主机的配置文件使虚拟主机支持使用fcgi


#vim/etc/httpd24/extra/httpd-vhosts.conf

修改如下




wKiom1dhMjzBKUiyAABPoc-2h0g614.png



2)为虚拟主机提供认访问页面和日志存放目录

#mkdir/var/log/httpd24 //创建的日志存放位置

#mkdir/apps/vhosts/{b.net,c.org}-pv //httpd主机和PHP主机都需要创建访问路径



# vim /apps/vhosts/b.net/index.PHP //PHP主机上创建测试页



wKioL1dhNZ_jmlIFAAATfVgD20k745.png


# vim /apps/vhosts/c.org/index.PHP //PHP主机上创建测试页


wKiom1dhNO_AXjk3AAAT0ZJP7qw332.png

3)重启服务,物理主机浏览器测试


#httpd-t //习惯做配置语法测试

SyntaxOK

#servicehttpd24 restart


wKiom1dhNWfQe709AAAX94rThPg283.png


然后windows主机加192.168.1.102主机名解析

wKioL1dhNrfQyO0PAAAiIY2y_BQ805.png

wKiom1dhNnbxAPAIAAAEw3YBGgI353.png

浏览器访问www.b.net和www.c.og

wKioL1dhOO7w8TWSAACS48dN0g8272.png

wKiom1dhN-ugdsHnAAAfFDURcEw409.png

wKioL1dhOQuiE6E5AACWzizZWDk050.png


六、192.168.1.103主机,为虚拟主机安装配置wordpressPHPMyAdmin

1、 安装wordpress //PHP主机


1)下载、配置wordpress

# cd /apps/vhosts/b.net/

# ls //下载wordpress压缩包(下载地址:https://wordpress.org/download/

wordpress-4.3.1-zh_CN.zip

# unzip wordpress-4.3.1-zh_CN.zip

# cd wordpress/

# mv wp-config-sample.PHP wp-config.php

# vim wp-config.php


wKioL1dhOiqh6uTzAAA6GKrDAWE451.png


# scp -r /apps/vhosts/b.net/wordpress root@192.168.1.102:/apps/vhosts/b.net/ //此时需要把PHP主机的wordpress文件放到httpd主机的页面访问路径下


2httpd主机

# httpd -t //测试语法

Syntax OK

# service httpd24 restart

3windows浏览器访问www.b.net/wordpress,按之前授权的信息填写相关内容


wKiom1dhPO_TIOhFAABjXWt83WI517.png

wKioL1dhPhXjnRx9AAC-FMX5pIg437.png

2安装PHPMyAdmin

1)下载解压PHPMyAdmin

# cd /apps/vhosts/c.org

# ls

PHPMyAdmin-4.4.14.1-all-languages.zip //下载PHPMyAdmin压缩包https://www.phpmyadmin.net/downloads/

# unzip PHPMyAdmin-4.4.14.1-all-languages.zip

# mv PHPMyAdmin-4.4.14.1-all-languages pma

# cd pma

# mv config.sample.inc.PHP config.inc.PHP

2)配置PHPMyAdmin

# openssl rand -base64 18 //生成一段随机

fUDTA121uzwkoWMr4m4DGKQv

# vim config.inc.PHP //编辑配置文件


wKiom1dhPjuQhJNcAAAp_S14eQY130.png

# scp -r /apps/vhosts/c.org/pma root@192.168.1.102:/apps/vhosts/c.org//此时需要把PHP主机的pma文件放到httpd主机的页面访问路径下


3httpd主机

# httpd -t //测试语法

Syntax OK

#service httpd24 restart


4)windows浏览器访问www.c.org/pma,按之前授权的信息填写相关内容


wKioL1dhQQ-iTcpxAACkpu2DxzM032.png

wKiom1dhQBTz13NUAAFwPcYZPNc985.png

至此看似浩瀚的lamp编译工程结束,如果哪里有写的不对甚至欠缺的地方,希望大牛们批评指出。之前以为一台主机安装lamp比较简单,现在才明白,主要是搞清楚他们之间的关系,几台主机安装都是相通的。个人总结:配置系统时,需要屡清楚各个程序之间的关系,遇到困难需要结合相应的日志文件查看哪里出错,配置文件时需要做好必要的备份,配置完成后可以语法测试的需要测试一下,不要盲目的百度和问别人,要自己动脑筋思考。

相关文章

Centos下搭建性能监控Spotlight
CentOS 6.3下Strongswan搭建IPSec VPN
在CentOS6.5上安装Skype与QQ
阿里云基于centos6.5主机VPN配置
CentOS 6.3下配置multipah
CentOS安装、配置APR和tomcat-native