LAMP—Apache编译安装

一、前言:

  httpd-2.2与 httpd-2.4版本相比增加了许多新特性:

   1、MPM支持运行时装载

   2、支持event

   3、支持异步读写

   4、支持每模块每目录使用不同的日志级别

   5、每请求配置<IF>

   6、增强版的表达式分析器

   7、支持毫秒级的keeplive timeout

   8、基于主机名的虚拟主机不在需要NameVirtaulHost

   9、支持用户自定义变量

  10、新增一些模块:mod_proxy,fcgi,mod_ratelimit,mod_request,mode_remoteip

  11、修改了一些配置机制,不在使用order,allow,deny来实现基于ip的访问控制

一次web请求响应的交换过程:web1.png

 

 1、建立连接:接收客户端连接请求

 2、接收请求:从来自于网络的请求报文中读取一次特定的资源请求

 3、处理请求:对请求报文进行解析,获取请求的资源等信息;根据请求报文的首部来判断用户请求的资料

 4、访问资源:获取报文指定请求的资源,web服务器及web资源服务器,负责发送预先创建好的或动态生成的内容,这些的存放位置是docroot

 5、构建相应报文:

 6、发送相应报文:有长连接和短连接模式

 7、记录日志

并发响应模型:

  单进程web服务器:启动一个进程接收请求,而且一次只能处理一个请求,当当前请求处理结束后再接收并处理后续的请求;

  多进程web服务器:进程尺(线程池);启动多个进程,每个进程处理一个请求,预生成模式,事先生成过个进程(线程池);

 复用的I/0的web服务器:一个进程响应多个请求,基于事件驱动

 复用的I/0多线程web服务器:一个进程响应n个请求,启动m个进程:

Apache的工作模式:

  prefork:多进程模型,每个进程响应一个请求;稳定性好,但并发能力有限;预先生成多个空闲进程;(selec()调用,最大1024个)

  worker:多进程模型,每个进程可生成多个线程,每个线程响应一个请求,预先生成多个空闲线程

  event:一个进程直接响应n个请求,可同时启动多个进程,(httpd-2.2中测试使用,httpd-2.4可生产使用)

二、Apache编译安装过程

安装编译环境:Development Toos 和 Server Platform Development

  1、编译安装apr

   解压

  # tar xf apr-1.5.2.tar.gz -C /usr/src

  # cd /usr/src/apr-1.5.2/

   执行安装目录

  # ./configure –prefix=/usr/local/lamp/apr

   编译安装

  # make && make install 

 2、编译安装呢apr-util

   解压

  # tar  xf apr-util-1.5.4.tar.gz -C /usr/src/

  # cd /usr/src/apr-util-1.5.4/

   指定安装路径,指明apr安装路径

  # ./configure –prefix=/usr/local/lamp/apr-util  –with-apr=/usr/local/lamp/apr/

   编译安装

  # make && make install

 3、编译安装httpd

 (1)解压

  # tar xf httpd-2.4.12.tar.bz2  -C /usr/src

  # cd /usr/src/httpd-2.4.12/

 (2)配置编译选项(可使用./configure –help查看所需要的选项)

  # ./configure –prefix=/usr/local/lamp/apache  –enable-so –enable-ssl –sysconfdir=/etc/apache/ –enable-modules=most  –enable-mods-shared=all  –enable-expires  –enable-remoteip  –enable-proxy  –enable-mpms-shared=all  –enable-cgi   –enable-rewrite  –with-pcre –with-libxml2  –with-mpm=worker  –with-apr=/usr/local/lamp/apr –with-apr-util=/usr/local/lamp/apr-util/ 

  选项解释:

    –prefix:指定安装路径

    –enable-so:启用动模块的动态装卸载功能,及启用DSO

    –eanble-ssl:启用ssl加密模块

    –sysconfdir:指定配置文件路径

    –enable-moudles: 启用那些模块

    –enable-mods-shared: 启动那些共享模块

    –enable-expires: 启用exprires标题控制

    –enable-remoteip:作用将http头部中的客户端ip修改为代理服务器或者负载均衡服务器的ip

    –with-pcre: 兼容性正则表达式模块

    –enable-proxy:启用代理模块

    –enable-mpms-sahred:启用那些动态装卸载模块

    –enable-cgi:启动cgi模块

    –enable-rewrite:启动重写模块

    –enable-libxml2:启用xml解释器模块

    –with-mpm:设定默认工作模式

    –with-apr:指明arp位置

    –with-apr-util: 指明arp-util的安装位置

 (3)编译安装

  # make && make install 

 (4)提取httpd的二进制文件,在/etc/profile.d/目录中创建http.sh,添加内容如下:

   8.png

    

 (5)重新读取配置文件   7.png

 (6)验证头文件信息

   10.png

   

 4、启动httpd服务,有两种方法:

  第一种方法:使用编译安装时,httpd自带的启动服务脚本启动

  (1)确认编译安装完成后自带服务启动脚本

14.png

  (2)使用此脚本启动服务:

    15.png

  

  (3)查看启动是否成功,如果没有成功,查看日志,分析原因   3.png

 (4)根据错误提示,编辑httpd的配置文件,检查错误日志提到的模块信息

   4.png

 (5)在此运行脚本,启动httpd服务

16.png

 (6)使用浏览器测试是否可以正常访问

   17.png

  第二种方法:如果已安装了rpm格式的httpd,可以修改httpd服务,让其可以控制编译安装的httpd

  (1)确认系统已经安装rpm格式的httpd

     2.png

  (2) 修改rpm格式的httpd启动脚本,修改内容如下

    11.png

   (3)启动httpd服务

     12.png13.png

   (4)使用浏览器测试访问

      17.png  

  

  三、虚拟主机配置

    编辑/etc/apache/httpd.conf文件,注释掉主服务器的文档目录,启动虚拟主机的配置文件目录,监听在多个端口

     24.png

     21.png  

     22.png      

   1、配置虚拟主机

    (1)基于端口的虚拟主机

     ①编辑/etc/apache/extra/httpd-vhosts.conf,添加虚拟主机

     23.png

      

    ②创建/var/www/{a.com,b.com},并在其目录下创建index.html默认文件

      26.png

   

    ③重新启动httpd服务  25.png

  

 ④测试基于端口的虚拟主机是否可以成功访问

   27.png

   29.png

   

  ⑤访问被拒绝,解决办法,编辑/etc/apache/extra/httpd-vhosts.conf,添加授权信息

    30.png 

  ⑥重新载入httpd配置文件,重新访问

   31.png

   32.png

  33.png

  

 (2)配置基于IP地址的虚拟主机

   ①编辑/etc/apache/extra/httpd-vhosts.conf,修改内容如下

34.png

 ②给主机配置多个ip地址

 35.png

 

 ③重启httpd服务器,用不同的ip访问web服务  

   38.png

   36.png

   37.png

    (3)配置基于主机名的虚拟主机

      ①编辑/etc/apache/extra/httpd-vhosts.conf,修改虚拟主机配置文件

       39.png  

     

    ②修改本地主机的host文件,添加以下信息

     40.png

    ③重启httpd服务,使用主机名进行访问

     41.png

     42.png

    43.png

   

   

原创文章,作者:马行空,如若转载,请注明出处:http://www.178linux.com/4900

(0)
马行空马行空
上一篇 2015-06-15
下一篇 2015-06-15

相关推荐

  • sed使用小命令及课后作业

    Stream EDitor,  行编辑器 sed 是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space ),接着用sed 命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。Sed …

    Linux干货 2017-03-18
  • DNS服务器搭建从协议到实现详解

    一、域名和服务概述    1.FQDN:Fully Qualified Domain Name,完全限定域名,全局唯一           FQDN是指主机名加上全路径,全路径中列出了序列中所有域成员。全域名可以从逻辑上准确地表示…

    Linux干货 2016-04-30
  • Linux 第四天: (07月28日) 练习和作业

    Linux 第四天: (07月28日) 练习和作业         定义别名命令baketc, 每天将/etc/目录下所有文件, 备份到/testdir独立的子目录下, 并要求子目录格式为backupYYYY-mm-dd, 备份过程可见 alias baketc='cp -a /etc/ /testdir/b…

    Linux干货 2016-08-08
  • Linux 系统终端

    Linux系统的主要终端主要包含:控制台终端、控制终端、串口终端、伪终端、虚拟终端。 控制台终端:在Linux 系统中,计算机显示器通常被称为控制台终端(Console)内核将信息送到控制台终端上(/dev/console), 通过与console相关联的虚拟终端将信息显示到屏幕上。再开机过程中屏幕输出的信息,这个屏幕就是Console; 控制终端:键盘,显…

    Linux干货 2016-10-19
  • 第六周博客作业

                   1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#; %s@^[[:space:]]\+[^[:…

    Linux干货 2016-12-05
  • Linux基础之权限管理(含SUID\SGID\STICKY和ACL)

    概述     Linux系统是一个多人多任务的操作系统,系统上同时可能有很多人登录,每个人都会利用系统上的各类资源完成一定的操作。那么如何合理的规范这些用户的行为,保证资源的合理分配,则就需要用到权限管理的相关内容了。权限管理是Linux系统上最基础,也是最重要的一部分内容,本章就简要说明下权限管理的相关内容。内容主要…

    Linux干货 2016-08-04