📄 install.html
字号:
<div class="section">
<h2><a name="extract" id="extract">解压</a></h2>
<p>解压Apache httpd的tar包很简单:</p>
<div class="example"><p><code>
$ gzip -d httpd-<em>NN</em>.tar.gz<br />
$ tar xvf httpd-<em>NN</em>.tar
</code></p></div>
<p>这样就在当前目录下新建了一个包含发行版源代码的目录,必须<code>cd</code>进入这个目录以继续服务器的编译。</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="configure" id="configure">配置源代码树</a></h2>
<p>这一步是根据你的特定平台和个人需求配置源代码树。位于发行源代码根目录的<code class="program"><a href="./programs/configure.html">configure</a></code>脚本会完成这个步骤(对下载Apache CVS版源代码的开发者,需要装有<code>autoconf</code>和<code>libtool</code> ,并需要执行<code>buildconf</code> ,对于官方的发行版则没这个必要)。</p>
<p>要想用所有的默认值配置源代码树只要简单的执行 <code>./configure</code> 命令就可以了,同时<code class="program"><a href="./programs/configure.html">configure</a></code>还可以接受命令行参数以改变默认值。</p>
<p>最重要的选项是Apache安装目录的前缀:<code>--prefix</code> ,因为Apache需要知道这个目录才能正常运作。更多的微调选项请参考<a href="programs/configure.html#installationdirectories">配置选项详解</a>。</p>
<p>这样,你就可以通过在配置选项中指定要启用或禁用哪些<a href="mod/index.html">模块</a>来定制Apache的<a href="programs/configure.html#optionalfeatures">特性</a>。<a href="mod/module-dict.html#Status">Base</a>组的模块默认包含在Apache中。其他组的模块可以通过 <code>--enable-<var>module</var></code> 指令启用。其中<var>module</var>是模块名去掉"<code>mod_</code>"并将下划线转换成连字符后的字符串。你也可以使用 <code>--enable-<var>module</var>=shared</code> 指令将模块编译为可在运行时加载和卸载的<a href="dso.html">动态共享对象(DSO)</a>。同样的,你也可以使用 <code>--disable-<var>module</var></code> 指令禁用<a href="mod/module-dict.html#Status">Base</a>组的模块。注意,使用这些指令的时候<code class="program"><a href="./programs/configure.html">configure</a></code>不会对你拼写错误的模块发出警告说找不到某某模块,而只是简单的忽略这个选项。</p>
<p>另外,有时候还必须提供给<code class="program"><a href="./programs/configure.html">configure</a></code>脚本关于编译器、库、头文件位置的更多信息。这些可以通过环境变量或者命令行选项传递给<code class="program"><a href="./programs/configure.html">configure</a></code>脚本。要了解更多信息,请参考<code class="program"><a href="./programs/configure.html">配置源代码树</a></code>。</p>
<p>为了让你对能指定什么有一个简单的印象,此例演示编译Apache ,并将其安装在<code>/sw/pkg/apache</code>目录,指定了一个特定的编译器以及编译参数,而且允许今后将两个附加的模块<code class="module"><a href="./mod/mod_rewrite.html">mod_rewrite</a></code>和<code class="module"><a href="./mod/mod_speling.html">mod_speling</a></code>通过DSO机制在运行时动态加载:</p>
<div class="example"><p><code>
$ CC="pgcc" CFLAGS="-O2" \<br />
./configure --prefix=/sw/pkg/apache \<br />
--enable-rewrite=shared \<br />
--enable-speling=shared
</code></p></div>
<p><code class="program"><a href="./programs/configure.html">configure</a></code>需要运行几分钟,以测试指定的功能在你的系统中是否有效,并建立稍后编译时所需的许多Makefile文件。</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="compile" id="compile">编译</a></h2>
<p>运行以下命令你就可以编译Apache的各个部分了:</p>
<div class="example"><p><code>$ make</code></p></div>
<p>请耐心等候,因为对一个基本配置的编译,需要运行几分钟左右,实际需要的时间会因为你的硬件和选择的模块数量有很大不同。</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="install" id="install">安装</a></h2>
<p>现在可以在<em>PREFIX</em>目录(参见上述的 <code>--prefix</code> 参数)下安装了,执行:</p>
<div class="example"><p><code>$ make install</code></p></div>
<p>如果是升级,安装程序不会覆盖你的配置文件和文档。</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="customize" id="customize">配置</a></h2>
<p>接着,通过修改<code><em>PREFIX</em>/conf/</code>目录下的<a href="configuring.html">配置文件</a>,来配置Apache HTTP服务器。</p>
<div class="example"><p><code>$ vi <em>PREFIX</em>/conf/httpd.conf</code></p></div>
<p><a href="./index.html">docs/manual/</a>下有Apache使用手册,<a href="http://httpd.apache.org/docs/2.2/">http://httpd.apache.org/docs/2.2/</a>有最新的文档,你还可以查看完整的<a href="mod/directives.html">指令索引</a>。</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="test" id="test">测试</a></h2>
<p>现在,可以执行下述命令立即<a href="invoking.html">启动</a>你的Apache HTTP服务器:</p>
<div class="example"><p><code>$ <em>PREFIX</em>/bin/apachectl -k start</code></p></div>
<p>你应该可以用<code>http://localhost/</code>来请求你的第一个网页了,这个网页位于<code class="directive"><a href="./mod/core.html#documentroot">DocumentRoot</a></code>目录下,通常是<code><em>PREFIX</em>/htdocs/</code> 。随后,可以这样<a href="stopping.html">停止</a>服务器:</p>
<div class="example"><p><code>$ <em>PREFIX</em>/bin/apachectl -k stop</code></p></div>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="upgrading" id="upgrading">升级</a></h2>
<p>升级的第一步是阅读源代码目录中的发布公告(release announcement)和<code>CHANGES</code>文件以寻找可能会对你的站点产生影响的变化。如果主板本号的变化(例如1.3→2.0或2.0→2.2)表明编译时和运行时的配置发生了重大变化,需要手动调整,所有模块也需要升级以兼容新版本的模块API 。</p>
<p>小幅度的版本升级(例如:2.2.55→2.2.57)很容易。<code>make install</code> 的过程不会改写任何已经存在的文档、日志、配置文件。此外,开发者也会尽量兼容上一版本的<code class="program"><a href="./programs/configure.html">configure</a></code>选项、运行时配置、模块API 。大多数情况下,你将能够使用与上一版本完全相同的<code class="program"><a href="./programs/configure.html">configure</a></code>命令行和运行时配置,而你原来的所有模块也将正常工作。</p>
<p>如果你保存了上一次安装后<code>build</code>子目录中的<code>config.nice</code>文件,升级将更加平滑。这个文件精确地保存了所有对目录树进行配置的<code class="program"><a href="./programs/configure.html">configure</a></code>命令行。你只需要将<code>config.nice</code>文件复制到新的源代码目录树的根文件夹并进行你希望的修改后,然后运行下面的命令即可完成升级:</p>
<div class="example"><p><code>
$ ./config.nice<br />
$ make<br />
$ make install<br />
$ <em>PREFIX</em>/bin/apachectl -k graceful-stop<br />
$ <em>PREFIX</em>/bin/apachectl -k start<br />
</code></p></div>
<div class="warning">你应该总是在将新版本的Apache投入正式运行前,对这个新版本进行足够的、针对你的实际运行环境的测试。比如,你可以使用一个不同的 <code>--prefix</code> 设置将新版本安装在一个不同的目录,并使用<code class="directive"><a href="./mod/mpm_common.html#listen">Listen</a></code>指令在一个不同的端口监听。经过一段时间的测试以发现可能存在的问题,然后再做出最后的决定。</div>
</div></div>
<div id="footer">
<p class="apache">本文允许自由使用、分发、转载,但必须保留译者署名;详见:<a href="./translator_announcement.html#announcement">译者声明</a>。</p>
<p class="menu"><a href="./mod/index.html">模块索引</a> | <a href="./mod/directives.html">指令索引</a> | <a href="./faq/index.html">常见问题</a> | <a href="./glossary.html">词汇表</a> | <a href="./sitemap.html">站点导航</a></p></div>
</body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -