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



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  //将软件时间同步为硬件时间

    # yum grouplist  //查看包组

# yum groupinstall "Development Tools" "Server Platform Development" -y   //开发环境包组

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

    

    


   2、编译安装apr

# tar xf apr-1.5.0.tar.bz2

# cd apr-1.5.0

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

# make && make install

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


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

# /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

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

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


    

 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 [email protected]

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

开机自动启动

# chkconfig httpd24 on

启动服务

# service httpd24 start

# ss -tnl


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

例如:改为prefork模型

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

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

# LoadModule mpm_event_module modules/mod_mpm_event.so  //注释掉当前模型

LoadModule mpm_prefork_module modules/mod_mpm_prefork.so  //改成要使用的MPM模块类型

        

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


        # httpd -M


二、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 -g 306 mysql

# useradd -g 306 -r -u 306 mysql

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

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

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

# mkdir /mydata/data -pv

# chown -R mysql.mysql /mydata/data

# chmod 750 /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


   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

    


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

    

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

   

    

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

export PATH=/usr/local/mysql/bin:$PATH


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

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

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

MANPATH /usr/local/mysql/man

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、创建和授权wordpress和phpMyAdmin用户

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

MariaDB [(none)]> GRANT ALL ON wpdb.* TO [email protected]‘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 [email protected]‘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,这样在本机就不需要先安装MySQL或MySQL开发包了。mysqlnd从php 5.3开始可用,可以编译时绑定到它(而不用和具体的MySQL客户端库绑定形成依赖),但从PHP 5.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提供SysV init脚本,并将其添加至服务列表:

# 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

配置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端口。

# service php-fpm start

    


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

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

  1、编译安装

# tar xf xcache-3.2.0.tar.bz2

# cd xcache-3.2.0

# /usr/local/php/bin/phpize

    

    

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

# make && make install

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

  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

注意:如果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 //找到并启用这一行

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

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

LoadModule proxy_module modules/mod_proxy.so  //启用

LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so //启用

添加如下二行

AddType application/x-httpd-php  .php

AddType application/x-httpd-php-source  .phps

定位至DirectoryIndex index.html

修改为:

DirectoryIndex  index.php  index.html

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

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

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

修改如下


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

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

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

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


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


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


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

Syntax OK

# service httpd24 restart

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

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

 六、192.168.1.103主机,为虚拟主机安装配置wordpress和phpMyAdmin

  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


    


# scp -r /apps/vhosts/b.net/wordpress [email protected]:/apps/vhosts/b.net/   //此时需要把php主机的wordpress文件放到httpd主机的页面访问路径下

2)httpd主机

# httpd -t  //测试语法

Syntax OK

# service httpd24 restart

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



  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 //编辑配置文件


    


#  scp -r /apps/vhosts/c.org/pma [email protected]:/apps/vhosts/c.org  // 此时需要把php主机的pma文件放到httpd主机的页面访问路径下


  3)httpd主机

# httpd -t  //测试语法

Syntax OK

# service httpd24 restart

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


    



    



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



时间: 2024-10-08 04:07:21

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

编译安装httpd-2.2.29.tar详解

一.编译前准备 1.开源代码包获取 (1)官方自建站点 apache.org (ASF).mariadb.org- (2)代码托管站点 SourceForge Github.com code.google.com 2.C源代码开发工具及开发环境准备 (1)开发工具:make, gcc等 1)make:C/C++等编译的项目管理工具,用来处理源码到二进制码之间的过程 (configure --> Makefile.in --> makefile)执行过程 源代码 --> 预处理 -->

LAMP编译安装之PHP以fpm的方式结合apache工作

前面一个博文介绍了怎么用编译的方式搭建一个LAMP,这里我就不再一一描述了,我这里详细介绍一下PHP以fpm的方式工作: 如果想让编译的PHP支持mcrypt扩展,在这里除了libmcrypt这个包之外还需要安装 mhash-0.9.9.9-3.el6.x86_64 mhash-devel-0.9.9.9-3.el6.x86_64 [[email protected] tmp]# tar xf  php-5.4.40.tar.bz2  [[email protected] tmp]# cd ph

CentOS 6.0 Minimal最小化安装后VMware虚拟机联网详解

最近想搞个mailman邮件列表,又不想在我常用的CentOS 6.4上做实验,怕破坏了环境,于是就想装个试验机,又嫌它占空间太大,于是找了半天发现CentOS 6.0的minimal版本最适合了,装完后发现真的是很小,才600多M,不过因为太精简而导致连网络都没有.下面介绍怎么样配置网络,装完系统后紧接着就能按下面步骤来进行了.(注意这是VMware虚拟机,要是你用物理机的话直接用rp-pppoe拨号就行了,详情请见上一篇博文.) 首先打开虚拟机软件,virtual network edito

LAMP 编译安装

案例(一)LAMP apache.php(为apahce的模块).mysql在同一台主机上编译安装 编译版本:       httpd-2.4.9        mariadb-5.5.36        PHP-5.4.26    一.httpd编译安装和虚拟主机的配置    httpd-2.4编译步骤:        1.安装编译适用于httpd-2.4的apr            # rpm -qa |grep apr-------检查当前主机的apr版本信息            #y

LAMP编译安装之Apache+php+mysql

环境模型: (1)PHP作为apache的模块编译安装. (2)mysql数据库在另一台服务器上安装.版本为MariaDB5.5.33    IP:192.168.1.124 (3)PHP版本5.4.36,http的版本2.4 (4)安装Apache和php的主机IP为192.168.1.123. 一.编译安装apache    1.解决依赖关系     httpd-2.4.9需要较新版本的apr和apr-util,因此需要事先对其进行升级.升级方式有两种,一种是通过源代码编译安装,一种是直接升

CentOS 7系统之 lamp ( module )详解

         安装要求:CentOS 7系统之 lamp ( module ) (1) 三者分离于两台主机: (2) 一个虚拟主机用于提供phpMyAdmin:另一个虚拟主机用于提供wordpress: (3) xcache (4) 为phpMyAdmin提供https虚拟主机:   安装环境:         IP        系统        安装软件     192.168.1.103       CentOS 7 httpd,php ,wordpress,phpMyAdmin  

CentOS 7上源码编译安装和配置LNMP Web+phpMyAdmin服务器环境

什么是LNMP? LNMP(别名LEMP)是指由Linux, Nginx, MySQL/MariaDB, PHP/Perl/Python组合成的动态Web应用程序和服务器,它是一组Web应用程序的基础软件包,在这个基础环境上我们可以搭建任何使用PHP/Perl/Python等语言的动态网站,如商务网站.博客.论坛和开源Web应用程序软件等,它是互联网上被广泛使用的Web网站架构之一. 部署方式 从网站规模大小(访问流量.注册用户等)角度来看,LNMP架构可以使用单机部署方式和集群部署方式.单机部

Linux之LAMP编译安装

一.编译安装httpd2.4版本 1.httpd程序依赖于apr和arp-util 注:arp是apache的可移植运行环境(相当于是http的虚拟机,在Linux和windows都可用) 在编译安装前我们需要安装一下开发包组 yum -y groupinstall "Development Tools" yum -y groupinstall "Server Platform Development" HTTP2.4版本依赖于apr1.4以上的版本,因此我们安装a

马哥学习笔记七——LAMP编译安装之MYSQL

1.准备数据存放的文件系统 新建一个逻辑卷,并将其挂载至特定目录即可.这里不再给出过程. 这里假设其逻辑卷的挂载目录为/mydata,而后需要创建/mydata/data目录做为mysql数据的存放目录. 2.新建用户以安全方式运行进程: # groupadd -r mysql # useradd -g mysql -r -s /sbin/nologin -M -d /mydata/data mysql # chown -R mysql:mysql /mydata/data 3.安装并初始化my