apache的介绍和安装详解

apache介绍

介绍:

Apache:Apache HTTP Server是开源软件项目的杰出代表,基于标准的HTTP协议提供网页浏览服务。Apache可以运行在Windows,Linux,Unix等多种操作系统平台上

安装

apache默认在系统镜像里有,名为httpd包,可以用yum直接安装,也可以用源码包编译安装。源码包编译安装方式可以定制所需功能,加载特定的模块。所以生产环境下一般都是源代码编译安装

下面介绍怎么用源码报编译安装apache。版本为(httpd-2.4.4)

1)卸载系统中默认的httpd软件,若没有则忽略

2)检查apr版本。系统默认情况下为1.3,由于httpd-2.4.*所需版本为1.4.6,所以需要安装apr最新版,而httpd-2.2.*不需要

[[email protected]_Server ~]# rpm -qa |grep  apr

apr-util-1.3.9-3.el6_0.1.x86_64

apr-1.3.9-5.el6_2.x86_64

安装apr-1.4.6

[[email protected]_Server src]# cd /usr/src/

[[email protected]_Server src]# wget https://archive.apache.org/dist/apr/apr-1.4.6.tar.bz2

[[email protected]_Server src]# tar jxfapr-1.4.6.tar.bz2

[[email protected]_Server src]# cd apr-1.4.6

[[email protected]_Server apr-1.4.6]#./configure --prefix=/usr/local/apr-1.4.6

[[email protected]_Server apr-1.4.6]#make&& make install

安装apr-util-1.4.1

[[email protected]_Server apr-1.4.6]# cd/usr/src/

[[email protected]_Server src]#  wget https://archive.apache.org/dist/apr/apr-util-1.4.1.tar.bz2

[[email protected]_Server src]# tar jxfapr-util-1.4.1.tar.bz2

[[email protected]_Server src]# cdapr-util-1.4.1

[[email protected]_Server apr-util-1.4.1]#./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr-1.4.6/

[[email protected]_Server apr-util-1.4.1]#make && make install

3)下载httpd-2.4.4,解压并编译安装

[[email protected]_Server ~]# cd /usr/src/

[[email protected]_Server src]# wget https://archive.apache.org/dist/httpd/httpd-2.4.4.tar.gz

[[email protected]_Server src]# tar zxfhttpd-2.4.4.tar.gz

[[email protected]_Server src]# cd httpd-2.4.4

[[email protected]_Server httpd-2.4.4]#  ./configure --prefix=/usr/local/httpd-2.4.4--enable-so --enable-rewrite --enable-ssl --enable-cgi --enable-cgid--enable-modules=most --enable-mods-shared=most --enable-mpms-shared=all--with-mpm=event  --with-zlib--with-pcre --with-apr=/usr/local/apr-1.4.6/ --with-apr-util=/usr/local/apr-util/

[[email protected]_Server httpd-2.4.4]# make&& make install

参数解释:

--enable-so              :支持动态共享模块如果没有这个模块PHP将无法与apache结合工作

--enable-ssl             :启用支持ssl

--enable-cgi             :支持cgi

--enable-rewrite         :支持URL重写

--with-zlib             :压缩库,在互联网上传播时可节约带宽

--with-apr=/usr/local/apr-1.4.6/ :指定apr路径

--with-apr-util=/usr/local/apr-util/:指定apr-util路径

--enable-mpms-shared=all  :支持多道处理模块

--with-mpm=event         :设定默认的模块

在编译过程中可能会报两个错

报错1:

checking for pcre-config... false

configure: error: pcre-config forlibpcre not found. PCRE is required and available from http://pcre.org/

解决方法:这是缺少pcre的开发包导致的,安装pcre-devel即可

yum install  pcre-devel –y

报错2:

checking whether to enable mod_ssl...configure: error: mod_ssl has been requested but can not be built due toprerequisite failures

解决方法:这是缺少openssl开发模块导致的,安装openssl-devel即可

yum install openssl-devel -y

补充:

构建MPM为静态模块

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

构建 MPM 为动态模块

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

4)安装完成之后,优化apache,使更容易操作

4.1)优化执行路径

[[email protected]_Server httpd-2.4.4]# cd/usr/local/

[[email protected]_Server local]# ln -shttpd-2.4.4/ httpd

[[email protected]_Server local]# ln -sf/usr/local/httpd-2.4.4/bin/* /usr/bin/

[[email protected]_Server local]# httpd -v

Server version: Apache/2.4.4 (Unix)

Server built:   Dec 16 2014 12:17:45

4.2)制作启动脚本,添加httpd为系统服务,并设置开机自启动

可以使用httpd自带的apachectl作为控制脚本,但是需要加执行权限,另外需要在文件中添加两行

#description:ApacheController Script

#chkconfig: - 85 15

操作步骤:

[[email protected]_Server ~]#cp/usr/local/httpd-2.4.4/bin/apachectl /etc/init.d/httpd

[[email protected]_Server ~]# sed -i ‘1a #description:Apache Controller Script‘/etc/init.d/httpd

[[email protected]_Server ~]# sed -i ‘2a #chkconfig:- 85 15‘  /etc/init.d/httpd

[[email protected]_Server ~]# chmod a+x/etc/init.d/httpd

[[email protected]_Server ~]# head -3/etc/init.d/httpd

#!/bin/sh

#description:Apache Controller Script

#chkconfig:-85 15

[[email protected]_Server ~]# ll/etc/init.d/httpd

-rwxr-xr-x 1 root root 3512 12月16 12:38 /etc/init.d/httpd

4.4)启动Apache

[[email protected]_Server ~]# service httpdstart

[[email protected]_Server ~]# netstat -anput |grep httpd

tcp        0     0 :::80                      :::*                        LISTEN      50106/httpd

[[email protected]_Server ~]# lsof -i :80

COMMAND  PID   USER   FD  TYPE DEVICE SIZE/OFF NODE NAME

httpd  50106   root    4u IPv6  51433      0t0 TCP *:http (LISTEN)

httpd  50107 daemon    4u  IPv6 51433      0t0  TCP *:http (LISTEN)

httpd  50108 daemon    4u  IPv6 51433      0t0  TCP *:http (LISTEN)

httpd  50109 daemon    4u  IPv6 51433      0t0  TCP *:http (LISTEN)

[[email protected]_Server ~]# chkconfig --addhttpd

[[email protected]_Server ~]# chkconfig httpdon

[[email protected]_Server ~]# chkconfig --list| grep httpd

httpd           0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭

提示:需要关闭防火墙iptables和禁用selinux,否则Apache可能会启动报错

客户端测试:

补充:使用apachectl作为启动脚本发现,启动Apache后并没有对结果进行显示,只能通过查看端口才能判断Apache是否启动成功,现在写一个脚本,可以出现像系统服务一样的带有结果的脚本

#!/bin/bash
#description: Apache Controller Script
# chkconfig: - 85 15
 
#config: /usr/local/httpd/conf/httpd.conf
#pidfile: /usr/local/httpd/logs/httpd.pid
. /etc/rc.d/init.d/functions
if [ -f /etc/sysconfig/httpd ]; then
        ./etc/sysconfig/httpd
fi
 
HTTPD_LANG=${HTTPD_LANG-"C"}
 
INITLOG_ARGS=""
 
apachectl=/usr/local/httpd/bin/apachectl
httpd=${HTTPD-/usr/local/httpd/bin/httpd}
prog=httpd
pidfile=${PIDFILE-/usr/local/httpd/logs/httpd.pid}
lockfile=${LOCKFILE-/var/lock/subsys/httpd}
RETVAL=0
start() {
        echo -n$"Starting $prog: "
        LANG=$HTTPD_LANGdaemon --pidfile=${pidfile} $httpd $OPTIONS
       RETVAL=$?
        echo
        [$RETVAL = 0 ] && touch ${lockfile}
        return$RETVAL
}
stop() {
       echo -n$"Stopping $prog: "
       killproc-p ${pidfile} -d 10 $httpd
       RETVAL=$?
       echo
       [ $RETVAL= 0 ] && rm -f ${lockfile} ${pidfile}
}
reload() {
    echo -n$"Reloading $prog: "
    if !LANG=$HTTPD_LANG $httpd $OPTIONS -t >&/dev/null; then
       RETVAL=$?
        echo$"not reloading due to configuration syntax error"
        failure$"not reloading $httpd due to configuration syntax error"
    else
        killproc-p ${pidfile} $httpd -HUP
       RETVAL=$?
    fi
    echo
}
# See how we were called.
case "$1" in
  start)
       start
       ;;
  stop)
       stop
       ;;
  status)
        status-p ${pidfile} $httpd
       RETVAL=$?
       ;;
  restart)
       stop
       start
       ;;
  condrestart)
       if [ -f${pidfile} ] ; then
             stop
             start
       fi
       ;;
  reload)
        reload
       ;;
 graceful|help|configtest|fullstatus)
      $apachectl [email protected]
       RETVAL=$?
       ;;
  *)
       echo $"Usage: $prog {start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}"
       exit 1
esac
exit $RETVA

apache配置文件详解

yum安装的apache配置文件位于/etc/httpd/conf/httpd.conf

源码报安装的apache的配置文件位于*/httpd/conf/httpd.conf(*表示指定的Apache安装路径)

全局配置项

KeepAlive On  设置是否允许持续性的连接 最好设置为ON

ServerRoot  设置httpd服务器的根目录

Listen 80 设置httpd服务器监听的端口号

User 设置运行httpd进程的用户身份,默认为daemon

Group 设置运行httpd进程的组身份,默认为daemon

ServerAdmin  设置httpd服务器的管理员邮箱

ServerName  设置Web站点的完成主机名

DocumentRoot 设置网站的根目录

DirectoryIndex 设置网站的默认主页,可以设置多个,需用空格隔开

ErrorLog 设置错误日志文件的路径,默认路径为logs/error_log

LogLevel 设置记录日志的级别,默认为Warn警告

CustomLog 设置访问日志文件的路径,日志类型,默认路径为logs/access_log

PidFile 设置用户保存httpd进程号的文件,默认在logs/httpd.pid

CharsetDefault 设置站点的网页默认使用的字符集编码,如UTF-8,gb2312

Include 包含另一个配置文件的内容

区域配置项

<Directory />               //定义’/’目录区域的开始

Options FollowSymlinks    //控制选项,允许使用符号链接

AllowOverride  None    //不允许隐含控制文件中的覆盖配置

Order deny,allow   //访问控制策略的应用顺序

Deny from all    //禁止任何人访问此目录

</Directory>

附:

Options 后面常跟的选项:

  • none:不支持任何选项
  • Indexes:允许索引目录
  • FollowSynLinks:允许访问符号链接指向的源文件
  • Includes:允许执行服务端包含(SSI)
  • ExecCGI:允许运行CGI脚本
  • ALL:支持所有选项

AllowOverride 常见的参数

  • ALL 全部的权限均可覆盖
  • AuthConfig  仅有网页认证可覆盖
  • Indexes 仅允许Indexes方面覆盖
  • Limits 允许用户利用Allow,Deny与Order管理可浏览的权限
  • None 不可覆盖

配置文件具体详解请参考Apache配置文件详解.doc

时间: 2024-11-12 00:25:07

apache的介绍和安装详解的相关文章

【介绍+安装】Nginx的介绍和安装详解

Nginx是一个自由.开源.高性能及轻量级的HTTP服务器及反转代理服务器, 其性能与IMAP/POP3代理服务器相当.Nginx以其高性能.稳定.功能丰富.配置简单及占用系统资源少而著称. Nginx 超越 Apache 的高性能和稳定性,使得国内使用 Nginx 作为 Web 服务器的网站也越来越多. *基础功能 处理静态文件,索引文件以及自动索引: 反向代理加速(无缓存),简单的负载均衡和容错: FastCGI,简单的负载均衡和容错: 模块化的结构.过滤器包括gzipping, byte

Redis介绍以及安装详解

redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set --有序集合)和hash(哈希类型).这些数据类型都支持push/pop.add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的.在此基础上,redis支持各种不同方式的排序.与memcached一样,为了保证效率,数据都是缓存在内存中.区别的是redis会周期性的把更新的数

Apache服务简介及编译安装详解

Apache服务简介及编译安装详解 一.Apache简介 Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,是目前世界上使用最广泛的一种web server,它以跨平台,高效和稳定而闻名,可以运行在几乎所有广泛使用的计算机平台上.Apache的特点是简单.速度快.性能稳定,并可做代理服务器来使用. Apache是用C语言开发的基于模块化设计的web应用,总体上看起来代码的可读性高于php代码,它的核心代码并不多,大多数的功能都被分割到各种

Storm集群安装详解

Storm集群安装详解 storm有两种操作模式: 本地模式和远程模式. 本地模式:你可以在你的本地机器上开发测试你的topology, 一切都在你的本地机器上模拟出来; 远端模式:你提交的topology会在一个集群的机器上执行. 本文以Twitter Storm官方Wiki为基础,详细描述如何快速搭建一个Storm集群,其中,项目实践中遇到的问题及经验总结,在相应章节以“注意事项”的形式给出. 1.   Strom集群组件 Storm集群中包含两类节点:主控节点(Master Node)和工

MySQL安装详解

MySQL安装详解 [下载地址:http://dev.mysql.com/downloads/] 参考文献:http://dev.mysql.com/doc/refman/5.1/zh/installing.html 步骤1:选择安装类型 有3种安装类型:Typical(典型安装).Complete(完全安装)和Custom(定制安装). Typical(典型安装)安装只安装MySQL服务器.mysql命令行客户端和命令行实用程序.命令行客户端和实用程序包括mysqldump.myisamchk

CentOS程序包管理器rpm、yum以及程序包编译安装详解

一.程序包管理器RPM和Yum简介 程序包管理器:将编译好的应用程序的各组成文件打包成一个或几个程序包文件,可以更方便地实现程序包的安装.升级.卸载和查询等管理操作. rpm软件包管理器(RPM Package Manager):rpm包存在依赖关系,依赖关系复杂,安装时间很长,虽然可以忽略依赖关系,但是可能会导致程序包安装后无法正常使用. yum程序包管理器( Yellow dog Updater, Modified):yum是基于RPM包管理,自动解决程序包间的依赖关系.根据配置文件的资源地

yum httpd安装详解

yum httpd安装详解: 1.安装httpd yum -y install httpd 2.关闭selinux,iptables程序: [[email protected] ~]# service iptables stop [[email protected] ~]# setenforce 0 3.查看下当前系统80端口是否被占用: [[email protected] ~]# ss -tnl State       Recv-Q Send-Q                       

Cacti使用安装详解

Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具.Cacti是通过 snmpget来获取数据,使用 RRDtool绘画图形,而且你完全可以不需要了解RRDtool复杂的参数.它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结构.host以及任何一张图,还可以与LDAP结合进行用户验证,同时也能自己增加模板,功能非常强大完善.界面友好.软件 Cacti 的发展是基于让 RRDTool 使用者更方便使用该软件,除了基本的 Snmp 流量

Phoenix和SQuirrel安装详解

Phoenix安装详解 描述 现有hbase的查询工具有很多如:Hive,Tez,Impala,Shark/Spark,Phoenix等.今天的主角是Phoenix. phoenix,中文译为“凤凰”,很美的名字.Phoenix是由saleforce.com开源的一个项目,后又捐给了Apache基金会.它相当于一个Java中间件,提供jdbc连接,操作hbase数据表. 但是在生产环境中,不可以用在OLTP中.在线事务处理的环境中,需要低延迟,而Phoenix在查询HBase时,虽然做了一些优化