Hi 大家好,我是钟义林,今天安装一个apache2.4.9,你可以从httpd.apache.org直接下载。
下面我参考一下官方文档,简单翻译了一下,见笑,我写了个安装笔记,那么开始吧。
编译Apache httpd:
要求
APR和APR-使用率
请确保您已APR和APR-使用率已经安装在系统上。
如果你不这样做,或者宁愿不使用系统提供的版本,从同时下载APR和APR-使用率的最新版本的Apache APR,
解开他们进入./ srclib /apr和./srclib/apr-util (是确保目录名称不具有版本号,例如,APR分配必须在./srclib/apr)并使用。
./configure's --with-included-apr 选项。在某些平台上,可能需要安装相应的-dev包,让httpd的建立对你的安装APR和APR-Util.
Perl兼容的正则表达式库(PCRE)
需要这个库,但不再捆绑的httpd。从下载的源代码http://www.pcre.org, 或安装一个端口或包装。
如果你的编译系统无法找到使用的PCRE安装了PCRE-config脚本建立,指向它的- with-pcre的参数。
在某些平台上,可能需要安装相应的-dev 包,允许httpd对你创建安装PCRE副本。
磁盘空间
请确保您有可在至少50 MB 临时可用磁盘空间。安装后,服务器占用大约10 MB的磁盘空间。
实际的磁盘空间要求不同,根据您选择的配置选项,任何第三方模块,并且,当然,该网站或网站,你必须在服务器上的大小。
ANSI-C 编译器和构建系统
请确保您有装有ANSI-C编译器。在GNU C编译器(GCC)的自由软件基金会(FSF) 的建议。如果你没有GCC,那么要确保你的供应商的编译器符合ANSI标准。
此外,你的PATH中必须包含指向基本编译工具
精确的计时
HTTP协议的元素被表示为一天中的时间。因此,它的时间来调查你的系统上设置一些时间同步设备。
通常情况下, 用ntpdate或xntpd中的程序用于此目的是基于网络时间协议(NTP)。
请参见NTP主页关于NTP的软件和公共时间服务器的详细信息。
Perl 5 [可选]
对于一些像支持脚本的apxs或dbmmanage(这是用Perl写的)Perl的解释器5是必需的(版本5.003或更高版本就足够了)
。如果您有多个Perl解释器(例如,一个系统范围的安装Perl 4,和你自己安装的Perl 5中),
建议您使用 了- with-perl的选项(见下文),以确保正确的使用通过配置。如果没有的Perl 5解释是由发现 的configure脚本,
您将无法使用受影响的支持脚本。当然,你仍然可以建立并使用Apache httpd的。
配置源代码树
下一步是配置Apache源代码树为你的特定平台和个人需求。这是通过使用脚本配置包含在发布的根目录。
(开发人员下载Apache源代码树的未发行的版本将需要有 autoconf的和libtool的安装将需要运行buildconf即可进行下一个步骤之前,这是没有必要的官方版本。)
要使用所有默认选项配置源代码树,只需键入。/ configure的。要更改默认的选项,配置接受各种变量和命令行选项。
最重要的选项是位置-前缀 ,其中Apache是稍后安装,因为Apache必须配置这个位置才能正常工作。文件的位置的更多微调控制是可能的额外配置选项。
此外,在这一点上,您可以指定哪些功能要包含在Apache中启用和禁用模块。阿帕奇配备了一个广泛的模块默认包含的。
他们将被编译为 共享对象(DSO)是它可以在运行时加载或卸载。您也可以选择通过选项静态编译的模块 --enable- module =static .
附加模块使用已启用 启用--enable-module,其中 模块与模块的名称 mod_个字符串,删除和转换为破折号任何下划线。同样,你可以禁用模块与 -禁用- 模块选项。
使用这些选项时,因为要小心配置不能警告你,如果你指定的模块不存在,它会简单地忽略这个选项。
此外,有时需要提供 的configure脚本关于编译器的位置,库或头文件的额外信息。
这是通过任一环境变量或命令行选项来进行配置。欲了解更多信息,请参见 配置手册页。或调用 配置使用帮助-选项。./configure --help
为了让你对什么有一个简单的印象,这里是一个典型的例子,它编译为Apache的安装 /sw/pkg/apache 的一个特定的编译器和标志加上两个额外的模块 mod_ldap模块和 mod_lua:
$ CC="pgcc" CFLAGS="-O2" \
./configure --prefix=/sw/pkg/apache \
--enable-ldap=shared \
--enable-lua=shared
当配置运行会需要几分钟来测试的功能系统上的可用性,并建立Makefile文件稍后将被用来编译服务器。
在所有不同的细节配置可用的选项上配置手册页。
现在,你可以建立它只需运行命令形成的Apache包的各个部分:
创建 编译
$ make
安装
现在,是时候下的安装配置安装包前缀(参见-前缀上面的选项)运行:
$ make install
这一步通常需要root权限,因为 前缀通常是受限制的写权限的目录。
如果是升级,安装不会覆盖你的配置文件或文档。
定制
接下来,您可以通过编辑自定义您的Apache HTTP服务器的配置文件下 PREFIX/conf/.
vi PREFIX/conf/httpd.conf
看看Apache的手动下 PREFIX /文档/手动/或咨询http://httpd.apache.org/docs/2.4/
为最新版本的手册,并提供完整的参考配置指令。
测试
现在你可以开始通过立即运行你的Apache HTTP服务器:
$ PREFIX/bin/apachectl -k start
那么你应该能够通过URL来请求你的第一个文档 http://localhost/.
您所看到的网页是位于下的 DocumentRoot,这通常是PREFIX/htdocs/.然后停止通过再次运行服务器:
$ PREFIX/bin/apachectl -k stop
升级
在升级的第一步是阅读发行公告及文件变更源分布地发现,可能会影响你的网站的任何更改。当主版本号的变化(例如,从2.0到2.2或2.2~2.4),
有可能会在编译时的主要差异和运行时配置,将需要手动调整。所有的模块也需要升级,以适应变化的模块API中。
从一个小版本升级到下一个(例如,从2.2.55到57年2月2日)更容易。在make install的 过程不会覆盖任何现有文件,日志文件,或配置文件。
此外,开发人员尽一切努力,以避免不兼容的改变 配置选项,运行时配置,或次要版本的模块API。在大多数情况下,你应该能够使用相同的配置命令行,相同的配置文件,所有的模块应能继续工作。
跨小版本升级,通过查找文件开始 的config.nice在构建你 的服务器安装的目录,或者在源代码树的根目录为你的旧安装。
这将包含具体 配置您用来配置源代码树的命令行。然后从一个版本升级到下一个,你只需要复制的config.nice文件的新版本的源代码树,编辑进行任何所需的更改,然后运行:
$ ./config.nice
$ make
$ make install
$ PREFIX/bin/apachectl -k graceful-stop
$ PREFIX/bin/apachectl -k start
########################################################################
你应该总是把它投入生产之前测试新版本在您的环境。
例如,您可以通过使用不同的安装和运行新版本的旁边旧的前缀-和不同的端口
(通过调整听指令)做最后的升级前测试任何不兼容性。
#############################################################################
$ ./config.nice --prefix=/home/test/apache --with-port=90
第三方软件包
大量第三方提供的Apache HTTP服务器上的特定平台上安装自己的打包发行。这包括各种Linux发行版,各种第三方Windows软件包的Mac OS X,Solaris和许多更多。
我们的软件许可证,不仅允许,而且鼓励,这种再分配。但是,它导致一种情况,在您安装的服务器的配置布局和默认值可能会有所不同从什么是文件中所述。
虽然不幸,这种情况不太可能很快改变。
一个这些第三方distrubutions的描述保持在HTTP服务器的wiki,并应反映这些第三方发行的当前状态。不过,你需要熟悉一下您的特定平台的软件包管理和安装程序。
Apache如何开始
如果听 的配置文件中指定为默认的80(或1024以下的任何其他端口),那么就必须有root权限才能启动Apache,以便它可以绑定到这个特权端口。一旦服务器启动,并进行了一些初步的活动,如打开它的日志文件,将推出几个 孩子里面做的监听和来自客户端的请求应答的工作流程。主要的httpd 进程继续作为root用户运行,但子进程运行作为一个弱势的用户。这是由选定的控制的 多处理模块。
调用的推荐方法的httpd 可执行文件是使用的apachectl控制脚本。此脚本设置一些环境变量所必需的 httpd的,以在某些操作系统中正常工作,然后调用httpd的二进制文件。 的apachectl将通过任何命令行参数,所以任何httpd的选项也可能与使用 的apachectl。您也可以直接编辑 的apachectl通过改变脚本的HTTPD 变量接近顶部到指定的正确位置 的httpd二进制文件和你想成为的任何命令行参数总是存在。
第一件事httpd的不被调用时,它是定位和读取配置文件 httpd.conf中。此文件的位置设置在编译时间,但有可能使用在运行时指定它的位置 -F命令行选项,如
/ usr/local/apache2/bin/apachectl -F / usr/local/apache2/conf/httpd.conf
现在开始安装apache
首先下载 apache的安装包
wget http://httpd.apache.org/[preferred]/httpd/httpd-2.4.9.tar.gz
wget http://mirror.bit.edu.cn/apache//apr/apr-1.5.0.tar.gz
wget http://apache.fayea.com/apache-mirror//apr/apr-util-1.5.3.tar.gz
解压缩前安装 apache所需要的服务包 这里用yum来安装就好 yum install gcc gcc-c++ pcre-devel -y (如果你没有安装ntpdate随便也装上)
安装apr
tar zxvf apr-1.5.0.tar.gz && tar zxvf apr-util-1.5.3.tar.gz
cd apr-1.5.0 /configure && make make install cd ../apr-util-1.5.3 && ./configure --with-apr=/usr/local/apr/ &&make && make install && cd ..
tar zxvf httpd-2.4.9.tar.gz && cd httpd-2.4.9
./configure --prefix=/usr/local/apache --with-apr=/usr/local/apr --with-apr-tui=/usr/local/apr --with-port=80 \
--with-ssl=/usr/bin/openssl --with-libxml2=/usr/include/libxml2
=========================================================================================================================
Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
--with-included-apr Use bundled copies of APR/APR-Util
--with-apr=PATH prefix for installed APR or the full path to
apr-config
--with-apr-util=PATH prefix for installed APU or the full path to
apu-config
--with-pcre=PATH Use external PCRE library
--with-port=PORT Port on which to listen (default is 80)
--with-sslport=SSLPORT Port on which to securelisten (default is 443)
--with-distcache=PATH Distcache installation directory
--with-z=PATH use a specific zlib library
--with-libxml2=PATH location for libxml2
--with-lua=PATH Path to the Lua 5.1 prefix
--with-ssl=PATH OpenSSL installation directory
--with-mpm=MPM Choose the process model for Apache to use by
default. MPM={event|worker|prefork|winnt} This will
be statically linked as the only available MPM
unless --enable-mpms-shared is also specified.
--with-module=module-type:module-file
Enable module-file in the modules/<module-type>
directory.
--with-program-name alternate executable name
--with-suexec-bin Path to suexec binary
--with-suexec-caller User allowed to call SuExec
--with-suexec-userdir User subdirectory
--with-suexec-docroot SuExec root directory
--with-suexec-uidmin Minimal allowed UID
--with-suexec-gidmin Minimal allowed GID
--with-suexec-logfile Set the logfile
--with-suexec-safepath Set the safepath
--with-suexec-umask umask for suexec'd process
======================================================================================================================
make && make install
/usr/local/apache/bin/apachectl -k start (开启)
lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
httpd 54324 root 4u IPv6 80431 0t0 TCP *:http (LISTEN)
httpd 54325 daemon 4u IPv6 80431 0t0 TCP *:http (LISTEN)
httpd 54326 daemon 4u IPv6 80431 0t0 TCP *:http (LISTEN)
httpd 54327 daemon 4u IPv6 80431 0t0 TCP *:http (LISTEN)
/usr/local/apache/bin/apachectl -k stop (关闭)
/usr/local/apache/bin/apachectl -F /usr/local/apache/conf/httpd.conf
httpd: illegal option -- F
Usage: /usr/local/apache/bin/httpd [-D name] [-d directory] [-f file]
[-C "directive"] [-c "directive"]
[-k start|restart|graceful|graceful-stop|stop]
[-v] [-V] [-h] [-l] [-L] [-t] [-T] [-S] [-X]
Options:
-D name : define a name for use in <IfDefine name> directives
-d directory : specify an alternate initial ServerRoot
-f file : specify an alternate ServerConfigFile
-C "directive" : process directive before reading config files
-c "directive" : process directive after reading config files
-e level : show startup errors of level (see LogLevel)
-E file : log startup errors to file
-v : show version number
-V : show compile settings
-h : list available command line options (this page)
-l : list compiled in modules
-L : list available configuration directives
-t -D DUMP_VHOSTS : show parsed vhost settings
-t -D DUMP_RUN_CFG : show parsed run settings
-S : a synonym for -t -D DUMP_VHOSTS -D DUMP_RUN_CFG
-t -D DUMP_MODULES : show all loaded modules
-M : a synonym for -t -D DUMP_MODULES
-t : run syntax check for config files
-T : start without DocumentRoot(s) check
-X : debug mode (only one worker, do not detach)