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

[经验分享] LAMP编译安装(一)——安装Apache2.4

[复制链接]

尚未签到

发表于 2018-11-19 09:35:43 | 显示全部楼层 |阅读模式
  背景介绍
  LAMP是LNMP结构提出之前风靡了很久的结构,本系列就从无到有一点点介绍LAMP的编译安装。首先,介绍下本系列的拓扑结构图 DSC0000.png
  此时服务器响应客户端访问可以分为几种应答方式: DSC0001.png
  1.客户端向服务器端发起请求
  2.服务器端查看请求类型,当为静态页面请求,直接返回结果
  

DSC0002.png

  1.客户端向服务器端发起请求
  2.服务器端查看请求类型,当为动态页面请求,通过配置文件中设置的反向代理,通过fcgi协议交给后端PHP服务器
  3.PHP服务器上启用php-fpm服务,监听在一个套接字上想用请求,并将结果反馈给httpd服务器
  4.httpd服务器在通过其rewirte技术,将结果以伪静态页面的形式反馈给客户端
  

DSC0003.png

  1.客户端向服务器端发起请求
  2.服务器端查看请求类型,当为动态页面请求,交给后端PHP服务器
  3.如果客户的请求中需要访问数据库,PHP服务器会将请求转交给Mysql服务器,这里需要注意的是:PHP服务器本身不会请求Mysql,只是替用户转交请求,所以PHP在编译安装时需要启用 --with-mysql=mysqlnd  --with-pdo-mysql=mysqlnd
  --with-mysqli=mysqlnd这3个选项,此时的mysqlnd类似于一个驱动,可以使PHP连接到Mysaql服务器,如果PHP与Mysql服务器为同一台主机,以--with-mysql选项为例,此时需要指明Mysql的安装路径 --with-mysql=/path/to/mysql
  4.Mysql服务器将数据处理结果反馈给PHP服务器
  5.PHP服务器在将结果反馈给httpd服务器
  6.httpd服务器在通过其rewirte技术,将结果以伪静态页面的形式反馈给客户端
  Apche2.4介绍
  CentOS6系列默认使用的Apache2.2版本,之后发布的Apache2.4版本在功能上比之前有了进一步的增强,主要表现为:
  1.MPM支持在运行时装载
  2.支持event
  3.异步读写
  4.在每模块及每目录上指定日志级别
  5.每请求配置:
  6.增强版的表达式分析器
  7.毫秒级的keepalive timeout
  8.支持主机名的虚拟主机不在需要NameVirtualHost指令
  9.支持使用自定义变量
  10.新增一些模块:mod_proxy_fcgi,mod_ratelimit,mod_request,mod_remoteip
  11.对于基于IP的访问做了修改,不在使用order,allow,deny这些机制;而是统一使用require进行,如require granted和require denied
  实验说明
  操作系统:CentOS6.8
  源码包:httpd-2.4.23.tar.bz2,apr-1.5.2.tar.bz2,apr-util-1.5.4.tar.bz2
  准备工作:安装pcre-devel包,Apache2.4编译时需要用到
  实验目的
  1.编译安装Apache2.4
  2.测试MPM模块动态切换
  3.测试虚拟主机实现
  4.将编译后的服务加入Service控制
  实验步骤
  一、编译安装
  1.安装先决条件并解压源码包
  yum -y install pcre-devel#安装pcre-devel包
  for i in apr-1.5.2.tar.bz2 apr-util-1.5.4.tar.bz2 httpd-2.4.23.tar.bz2;do tar -xf $i -C /usr/local/src/;done
  #将apr-1.5.2.tar.bz2 apr-util-1.5.4.tar.bz2 httpd-2.4.23.tar.bz2压缩包解压到/usr/local/src目录下
  2.安装apr-1.5.2
  cd /usr/local/src/apr-1.5.2#进入apr-1.5.2目录
  ./configure --prefix=/usr/local/apr-1.5.2#检查编译环境
  make && make install#编译安装
  3.安装apr-util-1.5.4
  cd /usr/local/src/apr-util-1.5.4#进入apr-1.5.2目录
  ./configure --prefix=/usr/local/apr-util-1.5.4 --with-apr=/usr/local/apr-1.5.2#检查编译环境
  make && make install#编译安装
  4.安装Apache2.4
  cd /usr/local/src/httpd-2.4.23#进入httpd-2.4.23目录
  ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd --enable-so --enable--ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr-1.5.2 --with-apr-util=/usr/local/apr-util-1.5.4 --enable-modeles=most --enable-mpms-shared=all --with-mpm=event#检查编译环境
  make && make install#编译安装
  5.路径输出
  echo "export PATH=/usr/local/apache/bin:$PATH" > /etc/profile.d/apache.sh
  source /etc/profile.d/apache.sh
  6.头文件输出
  ln -sv /usr/local/apache/include/ /usr/include/apache
  7.库文件输出
  apche2.4编译安装后在/usr/local/apache/目录下没有lib目录,此步骤跳过,有则使用echo "/usr/local/apache/lib > /etc/ld.so.conf.d/apche.conf"进行库文件输出,再使用ldconfig -v查看
  8.MAN文档输出
  vim /etc/man.config
   DSC0004.png
  9.启动并检查Apche
  /usr/local/apache/bin/apachectl start#启动服务
  netstat -ntl#查看80端口是否正常侦听
DSC0005.png

  二、动态切换MPM模块
  Apache2.4的mpm采用模块方式实现,支持DSO动态装卸载,编译时设置的是event模型,从主配置文件/etc/httpd/httpd.conf中可以看到当前启用的mpm模块,切换mpm模型就是启用相应模型的模块,更改前间隙先停止服务 DSC0006.png
  注意:/etc/httpd/extra/httpd-mpm.conf配置文件是修改mpm模型参数的,如果只修改这个文件会发现不会生效,原因就是在主配置文件下该配置文件默认是注销掉的,激活后才会生效
DSC0007.png

  三、测试虚拟主机
  1.Apche2.4不再有虚拟主机开关选项,主配置文件中注销中心主机 DSC0008.png
  2.类似mpm模块一样,需要在主配置文件中启用虚拟主机配置文件。如果虚拟主机配置文件存放在httpd.conf的主配置文件中,则不需要启用虚拟主机配置文件。建议将虚拟主机的配置文件和主配置文件分开。经测试,如果中心主机与虚拟主机都存放于httpd.conf主配置文件中并同时启用,虚拟主机生效 DSC0009.png
  3.vim /etc/httpd/extra/httpd-vhosts.conf 编辑虚拟主机配置文件 DSC00010.png
  4.为www.vhost.com创建主页面
  mkdir -p /var/www/vhost
  echo "www.vhost.com" > /var/www/vhost/index.html DSC00011.png
  此时会发现访问被拒绝,原因是Apche2.4开始每个网站都需要配置目录权限,添加后就可以正常访问了 DSC00012.png
  Apche2.4不再使用以前的Oeder Allow Deny机制,访基于IP访问控制由Require来进行:
  允许所有主机访问:Require all granted
  拒绝所有主机访问:Require all denied
  控制某主机的访问,可以是单个IP地址,也可以是网段:
  Require ip IPADDR
  Require not ip IPADDR
  使用主机名控制,可以是FQDN,也可以是整个域:
  Require host $HOSTNAME
  Require not host $HOSTNAME
  四、添加启动脚本
  服务脚本可以参考CentOS6.8自带的httpd2.2的脚本,将其复制到/etc/rc.d/init.d目录下,保证有执行权限,并做如下修改,主要是路径修改 DSC00013.png
DSC00014.png 之后再到主配置文件中增加一行pidfile的位置指向

然后使用chkconfig --add httpd,chkconfig httpd on后,就可以使用service控制了,至此操作完成

  试验中发现一个不理解的现象:按照理解,httpd服务运行时应该先读主配置文件httpd,然后再读脚本文件,但主配置文件中指定LockFile文件位置后,通过httpd -t检查语法会报错,不添加启动后会遵循脚本中的设置使用/var/lock/subsys/httpd;如果主配置文件中不添加PidFile文件,使用Service可以正常启动httpd服务,但是不会读取脚本文件,即不会生成/var/run/httpd.pid文件,启动后无法使用service httpd stop关闭,提示没有pid文件
  

  

  





运维网声明 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-636851-1-1.html 上篇帖子: Apache的安装和配置 下篇帖子: Linux下Apache部署
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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