热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Apache服务器的安装,配置和测试方法

Apache可以从ApacheSoftwareFoundationdownloadsite及其镜像站点下载。版本号缀有alpha的是预测试版本,其运行可能正常也可能不正常;缀有beta的是仍需要测试和纠错的较可靠的版本。要下载最好的ApacheHTTPServer的发行版,就应该选择最新的,而且文件

Apache可以从Apache Software Foundation download site及其镜像站点下载。

版本号缀有alpha的是预测试版本,其运行可能正常也可能不正常;缀有beta的是仍需要测试和纠错的较可靠的版本。要下载最好的Apache HTTP Server的发行版,就应该选择最新的,而且文件名中既没有alpha也没有beta的版本。

下载完毕后,尤其是从镜像站点下载的,应该对下载来的tar包作PGP签名校验,以确保其完整而且未被篡改过。校验有两个步骤,第一步,必须从Apache distribution site获得一个密钥(KEYS)(为确保此密钥文件本身未被篡改,使用Apache早先发行版中的或者导入来自公共密钥服务器的密钥也许是个好办法),用以下命令导入到你的个人密钥环中(可能会因你的PGP版本有所不同):

$ pgp

$ 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 "Martin Kraemer ".

也可能会看见“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版本的开发者,需要装有autoconf和libtool,并执行buildconf,对于官方发行版则没必要)。

简单执行./configure可以用所有的默认值设置代码树,同时./configure可以接受命令行参数以改变默认值。通常,环境变量要预先设置,其他选项可以跟在./configure后面。除了许多迎合你的需求的选项,最重要的选项是指示Apache应该被装在哪个目录的目录前缀(prefix),因为Apache需要这个目录以正常运作。

为了让你对能指定什么有一个简单的印象,此例演示编译Apache,用了一个特定的编译器及其编译参数,而且允许今后通过DSO机制动态装载两个附加的模块modules mod_rewrite和mod_speling:

$ CC="pgcc" CFLAGS="-O2" \
./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=...

连接器的库位置信息("-L" and "-l"参数)

INCLUDES=...

头文件的搜索目录("-Idir").

TARGET=... [Default: apache]

目标执行文件名

NOTEST_CPPFLAGS=...

NOTEST_CFLAGS=...

NOTEST_LDFLAGS=...

NOTEST_LIBS=...

这些参数与不带NOTEST的同名参数功能相同,但是,它们仅在autoconf执行功能测试以后才起作用,如此就允许包含以后编译时必须的而在功能测试时会出错的参数。

SHLIB_PATH=...

编译器和连接器共享的库路径

autoconf的输出参数

--help

显示所有有效参数的用法,而并不实施任何设置

--quiet

阻止一般的"checking..."信息的出现

--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是模块化的服务器,核心服务器种只包含了功能最常用的模块,而扩展功能由其他模块提供。设置过程中,你必须指定需要包含的模块。文档中有模块清单备查,其中状态为"Base"的模块会被默认地包含进核心服务器,如果你不需要包含某个模块(比如mod_userdir),则必须明确地禁用它;其他状态的模块(比如mod_expires),也必须明确启用以使之包含进核心服务器。

Apache有两种使用模块的方法,其一是永久性包含进核心;如果操作系统支持动态共享对象(DSO),而且能为autoconf所检测,则模块还可以被动态编译。DSO模块的存储是独立与核心的,可以被核心使用由mod_so模块提供的运行时刻配置指令包含或排除。如果编译中包含有任何动态模块,则mod_so模块会被自动包含进核心。如果希望核心能够装载DSO,而不实际编译任何动态模块,需要明确指定--enable-so。

--enable-MODULE[=shared]

编译并包含模块MODULEMODULE是文档中去掉"_module"的模块名。要将一个模块编译成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="dav info"

另外,可以用关键字all或most一次性包含“所有的”或者“大多数”模块,然后再用--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_dbm和 mod_rewrite中的DBM RewriteMap使用简单的 键/值数据库来实现信息快速检索。Apache内置了支持SDBM的源代码,所以数据库总是被支持的。如果要使用其他数据库类型,可以使用的configure选项有:

--with-gdbm[=path]

--with-ndbm[=path]

--with-berkeley-db[=path]

如果没有指定path,Apache会在常规搜索路径中寻找头文件和库;明确地指定path会引导Apache到path/lib和path/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


推荐阅读
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • 禁止程序接收鼠标事件的工具_VNC Viewer for Mac(远程桌面工具)免费版
    VNCViewerforMac是一款运行在Mac平台上的远程桌面工具,vncviewermac版可以帮助您使用Mac的键盘和鼠标来控制远程计算机,操作简 ... [详细]
  • 本文详细介绍了云服务器API接口的概念和作用,以及如何使用API接口管理云上资源和开发应用程序。通过创建实例API、调整实例配置API、关闭实例API和退还实例API等功能,可以实现云服务器的创建、配置修改和销毁等操作。对于想要学习云服务器API接口的人来说,本文提供了详细的入门指南和使用方法。如果想进一步了解相关知识或阅读更多相关文章,请关注编程笔记行业资讯频道。 ... [详细]
  • 生成对抗式网络GAN及其衍生CGAN、DCGAN、WGAN、LSGAN、BEGAN介绍
    一、GAN原理介绍学习GAN的第一篇论文当然由是IanGoodfellow于2014年发表的GenerativeAdversarialNetworks(论文下载链接arxiv:[h ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
author-avatar
婧氏橙奂
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有