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

[经验分享] Apache HTTP服务器 2.0版本编译与安装

[复制链接]

尚未签到

发表于 2018-11-29 09:05:05 | 显示全部楼层 |阅读模式
在众多博客中很难找到一个详细步骤的有关APACHE的技术文档,今天终于发现了,现发布一下,供广大linux爱好者参阅!

本文仅阐述Apache在Unix和类Unix系统中的编译和安装,Apache 2.0的安装配置环境与Apache 1.3完全不同了。Apache 1.3使用了一个自定义的脚本来简化安装;而Apache 2.0现在也象其他许多开放代码工程一样,利用libtoolautoconf来建立安装环境。


  • 概要

Download$ lynx http://www.apache.org/dist/httpd/httpd-2_0_NN.tar.gz
Extract$ gzip -d httpd-2_0_NN.tar.gz
$ tar xvf httpd-2_0_NN.tar
Configure$ ./configure --prefix=PREFIX
Compile$ make
Install$ make install
Customize$ vi PREFIX/conf/httpd.conf
Test$ PREFIX/bin/apachectl start
其中NN必须用当前副版本号替代;PREFIX是服务器被装到文件系统中的路径名,如果没有指定PREFIX,默认会被装到/usr/local/apache2
下面会详细阐述编译和安装的每个步骤,先从编译和安装Apache HTTPD的要求开始。


要求
编译Apache的要求如下:
磁盘空间 必须保证有50MB以上的临时磁盘自由空间。Apache安装完毕后会占据10MB左右的空间,实际磁盘需求会因编译设置和是否安装第三方模块而有所不同。 ANSI-C编译器及其支持环境 必须装有ANSI-C编译器,推荐使用来自Free Software Foundation (FSF)的GNU C compiler (GCC)(2.7.2版本很好)。如果没有GCC,那么要确保现有的编译器符合ANSI标准,而且PATH中必须包含指向基本编译工具比如make的路径。 确保正确的时间 由于HTTP协议的元素都会用到时间,有必要了解一下你的系统的时间同步机制。在基于Network Time Protocol (NTP)的系统中,一般是用ntpdatexntpd来同步时间。有关NTP软件和公共时间服务器的资料请参见Usenet新闻组comp.protocols.time.ntp和NTP homepage。 Perl 5 [可选] 有些用Perl写的支持脚本,如apxs和dbmmanage,会需要Perl 5解释器(5.003或以上版本就足够了),如果`configure'没找到这样的解释器也没关系,并不影响Apache 2.0的编译和安装,只是这些支持脚本不能用而已。如果系统中存在多个Perl 解释器,比如有厂商提供的Perl 4,还有你自己找来的Perl 5,推荐用--with-perl选项来确保脚本./configure使用正确的版本。

下载
Apache可以从Apache Software Foundation download site及其镜像站点下载。
版本号缀有alpha的是预测试版本,其运行可能正常也可能不正常;缀有beta的是仍需要测试和纠错的较可靠的版本。要下载最好的Apache HTTP Server的发行版,就应该选择最新的,而且文件名中既没有alpha也没有beta的版本。
下载完毕后,尤其是从镜像站点下载的,应该对下载来的tar包作PGP签名校验,以确保其完整而且未被篡改过。校验有两个步骤,第一步,必须从Apache distribution site获得一个密钥(KEYS)(为确保此密钥文件本身未被篡改,使用Apache早先发行版中的或者导入来自公共密钥服务器的密钥也许是个好办法),用以下命令导入到你的个人密钥环中(可能会因你的PGP版本有所不同):
$ pgp < KEYS


$ gpg --import KEYS

第二步,从main Apache website获得PGP签名以校验tar包。这个签名的文件名由其原tar包文件名后附加.asc组成。接着,用以下命令来校验发行版(也可能会因你的PGP版本有所不同):
$ pgp httpd-2_0_NN.tar.gz.asc


$ gpg --verify httpd-2_0_NN.tar.gz.asc

应该会看见这样的信息:
Good signature from user &quot;Martin Kraemer &quot;.

也可能会看见“the relationship between the key and the signer of the key cannot be verified”的信息,其原因与你的密钥环中的信任关系有关,如果你信任这个密钥文件,那就没关系。


解压
解压Apache HTTPD的tar包很简单:
$ gzip -d httpd-2_0_NN.tar.gz
$ tar xvf httpd-2_0_NN.tar


这样就在当前目录下新建了一个包含发行版源代码的目录,必须cd进入这个目录以继续服务器的编译。


代码树的设置
这一步是为你的特定平台和个人需求设置代码树。位于发行版主目录的configure脚本会完成这个步骤(对下载Apache源代码树的CVS版本的开发者,需要装有autoconflibtool,并执行buildconf,对于官方发行版则没必要)。
简单执行./configure可以用所有的默认值设置代码树,同时./configure可以接受命令行参数以改变默认值。通常,环境变量要预先设置,其他选项可以跟在./configure后面。除了许多迎合你的需求的选项,最重要的选项是指示Apache应该被装在哪个目录的目录前缀(prefix),因为Apache需要这个目录以正常运作。
为了让你对能指定什么有一个简单的印象,此例演示编译Apache,用了一个特定的编译器及其编译参数,而且允许今后通过DSO机制动态装载两个附加的模块modules mod_rewrite和mod_speling:
$ CC=&quot;pgcc&quot; CFLAGS=&quot;-O2&quot; \
./configure --prefix=/sw/pkg/apache \
--enable-rewrite=shared \
--enable-speling=shared


configure需要运行几分钟,以测试功能是否在你的系统中有效,并建立稍后编译服务器所需要的许多Makefile。
获得Apache设置参数的最简单方法是执行./configure --help,其中有对大多数参数和环境变量的简要说明。
环境变量
autoconf编译进程用了几个环境变量来设置编译环境。通常,这些变量只是改变如何编译Apache,而不是改变服务器最终的功能。可以在执行configure之前预先设置这些变量,而更简单的方法是象上面例子那样,直接在configure的命令行中指定。
CC=... C编译器的名称 CPPFLAGS=... 各种C预处理和编译器参数 CFLAGS=... C编译器的调试和优化参数 LDFLAGS=... 各种连接器参数 LIBS=... 连接器的库位置信息(&quot;-L&quot; and &quot;-l&quot;参数) INCLUDES=... 头文件的搜索目录(&quot;-Idir&quot;). TARGET=... [Default: apache] 目标执行文件名 NOTEST_CPPFLAGS=... NOTEST_CFLAGS=... NOTEST_LDFLAGS=... NOTEST_LIBS=... 这些参数与不带NOTEST的同名参数功能相同,但是,它们仅在autoconf执行功能测试以后才起作用,如此就允许包含以后编译时必须的而在功能测试时会出错的参数。 SHLIB_PATH=... 编译器和连接器共享的库路径 autoconf的输出参数
--help 显示所有有效参数的用法,而并不实施任何设置 --quiet 阻止一般的&quot;checking...&quot;信息的出现 --verbose 在设置过程中详细显示包括被检测文件名的信息 路径名
目前有两种方法设置Apache安装其文件的路径名。首先,可以指定一个目录来安装Apache本身。
--prefix=PREFIX [Default: /usr/local/apache2] 使Apache的文件装在这个目录下 还可以把内定结构的文件装在其他目录。
--exec-prefix=EPREFIX [Default: PREFIX] 指定安装内定结构文件的目录。 其次,使用config.layout文件可以对各种类型的文件指定安装目录,从而更灵活地安装Apache。config.layout文件包含了几个设置例子,你可以参照这些例子按你的需要进行设置,其中不同类型的布局用被分入各个组,如命名为FOO...
--enable-layout=LAYOUT 用已命名的config.layout布局文件来指定安装目录。 模块
Apache是模块化的服务器,核心服务器种只包含了功能最常用的模块,而扩展功能由其他模块提供。设置过程中,你必须指定需要包含的模块。文档中有模块清单备查,其中状态为&quot;Base&quot;的模块会被默认地包含进核心服务器,如果你不需要包含某个模块(比如mod_userdir),则必须明确地禁用它;其他状态的模块(比如mod_expires),也必须明确启用以使之包含进核心服务器。
Apache有两种使用模块的方法,其一是永久性包含进核心;如果操作系统支持动态共享对象(DSO),而且能为autoconf所检测,则模块还可以被动态编译。DSO模块的存储是独立与核心的,可以被核心使用由mod_so模块提供的运行时刻配置指令包含或排除。如果编译中包含有任何动态模块,则mod_so模块会被自动包含进核心。如果希望核心能够装载DSO,而不实际编译任何动态模块,需要明确指定--enable-so
--enable-MODULE[=shared] 编译并包含模块MODULEMODULE是文档中去掉&quot;_module&quot;的模块名。要将一个模块编译成DSO,需要加=shared选项。 --disable-MODULE 排除可能被编译并包含的模块MODULE--enable-modules=MODULE-LIST 编译并包含用空格分隔的MODULE-LIST--enable-mods-shared=MODULE-LIST 编译并包含用空格分隔的MODULE-LIST成DSO。 --enable-modules--enable-mods-shared中的MODULE-LIST选项通常是一个用空格分隔的模块列表,例如编译并包含enable mod_dav and mod_info,可以
./configure --enable-dav --enable-info

或者,等效地写成:
./configure --enable-modules=&quot;dav info&quot;

另外,可以用关键字allmost一次性包含“所有的”或者“大多数”模块,然后再用--disable-MODULE来排除你不需要的模块。例如,包含所有的模块为DSO,而排除mod_info,可以
./configure --enable-mods-shared=all --disable-info

除了标准模块组,Apache 2.0还提供了一个选择,就是多道处理模块(Multi-Processing Modules)(MPMs)。编译过程中必须包含一个且只有一个MPM,MPM documentation page有对应各种平台的默认MPM,但是也可以在configure命令行中改变。
--with-mpm=NAME 选择叫NAME的MPM. DBM
Apache的某些功能,如mod_auth_dbmmod_rewrite中的DBM RewriteMap使用简单的 键/值 数据库来实现信息快速检索。Apache内置了支持SDBM的源代码,所以数据库总是被支持的。如果要使用其他数据库类型,可以使用的configure选项有:
--with-gdbm[=path] --with-ndbm[=path] --with-berkeley-db[=path] 如果没有指定path,Apache会在常规搜索路径中寻找头文件和库;明确地指定path会引导Apache到path/libpath/include中寻找这些文件,另外,path可以指定特定的头文件和库的路径,并用冒号隔开。 Suexec
Apache包含了一个叫suexec的支持程序,可以隔离用户的CGI程序。但是,如果suexec没有被正确配置,会引发严重的安全问题,使用这个功能以前,应该仔细阅读和斟酌suexec documentation。


编译
执行这个命令就可以编译Apache了
$ make

请耐心等候,因为对一个基本的配置的编译,在Pentium III/Linux 2.2上需要运行3分钟左右,实际需要的时间因你的硬件和选择的模块数量会有很大不同。


安装
现在可以在PREFIX目录(参见上述的--prefix参数)下安装包了,执行:
$ make install

如果是升级,安装程序不会覆盖你的配置文件和文档。


配置
接着,通过修改PREFIX/conf/下的配置文件,来配置Apache HTTP服务器。
$ vi PREFIX/conf/httpd.conf

docs/manual/有Apache使用手册,http://httpd.apache.org/docs-2.0/有完整的配置指令参考。


测试
现在,可以执行这个命令立即启动你的Apache HTTP服务器:
$ PREFIX/bin/apachectl start

你应该可以用URL http://localhost/来请求你的第一个网页了,这个网页位于DocumentRoot目录下,通常是PREFIX/htdocs/。随后,可以这样停止服务器:
$ PREFIX/bin/apachectl stop


————————————————————————————————

特别声明:--

一、本文为原创,著作权及使用权为(作者笔名:闪电cto)本人所有。 &shy;

二、本文首发于运维网个人博客(http://xudeqiang.blog.运维网.com)。  &shy;

三、本文只供互联网上的读者分享,不供共享范畴,希知。 &shy;

四、未经许可严禁对本文作修改、节选、断章性质的处理。 &shy;

五、可转载,但必须注明原文章首发的出处网址,及文章作者,严禁复制。 &shy;

六、如若转摘用于杂志网络媒体新闻,必须通知作者得到允许后方可,需收稿费。&shy;

七、作者联系信息:QQ:306718122   邮箱levinboy@foxmail.com

——————————————————————————————

充值:http://shop36273983.taobao.com/

贝贝全团购网:http://www.beibeiquan.com






运维网声明 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-640987-1-1.html 上篇帖子: Apache配置文件中Order Allow Deny笔记心得 下篇帖子: RedHat Linux5下apache+svn+trac配置手册(二)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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