总结之:CentOS 6.5 LAMP分主机平台的搭建及测试

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS MySQL,高可用系列 2核4GB
简介:

前言

   前面的文章我们谈到过了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-linux2.6-x86.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-zlib zlib是一个网络上发送数据报文时的一个通用压缩库的API
--with-pcre 通常支持Perl所用到的一个库
--with-apr=/usr/local/apr 指定新的apr的路径
--with-apr-util=/usr/local/apr-util/ 指定新的apr-util的路径
--enable-modules=most most表示启用大多数常用的模块
--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、这个应该很熟悉了、这里不做过多的解释、什么可以留言交流。

1
2
3
4
5
6
7
8
9
10
11
12
13
############这些不做过多的解析、一看就明白了################
# mkdir /data
# fdisk /dev/sda
n p 3  +20G t  3 8e w
# pvcreate /dev/sda3
# vgcreate myvg /dev/sda3
# lvcreate -L 10G -n mydata myvg
# mke2fs -t ext4 /dev/myvg/mydata
# vim /etc/fstab
/dev/myvg/mydata     /data     ext4    defaults,noatime 0 0
# monut -a
# cd /data/
# mkdir mydata


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

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


   3、安装并初始化mysql-5.5.33    

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


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

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


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

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

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

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


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

1
2
3
# chkconfig --add mysqld
# chkconfig mysqld on
# 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-mcrypt libmcrypt-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
wKioL1M2MPiQA0nqAADCjZW7tns214.jpg


    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进行了封装,不需要手动指定。

wKiom1M2MeuR-18wAAF1bA7lgiU032.jpg


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


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

1
2
3
4
5
6
7
8
9
10
# vim /usr/local/apache/htdocs/index.php 
<?php
       $link  = mysql_connect( '172.16.251.171' , 'wei' , 'wei' );
       if  ( $link )
           echo  "Connection Success....."
       else
           echo  "Connection Failrue....."
       mysql_close();
       phpinfo();
?>


wKiom1M2MqCBKsxmAAEoSuq45M8575.jpg


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

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

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

wKiom1M2MsSQETzjAABQMfOEbTM387.jpg


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

wKioL1M2Mvez903XAADIxOZqpT0626.jpg


结束:

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










本文转自 wei0164 51CTO博客,原文链接:http://blog.51cto.com/tanxw/1386381,如需转载请自行联系原作者
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
2月前
|
关系型数据库 MySQL 测试技术
【分享】AgileTC测试用例管理平台使用分享
AgileTC 是一个脑图样式测试用例管理平台,支持用例设计、执行与团队协作,帮助测试人员高效管理测试流程。
201 116
【分享】AgileTC测试用例管理平台使用分享
|
2月前
|
人工智能 数据可视化 测试技术
AI测试平台自动遍历:低代码也能玩转全链路测试
AI测试平台的自动遍历功能,通过低代码配置实现Web和App的自动化测试。用户只需提供入口链接或安装包及简单配置,即可自动完成页面结构识别、操作验证,并生成可视化报告,大幅提升测试效率,特别适用于高频迭代项目。
|
2月前
|
人工智能 测试技术 调度
写用例写到怀疑人生?AI 智能测试平台帮你一键生成!
霍格沃兹测试开发学社推出AI智能测试用例生成功能,结合需求文档一键生成高质量测试用例,大幅提升效率,减少重复劳动。支持自定义提示词、多文档分析与批量管理,助力测试人员高效完成测试设计,释放更多时间投入核心分析工作。平台已开放内测,欢迎体验!
|
2月前
|
人工智能 测试技术 项目管理
测试不再碎片化:AI智能体平台「项目资料套件」功能上线!
在实际项目中,需求文档分散、整理费时、测试遗漏等问题常困扰测试工作。霍格沃兹推出AI智能体测试平台全新功能——项目资料套件,可将多个关联文档打包管理,并一键生成测试用例,提升测试完整性与效率。支持套件创建、文档关联、编辑删除及用例生成,适用于复杂项目、版本迭代等场景,助力实现智能化测试协作,让测试更高效、更专业。
|
3月前
|
存储 人工智能 算法
AI测试平台实战:深入解析自动化评分和多模型对比评测
在AI技术迅猛发展的今天,测试工程师面临着如何高效评估大模型性能的全新挑战。本文将深入探讨AI测试平台中自动化评分与多模型对比评测的关键技术与实践方法,为测试工程师提供可落地的解决方案。
|
2月前
|
人工智能 自然语言处理 测试技术
AI测试平台的用例管理实践:写得清晰,管得高效,执行更智能
在测试过程中,用例分散、步骤模糊、回归测试效率低等问题常困扰团队。霍格沃兹测试开发学社推出的AI测试平台,打通“用例编写—集中管理—智能执行”全流程,提升测试效率与覆盖率。平台支持标准化用例编写、统一管理操作及智能执行,助力测试团队高效协作,释放更多精力优化测试策略。目前平台已开放内测,欢迎试用体验!
|
3月前
|
存储 人工智能 文字识别
从零开始打造AI测试平台:文档解析与知识库构建详解
AI时代构建高效测试平台面临新挑战。本文聚焦AI问答系统知识库建设,重点解析文档解析关键环节,为测试工程师提供实用技术指导和测试方法论
|
10月前
|
数据可视化 前端开发 测试技术
接口测试新选择:Postman替代方案全解析
在软件开发中,接口测试工具至关重要。Postman长期占据主导地位,但随着国产工具的崛起,越来越多开发者转向更适合中国市场的替代方案——Apifox。它不仅支持中英文切换、完全免费不限人数,还具备强大的可视化操作、自动生成文档和API调试功能,极大简化了开发流程。
|
5月前
|
Java 测试技术 容器
Jmeter工具使用:HTTP接口性能测试实战
希望这篇文章能够帮助你初步理解如何使用JMeter进行HTTP接口性能测试,有兴趣的话,你可以研究更多关于JMeter的内容。记住,只有理解并掌握了这些工具,你才能充分利用它们发挥其应有的价值。+
876 23
|
7月前
|
SQL 安全 测试技术
2025接口测试全攻略:高并发、安全防护与六大工具实战指南
本文探讨高并发稳定性验证、安全防护实战及六大工具(Postman、RunnerGo、Apipost、JMeter、SoapUI、Fiddler)选型指南,助力构建未来接口测试体系。接口测试旨在验证数据传输、参数合法性、错误处理能力及性能安全性,其重要性体现在早期发现问题、保障系统稳定和支撑持续集成。常用方法包括功能、性能、安全性及兼容性测试,典型场景涵盖前后端分离开发、第三方服务集成与数据一致性检查。选择合适的工具需综合考虑需求与团队协作等因素。
923 24