Linux之Web服务(2)Httpd服务配置之一

Linux之Web服务(2)Httpd服务配置之一

Apache HTTP Server

Apache HTTP 服务器,简称Apache,是非常留下的Web服务器软件。通常和脚步语言比如PHP,数据库MySQL一起工作,合成为LAMP栈(Linux, Apache, MySQL, PHP). 当然流行的Web服务器还有nigix,但是nigix虽然轻量级很稳定,但是功能并不如Apache HTTP功能丰富,并且现在的Apache HTTP还支持模块化功能,及可以开发自己的功能模块并加入到此Web服务器软件中,更灵活的满足Web业务甚至是和http协议相关的实现。

本篇主要讲解在CentOS 7 上安装Httpd2.4和相应的配置。

Httpd2.4具体配置介绍

1、Httpd2.4的安装

#使用yum安装

[[email protected] ~]# yum install httpd -y

#安装后查看httpd信息,可以检查是否已经安装

[[email protected] ~]# yum info httpd 
Loaded plugins: fastestmirror
Determining fastest mirrors
Installed Packages
Name        : httpd
Arch        : x86_64
Version     : 2.4.6
Release     : 40.el7.centos
Size        : 9.4 M
Repo        : installed
From repo   : centos6
Summary     : Apache HTTP Server
URL         : http://httpd.apache.org/
License     : ASL 2.0
Description : The Apache HTTP Server is a powerful, efficient, and extensible
            : web server.

2、Httpd2.4 默认配置

主程序文件:/usr/sbin/httpd

模块文件:/usr/lib64/httpd/modules/*.so

注:可以使用httpd -M 查看当前服务加载的模块文件列表

主配置文件:

/etc/httpd/conf/httpd.conf

/etc/httpd/conf.d*/.conf

/etc/httpd/conf.modules.d/*.conf

站点文档路径:

/var/www/html

日志文件路径:

/var/log/httpd/access_log :访问日志

/var/log/httpd/error_log:  错误日志

Systemd Unit File:

/usr/ib/systemd/system/httpd.service

自带脚步文件:

/usr/sbin/apachectl

注意:在CentOS6及以前使用SysV风格启动的服务脚步使用的就是此脚本。

3、Http2.4 服务的启动和关闭

#启动服务

[[email protected] ~]# systemctl start httpd.service

#关闭服务

[[email protected] ~]# systemctl stop httpd.service

#查看服务是否启动成功

[[email protected] ~]# systemctl status httpd.service

#通过查看默认端口80查看是否开启监听

[[email protected] ~]# netstat -tnlp | grep ‘:80\>‘
tcp     0      0 0.0.0.0:80       0.0.0.0:*        LISTEN      88660/httpd

#也可以通过查看进程来查看httpd相关的进程组

[[email protected] ~]# ps -axu | grep ‘httpd\>‘ | grep -v ‘\<grep\>‘
root      88660  0.0  0.5 222032  5104 ?     Ss   12:47      0:00 /usr/sbin/httpd -DFOREGROUND
apache    88661  0.0  0.3 222032  3108 ?        S    12:47   0:00 /usr/sbin/httpd -DFOREGROUND
apache    88662  0.0  0.3 222032  3108 ?        S    12:47   0:00 /usr/sbin/httpd -DFOREGROUND
apache    88663  0.0  0.3 222032  3100 ?        S    12:47   0:00 /usr/sbin/httpd -DFOREGROUND
apache    88664  0.0  0.3 222032  3100 ?        S    12:47   0:00 /usr/sbin/httpd -DFOREGROUND
apache    88665  0.0  0.3 222032  3108 ?        S    12:47   0:00 /usr/sbin/httpd -DFOREGROUND

解析:这里发现进程的发起者居然都是apache,这是为了保护系统而产生的一个系统用户,该用户只负责Httpd守护进程操作,这样如果Httpd服务被入侵,而保护了操作系统。在某些低版本如Httpd2.2版本中使用的系统账户名可能为httpd。

4、Http2.4 准配前工作

#对80或Httpd指定监听的端口开发防火墙

[[email protected] ~]# iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT

#保存此防火墙规则配置

[[email protected] ~]# iptables-save

5、Httpd2.4 基础配置检查

 

配置文件格式:

DIRECTIVE  VALUE

DIRECTIVE:指令,不区分字符大小写;例如ServerRoot;

VALUE:该值除了文件系统指定路径除外,大多数也不区分大小写;

配置修改完后注意事项:

(1)检查语法;  注:可以使用 httpd -t 来检查,如果显示OK则无错误

(2)让服务重新重载配置文件

实例:

#检查配置文件语法是否有误,OK表示无语法错误

[[email protected] ~]# httpd -t

Syntax OK

#重载服务配置

[[email protected] ~]# systemctl reload httpd.service

#当然也可以通过发送1号信号让 Httpd守护进程重新生成

[[email protected] ~]# pkill -SIGHUP -f ‘.*\/httpd\>‘

6、具体的配置指令及其选项介绍

1、基本配置指令

ServerTokens  OS      #会显示当前apache版本和系统版本
ServerRoot "/etc/httpd"   #默认服务器配置跟目录
PidFile  run/httpd.pid   #进程信息的存放路径,相对路径,相对于/etc/httpd/下
Timeout 60               #超时时间,60秒后端口并重新连接
Listen [ip:]port         #监听的地址和端口

注:Listend可以重复定义多次,默认监听本机可用的所有地址;当需要修改监听多个监听端口或者添加多个监听端口时,需要重新启动httpd服务守护进程,及:

$ systecml restart httpd.service

2、保存连接的限制类指令

提示persistent connection : tcp连接建立后,资源获取完成后不会断开连接,而会继续等待。

而如何进行控制其他多个资源通过端口访问进程?

方案猜想:进行访问的数量限制,进行同一进程访问的时间限制。

具体配置举例说明:

是否开启保存连接

KeepAlive  on|off

举例说明:在Tcp进行通信需要3次握手来建立连接,而假设如果需要进行传输文件时使用此协议,则传送一次文件后端口连接然后再次3次连接建立一次连接来进行下一次文件传输。

如果改为On,则表示只在传输第一个文件时建立一次Tcp连接,而不会断开,接下来继续进行下面的传输不在进行建立连接的请求过程。

单一用户的保持连接最大请求次数

MaxKeepAliveRequest  100

解析:当输出此时为100次才端口一次连接,然后再次建立Tcp连接。

注意:只有KeepAlive 设为为On 时此选项才会跟着生效。因为传输文件时不能总保持不断开连接,因此这里设置一个最大的传输请求次数来控制,防止网络请求队列堵塞。

单一用户的一次保持连接的超时时间,默认为s秒,httpd2.4可以设置ms表示毫秒

KeepAliveTimeout  15

解析:假设当进行文件传输时,速度很慢,那么此此文件传输超过15秒会自动断开进行如下一次传输连接的建立。

2、MAP多处理模块

prefork MAP 可靠性、兼容性强的MAP,多进程,一个进程处理一次请求;

worker MAP  更高伸缩性的线程MAP,多线程,一个线程程处理一个请求;

event MAP   多线程,每线程处理一次请求,基于事件驱动机制;

这里主要列出perfork MAP介绍

StartServers   8         #httpd进程组默认会开启8个守护进程
MinSpareServers   5      #当有多个用户来进行访问,会至少有5个进程用来备份使用
MaxSpareServers   20    #最大值预留
ServerLimit   256        #限制允许多少个用户进行连接
MaxClients   256        #允许多少个用户同时连接,及同一时间段的并发量
MaxRequestsPerChild 4000  #最大请求模块子进程

3、模块的加载和查看

使用httpd 命令选项查看已经加载的模块

-t -D DUMP_MODULES : show all loaded modules

-M : a synonym for -t -D DUMP_MODULES

模块加载具体配置LoadModule

#httpd服务启动时默认加载的模块

LoadModule  mod_name  modules/mod_filename

注意:这里的LoadModule指定的模块名会在httpd -M命令中显示,而后面第二个参数才是真正对应的模块文件路径,此路径为相对路径,相对于ServerRoot配置节点指定的路径,一般默认为:

ServerRoot  /etc/httpd/       #Httpd服务的根目录
Include conf.d/*.conf        #读取包含指定目录下的配置文件

4、用户相关配置:

User apache    #系统用户,用于执行httpd守护进程
Group apache   #系统组,用于此组用户来管理httpd

注意:此系统用户一般不会轻易修改,就算要修改也要指定为一个系统用户,并且此用户的默认shell类型为/sbin/nologin,一次来就算Web服务站点出现的问题或被入侵,但是此进程的执行为系统用户,保证了系统的安全。

5、网站Main Server主要配置

#web服务站点邮箱,如:

ServerAdmin  [email protected]

解析:一般为管理员邮箱,当站点出现问题会发送服务的相关日志信息给指定邮箱。

#设置站点域名,可以设置,如:

ServerName  www.example.com:80

注意:此域名默认一般机器不会有,当启动服务时会出现一个提示说找不到ServerName指定域名,因此,可以设置为直接的主机名或者DNS配置的域名即可。

#站点文档及网页根路径

DocumentRoot  “/var/www/html”

6、站点文档访问授权及众多服务特性的配置:

1、基于文件系统路径:

<Directory “/PTATH/TO/DIR”>

</Directroy>

<File “”>

</File>

2、基于URL访问:

<Location “URL”>

</Location>

<Location "URL">

</Location>

<LocationMatch ~ "URL_PATTERN">

</LocationMatch>

3、访问的选项节点

Options

选项固定参数:

Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
None             #表示都不选
All            #表示选择所有参数功能
Indexes:         #索引
FollowSymLinks:  #允许使用符号链接访问资源
ExecCGI:      #允许执行CGI模块配置的脚本

具体案例解析:

 

1、Indexes  功能展示

#修改默认配置添加

<Directoiry "/var/www/html">

Options Indexes FollowSymLinks

AllowOverride  None

Require all granted

<DIrectoiry/>

说明:Indexes表示当访问这个设定的目录下是,如果没有index.html文件,则把此目录下的所有文件列表显示在网页中。如:

#在默认站点文档根目录/var/www/html 下创建xx目录

[[email protected] ~]# mkdir /var/www/html/xx

#切换到xx目录

[[email protected] ~]# cd /var/www/html/xx/

#创建两个带测试内容的文本文件

[[email protected] xx]# echo aa > aa.txt
[[email protected] xx]# echo bb > bb.txt
[[email protected] xx]# sync

#重新启动服务

[[email protected] xx]# service httpd restart

#再次进行访问

[[email protected] xx]# links http://10.1.249.185:80/xx/

解析:这里因为没有检查当前目录下有index.html文件,所以会把当前目录下的其它所有文件列表给列出来。

说明:如果去掉Indexes 则表示如果目录下没有index.html文件,则会隐藏该目录下的其它所有文件,如显示以下信息:

[[email protected] xx]# links http://10.1.249.185:80/xx/

Forbidden#forbidden   #表示为被禁用的意思

解析:这里最后一行就把系统的版本以及web站点服务器软件的版本以及端口后都显示出来。也是当全局设置有ServerTokens OS才会显示。这里显示的Forbidden就是上篇所列出的response响应介接收返回的状态码status code对应的403,及无权限访问此目录下除了默认文件名的默认文档及index.html的其它任何文件。

注意:Directory配置不能指定文件访问,为全局的,因此但如果指定该目录有文件,任然可以直接全路径进行访问指定资源,如查找 aa.txt,如:

[[email protected] xx]# links http://10.1.249.185/xx/aa.txt
aa

解析:那为什么任然可以通过此指定资源全路径来访问呢?因为这里的配置只是对Directory定义的整个目录生效,但是如果目录里的资源文件路径被获取,那么文件还是可以访问的,要拒绝通过指定文件资源路径访问可以通过配置File标签,及添加:

<Files ~ "/var/www/html/xx/.*\.txt$">
       Require all deiend  
</Files>

说明:这里访问/var/www/thml/xx/以.txt结尾的文件都不能访问了。当然如果建立了其它非以.txt 结尾的文件还是可以访问的,如:

#新建一个以为.txt的文件,这时访问此文件时无权限的

[[email protected] ~]# echo hello > /var/www/html/xx/hello.txt

#那么给这个修改此文件名的后缀为.log

[[email protected] ~]# rename txt log  /var/www/html/xx/hello.txt

#则再次使用资源文件全路径去访问hello.log

[[email protected] ~]# links http://10.1.249.185/xx/hello.log

说明:这里可以访问说明只对.txt后缀的文件做了访问限制,那么是不是通过全资源路径就无法访问刚才的aa.txt路径了呢?非也,使用curl命令就可以抓取资源,如:

#使用curl将指定路径资源文档页面源代码读取打印

[[email protected] ~]# curl http://10.1.249.185/xx/aa.txt
aa

#当然直接打印此路径下的所有文件列表还是不行的

[[email protected] ~]# curl http://10.1.249.185/xx/

解析:curl能够根据资源记录来捕获对应的资源的源代码,当然在/var/www/html/xx目录下是没有index.html命名的文件,所以要想打印出下面的文件列表,还是不行的。那么添加一个index.html 文件。

#在xx目录下添加一个index.html默认首页文档

[[email protected] ~]# echo ‘<html><head><title>新的默认页<title></head><body><h1>Default<h1></body></html>‘ >  > /var/www/html/xx/index.html

#使用curl尝试访问并读取其资源

[[email protected] ~]# curl http://10.1.249.185/xx

解析:这里似乎明白了什么,curl只是抓取资源的原代码或原内容,并不会解析对应的html标记,显示了301状态码表示这个目录下的文件被移动过。

#那么显示刚刚建立的/var/www/html/xx/index.html

[[email protected] ~]# curl http://10.1.249.185/xx/index.html
<html><head><title>新的默认页<title></head><body><h1>Default<h1></body></html>

说明:这样直接就将源码截获了,那么怎么办,只有给此文件设置访问控制facl了吗?和linux中的rwx基本权限类似,如果一个目录不能访问那么其下的所有资源如果设置了不能访问,那么就完全不能访问了。如,修改Directory对/var/www/html/xx目录的配置:

<Directory "/var/www/html/xx">
        Options FollowSymLinks
        AllowOverride AuthConfig
        Require all deined#将允许所有修改过为拒绝所有
</Directory>

#这次再次使用curl去抓取资源源码

[[email protected] ~]# curl http://10.1.249.185/xx/index.html

说明:这样设置了直接对当前整个目录设置了访问控制,那么想要访问此目录的任何文件都不行了,403表示没有权限,curl使用读取web资源内容来打印,但是现在也没有权限去获取此资源文件了,那么使用浏览器或者links更没法了。

总结:

其实这里没必要这么麻烦,一般如果在一个目录下有多种类型的文件,这时可以通过设置对应的<Files> 标签来对指定文件名设置访问权限。而去掉<Directory>里Options中的Indexes是为了安全考虑。Indexes的生效主要跟是否有index.html默认页有关,如果没有此默认页,那么去掉此项并设置访问拒绝才不会显示访问到所有文件。如果需要将不想让指定的文件在此目录下被访问,如果在现在的CentOS系统中,就好办了,直接将不想被访问并且被打印在文件列表中:

1、将此文件设置为隐藏文件

2、给对应的文件设置<Files >标签控制访问

验证总结案例实现:

#删除刚才创建的index.html默认页

[[email protected] ~]# rm -f /var/www/html/xx/index.html

#修改FIles标签拒绝所有人html/xx目录下所有以.开头并以txt结尾的文件

[[email protected] ~]# vim /etc/httpd/conf/http.conf
<Directory "/var/www/html/xx">
        Options Indexes FollowSymLinks
        AllowOverride AuthConfig
Require all granted       
<Files ~ "/var/www/html/xx/\..*txt$">
        Require all deined   
</Files>

#修改aa.txt文件名为.aa.txt及为隐藏文件

[[email protected] ~]# rename aa .aa /var/www/html/xx/aa.txt

#此时通过ls默认选项查看xx目录已经无法找出隐藏文件.aa.txt了

[[email protected] ~]# ls /var/www/html/xx/
bb.txt

#通过links访问此目录

[[email protected] ~]# links  http://10.1.249.185/xx/

解析:因为没有index.html及默认页,所有打印当前目录下的所有资源文件,但不包括隐藏文件,因此.aa.txt并没有被打印。

#同时为了防止curl抓取内容,删除所有用户的r及读权限

[[email protected] ~]# chmod -r /var/www/html/xx/.aa.txt

#只是通过curl命令来通过web读取资源,就不行了

[[email protected] ~]# curl http://10.1.249.185/.aa.txt
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /.aa.txt was not found on this server.</p>
<hr>
<address>Apache/2.2.3 (Red Hat) Server at 10.1.249.185 Port 80</address>
</body></html>

说明:curl是需要是一个二进制执行程序,默认有x及执行权限,而对应的文件没有读权限,因此此curl获取资源源码失效。

#当然如果使用root用户直接在本地读取此文本还是可以的,只是对web做了限制

[[email protected] ~]# whoami
root
[[email protected] ~]# cat /var/www/html/xx/.aa.txt 
aa

 

2、Options FollowSymLinks  允许符号链接

说明:允许Directory定义指定目录下创建符号链接来访问其他路径文件。

功能展示

#给/var/www/html默认文档路路径对应的Directory标签中添加此选项:

<Directory “/var/ww/html>
Options FollowSymLinks
..........

#在根目录下创建一个目录 :

[[email protected] ~]# mkdir /xx

#在xx目录下预习建立一个默认页面

[[email protected] ~]# echo echo aa > /xx/index.html

#切换到默认文档根路径

[[email protected] ~]# cd /var/www/html/

#给创建的默认页index.html添加httpd服务所需的安全上下文

[[email protected] html]# chcon -R -t httpd_sys_content_t /xx/

#在根路径下创建一个符号链接yy文件执行刚才的/xx目录

[[email protected] html]# ln -s /xx/ yy

#查看文档目录下的所有文件的安全上下文

[[email protected] html]# ll -Z
-rw-r--r--  root root root:object_r:httpd_sys_content_t index.html
drwxr-xr-x  root root root:object_r:httpd_sys_content_t xx
lrwxrwxrwx  root root root:object_r:httpd_sys_content_t yy -> /xx/

#发送 SIGHUP 信号重载Httpd服务配置

[[email protected] html]# pkill -HUP ‘httpd.*‘

#进行站点下的yy服务链接,显示结果实际为文件系统根路径下的xx目录,及/xx

[[email protected] html]# links http://10.1.249.185:80/yy
echo aa

说明:这里显示的内容并不是根据规则目录标签里定义的指定为/var/www/html目录下的相对路径yy,这个yy为一个软连接,而连接的指定的是一个目录,而目录里有index.html则执行的是这个网页。

3、AllowOverride  访问控制配置

httpd的访问控制配置,允许每目录单独进行;在每个目录下建立一个.htaccess文件;

AllowOverride 表示是否允许目录中的.htaccess文件中的配置来覆盖当前配置段中的配置;

具体的参数:

Options            多选项

FileInfo         详细文件配置,一般用于文件Files标签配合

AuthConfig        允许使用Auth配置文件来读取配置设定

Limit             允许限制访问范围控制

All           所有设定

None           不使用任何设定

时间: 2024-10-05 04:43:53

Linux之Web服务(2)Httpd服务配置之一的相关文章

Linux之Web服务(2)Httpd服务配置之二

Linux之Web服务(2)Httpd服务配置之二 前言 在上一篇通过一些简单的案例或说明来介绍了部分关于Httpd2.4中httpd.conf配置文件中的配置选项及对应的功能.主要是对访问控制和在处理对指定目录或文件进行访问控制的一些安全问题性的处理.但是一直没有提到访问控制的具体讲解,本篇列出访问控制的具体使用选项和功能,以及其它高级配置. 1.Httpd2.4 文档访问授权具体参数 前提:文档访问授权选项配置只适合在以下标签中生效: <Directory >  <FIles>

Linux之Web服务(2)Httpd服务配置之三

Linux之Web服务(2)Httpd服务配置之三 前言 默认安装的Httpd服务一般只有默认的一个DocumentRoot节点配置,及一个站点文档资源存放根目录,但是在生产环境中需要有多种分类的资源,比如用于外部访问和内部访问,又或者是资源本身类型,比如分别用来存放一些文档.图片.单项加密算法文件等,为了更好分配站点管理的资源,Httpd服务提供了VirtualHost及虚拟主机的配置,可以在一个Httpd服务下模拟进行部署多个站点,这样不同的站点进行不同的配置,更方便进行分布式管理. Vir

Linux之Web服务(2)Httpd服务配置之四

Linux之Web服务(2)Httpd服务配置之四 前言 接上一篇的虚拟主机,本片主要介绍虚拟主机的一些搭建和部署,本篇通过一个具体的案例来显示虚拟主机的作用和特性. 案例功能介绍: (1) 准备DNS解析3个域名或者添加/etc/hostst/3条主机名IP档案,解决域名解析 (2) 基于主机名实现三个虚拟主机 (3) 每虚拟主机使用独立的访问日志和错误日志 (4) 在第二个虚拟主机上提供/status: (5) 在第三个虚拟主机提供路径别名/bbs,访问其它文件系统路径: (6) 第三个虚拟

第二十天 TCP 及socket通信原理、http协议及web服务、httpd核心配置详解

一.TCP及socket通信原理详解 二.http协议及web服务原理(一) 三.http协议及web服务原理(二) 四.httpd核心配置详解 1.tcp.udp是一种传输协议,实现进程地址标记,套接字是一个虚拟设备,用来表明主机上的某个进程      众所周知:0-1023:管理员才有权限使用,永久地分配给某应用使用(由IANA分配)      注册端口:1024-41951:只有一部分被注册,分配原则上非特别严格.      动态端口或私有端口:41952-65535:由内核分配临时端口,

linux中手工编译安装httpd服务全操作过程

实验目的:使用手工编译的方式搭建httpd服务.有时候我真的很想吐槽51cto,因为我不知道好多人发表的一些关于自己的一些观点或者说是言论,为什么会有那么多的访问量,而我发表了42篇博客,每篇博客都是我一字一字打出来的关于实际操作的经验,为什么我上不了推荐博客?我实在不甘心... 实验步骤:共享源代码安装包.解压缩源代码内容../configure配置各种参数项.make编译.make install安装.然后就是配置httpd的主配置文件内容,下面是详细步骤. 首先是准备工作,如下图所示把这几

Web基础之httpd服务搭建(一)

实验需求 (1)使用httpd-2.2搭建httpd服务: (2)建立两个基于FQDN的虚拟主机www1,www2:要求有单独的错误日志和访问日志: (3)通过www1的/server-status提供状态信息,且仅允许用户tom访问: (4)www2设置禁止192.168.0.0/24网络中任意主机访问: (5)为www2主机提供https服务: 实验过程 httpd-2.4环境 准备工作: 1.确保httpd服务已正确安装. # rpm -qa httpd httpd-2.2.15-45.e

linux学习之路之httpd服务

HTTP HTTP:全称为HyperText  Transfer Protocol(超文本传输协议),是目前互联网使用最多最广泛的一种协议.在早期的HTTP协议版本(http/0.9)中,http服务仅支持二进制(ASCII)的纯文本文件.而在http/0.9以后的版本中,http协议可以支持MIME机制,使得http协议可以支持多种格式的文本文件,例如视频.图像.语音等等.从而丰富了http协议的发展. 什么是MIME? MIME:全称是Mulitpurpose  Internet  Mail

CentOS 7 中httpd服务构建虚拟Web主机详解

虚拟Web主机指的是在同一台服务器中运行多个Web站点,其中的每个站点实际并不独立占用整个服务器,因此被称为"虚拟"Web主机.通过虚拟Web主机服务可以充分利用服务器的硬件资源,从而大大降低网站构建及运行成本. 使用httpd服务可以非常方便地构建虚拟主机服务器,只需要运行一个httpd服务就能同事支撑大量的Web站点. httpd服务支持的虚拟主机类型包括以下三种: 基于域名:为每个虚拟主机使用不同的域名,但是其对应的IP地址是相同的: 基于IP地址:为每个虚拟主机使用不同的域名,

httpd服务编译安装

httpd服务编译安装  httpd服务就是网页服务,不过Linux现在流行的httpd服务为apache服务. 我们这里编译安装的htppd服务也为apache服务. httpd服务的功能及作用应该不需要多做介绍了,我们直接进入正题,开始编译及安装. 首先需要先到官网下载httpd的编译安装包以及依赖服务包 这次编译安装的是apache 2.4版本的 依赖包为apr,apr的版本也必须为1.4以上的,否则不兼容 在这下载httpd编译包: http://httpd.apache.org/ 在这