CentOS 6.5 LAMP分主机平台的搭建及测试

CentOS 6.5 LAMP分主机平台的搭建及测试

看似非常之完备,转来抽空测试学习
原文地址:http://www.it165.net/os/html/201403/7595.html
  • 前言

       前面的文章我们谈到过了LAMP的基础原理以及很多的相关知识了、尤其是httpd、这个强大的、牛气轰轰的web服务器想必大们都再熟悉不过了吧、对他的介绍我们也谈了很多了、这里不再做介绍、那接下来我们就是分主机来实现LAMP平台的搭建以及动静页面的测试、话不多说、我们下面来实现吧!

    正文

       准备工作:
       apr-1.5.0.tar.bz2
       apr-util-1.5.2.tar.bz2
       pcre-devel-7.8-6.el6.x86_64 (用yum安装)
       httpd-2.4.9.tar.bz2 (httpd 2.4的版本)
       ==========程序包分三台主机存放、以上是HTTPD的===============


       bzip2-devel、libmcrypt-devel、libxml2-deve (这三个是安装php所需要的开发包、用yum装)
       php-5.4.26.tar.bz2 (php 5.4的版本)
       ============以上是PHP的=======================


       mysql-5.5.33.tar.gz (mysql 5.5.33的版本)
       ============以上是mysql的=======================
       wKioL1M2LUfAeYllAADnh7meSO4488.jpg    


       以上准备了好多的程序包呀、但他们不是都放在一台主机上的、上面我们有说明的哦、这里还要注意的是服务器配置安装的顺序问题,如果是在同一台主机上安装搭建LAMP平台主话,那么就必须把php放到最后去安装,因为php的安装要依赖于httpd和要用到的mysql、而我们这里分别置于不同的主机上实现LAMP平台,因此没有太多的顺序要求,但是,还是建议建议先安装httpd、mysql然后再安装php。
       以下是LAMP的工作过程中使用到的协议以及工作图:
       wKioL1M2LCqi0Cd5AAJbbBNhwWM147.jpg

    补充:

    (1)构建MPM为静态模块
       在全部平台中,MPM都可以构建为静态模块。在构建时选择一种MPM,链接到服务器中。如果要改变MPM,必须重新构建。为了使用指定的MPM,请在执行configure脚本 时,使用参数 --with-mpm=NAME。NAME是指定的MPM名称。编译完成后,可以使用 ./httpd -l 来确定选择的MPM。 此命令会列出编译到服务器程序中的所有模块,包括 MPM。

    (2)构建 MPM 为动态模块

       在Unix或类似平台中,MPM可以构建为动态模块,与其它动态模块一样在运行时加载。 构建 MPM 为动态模块允许通过修改LoadModule指令内容来改变MPM,而不用重新构建服务器程序。在执行configure脚本时,使用--enable-mpms-shared选项即可启用此特性。当给出的参数为all时,所有此平台支持的MPM模块都会被安装。还可以在参数中给出模块列表。默认MPM,可以自动选择或者在执行configure脚本时通过--with-mpm选项来指定,然后出现在生成的服务器配置文件中。编辑LoadModule指令内容可以选择不同的MPM。

    httpd 2.4编译安装过程

       1、解决依赖关系
       prel兼容的正则表达式库
       # yum -y install pcre-devel
       # yum -y groupinstall "Server Platform Development"
       # yum -y groupinstall "Development tools"

       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
       # tar xf httpd-2.4.9.tar.bz2
       # cd httpd-2.4.9
       # ./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
       # make && make install

     

    --prefix=/usr/local/apache指定安装路径、不使用默认路径
    --sysconfdir=/etc/httpd24指定配置文件的路径、24表示版本、为了不跟我本机上的2.2的重复
    --enable-so表示基于DSO动态加载模块的
    --enable-ssl这项是支持https协议的
    --enable-cgi支持CGI机制的
    --enable-rewrite支持URL重写的
    --with-zlibzlib是一个网络上发送数据报文时的一个通用压缩库的API
    --with-pcre通常支持Perl所用到的一个库
    --with-apr=/usr/local/apr指定新的apr的路径
    --with-apr-util=/usr/local/apr-util/指定新的apr-util的路径
    --enable-modules=mostmost表示启用大多数常用的模块
    --enable-mpms-shared=all所有的MPM模块都编译
    --with-mpm=event明确指定启用event模块


    后续的配置:
       1) 导出头文件
       # ln -sv /usr/local/apache/include  /usr/include/httpd
       2) 导出库文件
           没生成就不用导出了
       3) 导出man手册
           # vim /etc/man.config
           MANPATH /usr/local/apache/man
       4) 输出二进制程序
           # vim /etc/profile.d/httpd.sh
           export PATH=/usr/local/apache/bin:$PATH

    为httpd2.4提供服务脚本    
       我们可以每次开机后都手动去启动httpd服务,这个很明显不符合我们的正常需求,因此我们需要给httpd2.4提供服务脚本,并且加到系统自动启动服务中、我们可以自己手工编写脚本,也可以使用httpd2.2(系统自自带的httpd服务)的服务脚本,稍加修改,就可以为httd24服务了。

       这里我借用了httd2.2的服务脚本,进行简单修改。为了区别原有的服务脚本httpd,这里复制httpd为httpd24
       注意:服务脚本存放在/etc/init.d目录下,必须要可执行权限
       # cp /etc/init.d/httpd /etc/init.d/httpd24
       # vim /etc/init.d/httpd24

       httpd24的安装路径为/usr/local/apache,且没有sbin,只有bin因此修改下面的路径为当前路径
       apachectl=/usr/local/apache/bin/apachectl
       httpd=${HTTPD-/usr/local/apache/bin/httpd}

       wKioL1M2LYOjjMoLAADl92-Rh_s512.jpg
       添加至系统服务、并开机自动启动
       # chkconfig --add httpd24
       # chkconfig  httpd24 on

       修改配置文件、主要是添加一条PidFile的文件路径。这里系统读取PidFile的顺序是配置文件、服务脚本,如果配置文件没有,再去找服务脚本。
       # vim /etc/httpd24/httpd.conf    
       PidFile "/var/run/httpd/httpd.pid"

       wKiom1M2LeHSzQgDAABvO-g9Nvs341.jpg


       OK、启动服务看有没有80端口处于监听状态:    wKioL1M2Ld3z_jYjAAEuneWuzGA870.jpg

     

    mysql 5.5编译安装过程

       1、准备数据存放的文件系统、这里我们新建一个分区来专门存放数据文件、新建一个逻辑卷,并将其挂载至/data、这个应该很熟悉了、这里不做过多的解释、什么可以留言交流。
       

    01.############这些不做过多的解析、一看就明白了################
    02.# mkdir /data
    03.# fdisk /dev/sda
    04.n p 3  +20G t  3 8e w
    05.# pvcreate /dev/sda3
    06.# vgcreate myvg /dev/sda3
    07.# lvcreate -L 10G -n mydata myvg
    08.# mke2fs -t ext4 /dev/myvg/mydata
    09.# vim /etc/fstab
    10./dev/myvg/mydata    /data    ext4    defaults,noatime 0 0
    11.# monut -a
    12.# cd /data/
    13.# mkdir mydata


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

    1.# groupadd -r mysql
    2.# useradd -g mysql -r -s /sbin/nologin -M -d /mydata/data mysql
    3.# chown -R mysql:mysql /mydata/data


       3、安装并初始化mysql-5.5.33    

    1.# tar xf mysql-5.5.33-linux2.6-i686.tar.gz -C /usr/local
    2.# cd /usr/local/
    3.# ln -sv mysql-5.5.33-linux2.6-i686  mysql
    4.# cd mysql
    5.# chown -R mysql:mysql  .
    6.# scripts/mysql_install_db --user=mysql --datadir=/mydata/data
    7.# chown -R root  .

       

       4、为mysql提供主配置文件:    

    1.# cd /usr/local/mysql
    2.# cp support-files/my-large.cnf  /etc/my.cnf


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

       另外还需要添加如下行指定mysql数据文件的存放位置:
       datadir = /mydata/data

       5、为mysql提供sysv服务脚本:    

    1.# cd /usr/local/mysql
    2.# cp support-files/mysql.server  /etc/rc.d/init.d/mysqld
    3.# chmod +x /etc/rc.d/init.d/mysqld


       添加至服务列表、而后就可以启动服务测试使用了:    

    1.# chkconfig --add mysqld
    2.# chkconfig mysqld on 
    3.# service mysqld start


       为了使用mysql的安装符合系统使用规范,并将其开发组件导出给系统使用,这里还需要进行如下步骤:
       6、输出mysql的man手册至man命令的查找路径、编辑/etc/man.config,添加如下行即可:
       MANPATH  /usr/local/mysql/man

       7、输出mysql的头文件至系统头文件路径/usr/include:
       这可以通过简单的创建链接实现:
       # ln -sv /usr/local/mysql/include  /usr/include/mysql

       8、输出mysql的库文件给系统库查找路径:
       # echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf

       而后让系统重新载入系统库:
       # ldconfig

       9、修改PATH环境变量,让系统可以直接使用mysql的相关命令:
       # vim /etc/profile.d/mysql.sh
       export PATH=/usr/local/mysql/bin:$PATH

       启动服务、查看监听的端口、3306:    wKiom1M2L2yhMCHhAAHkNCaBCDk881.jpg
    wKioL1M2L23iMQCBAAIz137hw7M873.jpg
       

    php 5.4编译安装过程

       1、解决依赖关系、请配置好yum源(可以是本地系统光盘)后执行如下命令:
       # yum -y groupinstall "Desktop Platform Development"
       # yum -y install bzip2-devel libmcrypt-devel

       2、编译安装php-5.4.26
       # tar xf php-5.4.26.tar.bz2
       # cd php-5.4.26
       # ./configure --prefix=/usr/local/php --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

     

    --prefix=/usr/local/php指定安装路径
    --with-mysql=mysqlnd
    --with-pdo-mysql=mysqlnd
    --with-mysqli=mysqlnd
    数据库与php不在一个服务器上,指定此种方式,安装数据库连接驱动
    --enable-mbstring多字节字串、像我们的中文就是多字节字串
    --with-freetype-dir支持freetype、就要装freetype-devel、跟字体相关的、字体解析工具

    --with-jpeg-dir

    --with-png-dir

    处理jpeg、png图片的、php可以动态生成jpeg图片
    --with-zlib是个压缩库、在互联网传输时用来压缩传输的
    --with-libxml-dir=/usr这个libxml是用来解析xml的、指定/usr下
    --enable-xml支持xml的
    --enable-sockets支持基于sockets通信的
    --enable-fpm使用fpm服务
    --with-mcryptlibmcrypt-devel这个程序包所指定的
    --with-config-file-path=/etc指定配置文件的存放路径的
    --with-config-file-scan-dir=/etc/php.d去扫描指定目录下以.d结束的文件
    --with-bz2支持bz2压缩格式

       wKiom1M2LLWwZXmCAAL3jyd6JBM346.jpg


    说明:
       1、这里为了支持apache的worker或event这两个MPM,编译时使用了--enable-maintainer-zts选项。
       2、如果使用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
       # make intall

       为php提供配置文件:
       # cp php.ini-production /etc/php.ini

     

    配置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

       wKioL1M2L-XjCPltAAGXKwTniHw155.jpg    

       为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加在[global]这个区域内
       pid = /usr/local/php/var/run/php-fpm.pid

       再把配置文件中所监听的IP改为本主机的IP
       listen = 172.16.251.134:9000

       wKiom1M2MEWCLuxjAAEM15wPdDk277.jpg

     

       接下来就可以启动php-fpm了:
       # service php-fpm start

       使用如下命令来验正(如果此命令输出有中几个php-fpm进程就说明启动成功了):
       # ss -tnl | grep 9000
       # ps aux | grep php-fpm    wKioL1M2MF6g0N36AAJhqxmMi6o569.jpg

     

    编辑apache配置文件httpd.conf,以apache支持php

        # vim /etc/httpd24/httpd.conf
        1、添加如下二行
          AddType application/x-httpd-php  .php
          AddType application/x-httpd-php-source  .phps
          加载中...QTBucUFBRENqWlc3dG5zMjE0LmpwZw==" src="http://www.it165.net/uploadfile/files/2014/0329/20140329205423465.jpg" title="14.png" />

     

        2、定位至DirectoryIndex index.html 修改为:
           DirectoryIndex  index.php  index.html

           wKiom1M2MhTwYEu-AABTa9v4LfA760.jpg

     

        3、启用httpd的相关模块
           在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    

       wKiom1M2MMzhl9pqAADdPYOYigM868.jpg

     

       4、关闭正向代理

       ProxyRequests Off:关闭正向代理
       ProxyPassMatch:把以.php结尾的文件请求发送到php-fpm进程,php-fpm至少需要知道运行的目录和URI,所以这里直接在fcgi://xxx.x.x.x:9000后指明了这两个参数,其它的参数的传递已经被mod_proxy_fcgi.so进行了封装,不需要手动指定。

       加载中...QTdsZ2lVMDMyLmpwZw==" src="http://www.it165.net/uploadfile/files/2014/0329/20140329205423468.jpg" title="15.png" />

       

       而后重新启动httpd,或让其重新载入配置文件即可测试php是否已经可以正常使用。

     

    最后在php的指定的fcgi的路径上提供一个php的测试页面:    

    01.# vim /usr/local/apache/htdocs/index.php  
    02.<?php
    03.$link = mysql_connect('172.16.251.171','wei','wei');
    04.if ($link)
    05.echo "Connection Success....."
    06.else
    07.echo "Connection Failrue....."
    08.mysql_close();
    09.phpinfo();
    10.?>

     

       wKiom1M2MqCBKsxmAAEoSuq45M8575.jpg

     

    为了说明问题、我们还要在httpd服务器上提供一个静态的html页面:

       # vim /usr/local/apache/htdocs/test.html

       <h4>tanxw.blog.51cto.com</h4>

       wKiom1M2MsSQETzjAABQMfOEbTM387.jpg

     

    然后再测试一下看看效果:    wKioL1M2MtPwy1IPAAIwjphzAII766.jpg

    wKioL1M2Mvez903XAADIxOZqpT0626.jpg

     

    结束:

       OK、做到这里算是分主机LAMP平台搭建算是有个大概了吧、页面访问应该说没有什么问题了、都正常可以访问、东西好像有点多、不过都是前前的知识了、安装程序包比较多点而了、最后、如果各位大神发现有什么不妥或做得不好的可以留言哦、欢迎交流学习、在此谢谢您的关注!

posted @ 2014-05-01 21:51  太阳神LoveU  阅读(2)  评论(0编辑  收藏  举报  来源