LAMP编译安装(一)——安装Apache2.4
背景介绍
LAMP是LNMP结构提出之前风靡了很久的结构,本系列就从无到有一点点介绍LAMP的编译安装。首先,介绍下本系列的拓扑结构图
此时服务器响应客户端访问可以分为几种应答方式:
1.客户端向服务器端发起请求
2.服务器端查看请求类型,当为静态页面请求,直接返回结果
1.客户端向服务器端发起请求
2.服务器端查看请求类型,当为动态页面请求,通过配置文件中设置的反向代理,通过fcgi协议交给后端PHP服务器
3.PHP服务器上启用php-fpm服务,监听在一个套接字上想用请求,并将结果反馈给httpd服务器
4.httpd服务器在通过其rewirte技术,将结果以伪静态页面的形式反馈给客户端
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.每请求配置:<If> <Elseif>
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
9.启动并检查Apche
/usr/local/apache/bin/apachectl start #启动服务
netstat -ntl #查看80端口是否正常侦听
二、动态切换MPM模块
Apache2.4的mpm采用模块方式实现,支持DSO动态装卸载,编译时设置的是event模型,从主配置文件/etc/httpd/httpd.conf中可以看到当前启用的mpm模块,切换mpm模型就是启用相应模型的模块,更改前间隙先停止服务
注意:/etc/httpd/extra/httpd-mpm.conf配置文件是修改mpm模型参数的,如果只修改这个文件会发现不会生效,原因就是在主配置文件下该配置文件默认是注销掉的,激活后才会生效
三、测试虚拟主机
1.Apche2.4不再有虚拟主机开关选项,主配置文件中注销中心主机
2.类似mpm模块一样,需要在主配置文件中启用虚拟主机配置文件。如果虚拟主机配置文件存放在httpd.conf的主配置文件中,则不需要启用虚拟主机配置文件。建议将虚拟主机的配置文件和主配置文件分开。经测试,如果中心主机与虚拟主机都存放于httpd.conf主配置文件中并同时启用,虚拟主机生效。
3.vim /etc/httpd/extra/httpd-vhosts.conf 编辑虚拟主机配置文件
4.为www.vhost.com创建主页面
mkdir -p /var/www/vhost
echo "www.vhost.com" > /var/www/vhost/index.html
此时会发现访问被拒绝,原因是Apche2.4开始每个网站都需要配置目录权限,添加后就可以正常访问了
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目录下,保证有执行权限,并做如下修改,主要是路径修改
之后再到主配置文件中增加一行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文件
本文转自 qiao645 51CTO博客,原文链接:http://blog.51cto.com/arkling/1866548
LAMP编译安装(一)——安装Apache2.4相关推荐
- redis ubuntu php 5.2,ubuntu 14.04下简易安装php5.5 + apache2 + redis + mysql
我是在Windows 10下安装的vagrant环境. 1.首先官网:https://www.vagrantup.com/ 下载最新版的vagrant,安装:安装虚拟机VirtualBox:https ...
- mysql2.1.4安装_安装Apache2.2.4+Mysql5.0.27+php5.2.1详细安装说明
安装Apache2.2.4+Mysql5.0.27+php5.2.1详细安装说明 安装系统: 红帽子企业服务器Redhat Linux5(不安装任何服务) 也可以安装完整版,然后将Apache,mys ...
- Ubuntu的LAMP与相关软件安装设置
LAMP即Linux+Apache+Mysql/MariaDB+Perl/PHP/Python一组常用来搭建动态网站或者服务器的开源软件. 这里的LAMP指Linux+Apache+Mysql/Mar ...
- LAMP:用yum安装
LAMP:用yum安装 Table of Contents 1 什么是LAMP 1.1 L 1.2 A 1.3 M 1.4 P 2 什么是yum 3 如何使用yum 3.1 基本的yum命令 3.1. ...
- 【Linux 内核】编译 Linux 内核 ⑥ ( 安装 OpenSSL | 安装其它依赖库 | 内核编译完成 )
文章目录 一.安装 OpenSSL 二.安装其它依赖库 三.Linux 内核编译完成 一.安装 OpenSSL 参考 [错误记录]编译 Linux 内核报错 ( fatal error: openss ...
- Ubuntu下安装和配置Apache2方法简介
本篇文章主要介绍了详解Ubuntu下安装和配置Apache2,小编觉得挺不错的,现在就分享给大家,也给大家做个参考.有兴趣的朋友可以了解一下. 在Ubuntu中安装apache 安装指令: sudo ...
- Ubuntu 安装和修改Apache2端口
Ubuntu 安装和修改Apache2端口 [日期:2013-05-15] 来源:Linux社区 作者:sheismylife [字体:大 中 小] Linux系统:Ubuntu 13.04 因为本 ...
- linux下grpc安装编译,linux下安装grpc插件 (c++和go语言)
在debian/ubuntu系统下,需要做如下准备操作: $ [sudo] apt-getinstallbuild-essential autoconf libtoolpkg-config 如果你想要 ...
- ubuntu apache2 mysql_折腾 Ubuntu 系统续之安装PHP、Apache2和Mysql
一个狗血的开始 接上回的折腾,话说昨天晚上狗屎运来临,在重装了一次的 Ubuntu 系统上,居然顺利的安装了 QQ.PHP7.Apache2.phpMyAdmin.chrome stable.Subl ...
最新文章
- java socket安全策略文件
- Kali Linux又增加一个顶级域名kali.download
- 贪便宜买了减价香蕉之后
- C#基于Socket的CS模式的完整例子
- mysql mvcc 隔离级别_隔离级别和MVCC
- 宁波Uber优步司机奖励政策(12月14日到12月20日)
- 301. Remove Invalid Parentheses
- 3-2:常见任务和主要工具之存储介质
- keep-alive使用笔记
- 误差反向传播法(二)【神经网络以层的方式实现】
- python某公司为员工发放奖品_python实现年会抽奖程序
- 数据中心高速需求 推动光通信迈向100Gbps
- 史上最详细的Studio教程二来啦
- 刘意-Java基础视频(基础部分)笔记(一)
- 什么是MXF文件?将MXF转为MP4格式的方法
- 雷达信号处理基础ppt
- 本周测试服务器角色转移系统仅开放转入,梦幻西游3月11日更新一览
- C语言使用结构体给另一个同类型结构体赋值
- 【cocos2d-x 大型ARPG手游研发----地图活起来了】
- vue 页面导出excel表格,提示excel文件损坏