源码编译安装httpd-2.4.9|笔记

Hi 你们好,我是钟义林,今天安装一个apache2.4.9,你能够从httpd.apache.org直接下载。c++

下面我参考一下官方文档,简单翻译了一下,见笑,我写了个安装笔记,那么开始吧。正则表达式


编译Apache httpd:
apache

要求服务器

APR和APR-使用率网络

请确保您已APR和APR-使用率已经安装在系统上。less

若是你不这样作,或者宁愿不使用系统提供的版本,从同时下载APR和APR-使用率的最新版本的Apache APR,ide

解开他们进入./ 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)


wKioL1Mz_J_CwskoAAB1p293-4s982.jpg


/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)

相关文章
相关标签/搜索