Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。其在Linux平台上,结合Mysql,Php形成的LAMP网站架构是一个强大的Web应用程序平台,并且因其低廉的成本,高效的性能受到中小型企业的强烈追捧。
本篇将为大家讲述如何部署一台Apache服务器。
环境:
1
2
3
4
5
6
7
8
9
<code>CentOS6.4 x86_64位 采用最小化安装,系统经过了基本优化</code>
<code>selinux为关闭状态,iptables为无限制模式</code>
<code>ip:192.168.1.113</code><code>/24</code>
<code>apache版本:httpd-2.4.6</code>
<code>apr版本:apr-1.4.8</code>
<code>apr-util版本:apr-util-1.5.2</code>
<code>pcre版本:pcre-7.8</code>
<code>源码包存放位置:</code><code>/server/tools</code>
<code>源码包编译安装位置:</code><code>/etc/local/</code><code>软件名称</code>
一、准备工作
1、开发环境部署
因为本次实验中系统是最小化安装的,所以在安装apache之前需要先安装开发环境和依赖包。
<code>[root@c64-web ~]</code><code># yum groupinstall "Development tools" "Server Platform Development" -y #安装这两个开发环境的软件包组</code>
<code>[root@c64-web ~]</code><code># yum install pcre* -y #安装pcre兼容的正则表达式</code>
由于我们安装的httpd-2.4.6版本比较新,因此默认开发环境包中自带的apr包版本比较低,只能支持2.2.x系列的httpd版本,而这里至少要1.4版本以上的apr才被支持。因此我们需要先编译安装apr才行。
注意:apache2.2.x版本,只要安装了系统的默认开发环境包组,就不需要再安装apr了。
apr介绍
Apache可移植运行时( Apache Portable Runtime,简称APR),它是Apache HTTP服务器的支持库,提供了一组映射到下层操作系统的API。APR的目标则是希望安全合并所有的能够合并的代码而不需要牺牲性能,因此Apache使用这个之后可以有效的提高Apache的静态页面的处理能力。
apr安装
<code>[root@c64-web ~]</code><code># cd /server/tools/ #首先我们要先进到存放源码的目录</code>
<code>[root@c64-web tools]</code><code># wget http://apache.dataguru.cn/apr/apr-1.4.8.tar.gz #下载apr源码包</code>
<code>[root@c64-web tools]</code><code># tar zxf apr-1.4.8.tar.gz #解压源码包</code>
<code>[root@c64-web tools]</code><code># cd apr-1.4.8</code>
<code>[root@c64-web apr-1.4.8]</code><code># ./configure --prefix=/usr/local/apr #编译前配置,并指定安装目录,方便维护</code>
<code>[root@c64-web apr-1.4.8]</code><code># make #执行编译</code>
<code>[root@c64-web apr-1.4.8]</code><code># make install #执行安装</code>
<code>执行编译和安装的过程我们可以缩减为下面一条命令即可</code>
<code>[root@c64-web tools]</code><code># make&&make install #该命令表示,当执行make编译成功后接着执行make install进行安装</code>
仅仅装了apr是不够的,这里还需要安装apr-util这个开发包。
为什么呢?
一般情况下,我们很容易把APR开发包理解为仅仅是一个开发包,不过事实上并不是如此。目前,完整的APR实际上包含了三个开发包:apr、apr-util以及apr-iconv,每一个开发包分别独立开发,并拥有自己的版本。而apr-iconv在apache安装时暂不涉及,在以后tomcat调优时会涉及到这个开发包,到时再关注即可。因此,下面我们就继续开始安装apr-util。
<code>[root@c64-web apr-1.4.8]</code><code># cd ..</code>
<code>[root@c64-web tools]</code><code># wget http://apache.dataguru.cn/apr/apr-util-1.5.2.tar.gz</code>
<code>[root@c64-web tools]</code><code># tar zxf apr-util-1.5.2.tar.gz</code>
<code>[root@c64-web tools]</code><code># cd apr-util-1.5.2</code>
<code>[root@c64-web apr-util-1.5.2]</code><code># ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr #因为apr-util依赖于apr,因此这里需要指定apr的安装路径</code>
<code>[root@c64-web apr-util-1.5.2]</code><code># make&&make install #这里用上面提到的快捷命令</code>
2、源码包验证
开发环境搞定之后,就要准备apache的源码包了。我们可以从apache的官网或者镜像站点进行下载。同时我们还需要下载apache的公钥和数字签名文件,以便实现对源码包一致性的验证,确保包的安全性。
<code>[root@c64-web apr-util-1.5.2]</code><code># cd ..</code>
<code>[root@c64-web tools]</code><code># wget http://www.eu.apache.org/dist/httpd/httpd-2.4.6.tar.gz</code>
<code>[root@c64-web tools]</code><code># wget http://www.eu.apache.org/dist/httpd/httpd-2.4.6.tar.gz.asc</code>
<code>[root@c64-web tools]</code><code># wget http://www.apache.org/dist/httpd/KEYS</code>
这里我们采用下面这种方式来进行包验证
<code>% gpg --</code><code>import</code> <code>KEYS</code>
<code>% gpg --verify httpd-2.2.8.</code><code>tar</code><code>.gz.asc</code>
验证结果如下:
10
11
12
13
14
15
16
<code>[root@c64-web tools]</code><code># gpg --import KEYS #用gpg命令导入公钥</code>
<code>gpg: key 2719AF35: </code><code>"Ben Laurie <[email protected]>"</code> <code>not changed</code>
<code>gpg: key A99F75DD: </code><code>"Rodent of Unusual Size <[email protected]>"</code> <code>not changed</code>
<code>……</code>
<code>gpg: key 6D5954FA: </code><code>"Eric Covener <[email protected]>"</code> <code>not changed</code>
<code>gpg: Total number processed: 64</code>
<code>gpg: w</code><code>/o</code> <code>user IDs: 4</code>
<code>gpg: unchanged: 60</code>
<code>[root@c64-web tools]</code><code># gpg --verify httpd-2.4.6.tar.gz.asc #验证httpd-2.4.6.tar.gz.asc</code>
<code>gpg: Signature made Tue 16 Jul 2013 12:44:25 AM CST using RSA key ID 791485A8</code>
<code>gpg: Good signature from </code><code>"Jim Jagielski (Release Signing Key) <[email protected]>"</code> <code>#出现这一行说明这个签名是有效的</code>
<code>gpg: aka </code><code>"Jim Jagielski <[email protected]>"</code>
<code>gpg: aka </code><code>"Jim Jagielski <[email protected]>"</code>
<code>gpg: WARNING: This key is not certified with a trusted signature! </code><code>#这个警告是因为本地密钥库不信任该公钥</code>
<code>gpg: There is no indication that the signature belongs to the owner.</code>
<code>Primary key fingerprint: A93D 62EC C3C8 EA12 DB22 0EC9 34EA 76E6 7914 85A8</code>
如果gpg --verify的命令输出信息和上面相似,就可以确信http-2.4.6.tar.gz确实来自Apache。这里可以忽略上面表明公钥不可信的警告。因为保证公共密钥签名来自所有者的惟一方法是,密钥的所有者亲自把磁盘上的密钥交给你。不过,采取上面的步骤后,我们已经可以在某种程度上确信下载的http-2.4.6.tar.gz可信了。
二、开始安装
所有准备工作都做好了,下面开始安装apache
17
18
<code>[root@c64-web tools]</code><code># tar zxf httpd-2.4.6.tar.gz</code>
<code>[root@c64-web tools]</code><code># cd httpd-2.4.6</code>
<code>[root@c64-web httpd-2.4.6]</code><code># ./configure \</code>
<code>--prefix=</code><code>/usr/local/apache-2</code><code>.4.6 \ </code><code>#配置文件目录</code>
<code>--with-apr=</code><code>/usr/local/apr</code><code>\ </code><code>#指定apr安装路径</code>
<code>--with-apr-util=</code><code>/usr/local/apr-util</code><code>\ </code><code>#指定apr-util安装路径</code>
<code>--with-pcre \ </code><code>#支持perl的正则表达式</code>
<code>--</code><code>enable</code><code>-so \ </code><code>#启用动态模块加载</code>
<code>--</code><code>enable</code><code>-ssl \ </code><code>#基于ssl加密传输</code>
<code>--</code><code>enable</code><code>-cgi \ </code><code>#开启CGI脚本</code>
<code>--</code><code>enable</code><code>-rewrite \ </code><code>#允许URL重写</code>
<code>--with-zlib \ </code><code>#支持压缩</code>
<code>--</code><code>enable</code><code>-deflate \ </code><code>#支持网页压缩</code>
<code>--</code><code>enable</code><code>-expires \ </code><code>#支持网页缓存</code>
<code>--</code><code>enable</code><code>-headers \ </code><code>#提供允许对HTTP请求头的控制</code>
<code>--</code><code>enable</code><code>-modules=most \ </code><code>#支持大多数模块</code>
<code>--</code><code>enable</code><code>-mpms-shared=all \ </code><code>#mpm模块的动态切换</code>
<code>--with-mpm=worker </code><code>#让apache以worker方式运行</code>
以上是生产环境中常用的一些编译参数
此处提供给你们复制,方便快捷执行命令
<code>[root@c64-web httpd-2.4.6]</code><code># ./configure --prefix=/usr/local/apache-2.4.6 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --enable-deflate --enable-expires --enable-headers --enable-modules=most --enable-mpms-shared=all --with-mpm=worker #此处为方便你们复制执行用的,如执行了上面的就不要再执行这个了</code>
<code>[root@c64-web tools]</code><code># make&&make install</code>
这样我们的apache已经编译安装完成了,对于编译时执行的诸多参数详解,我会在下篇博文进行详细的讲述,本篇不做熬述。
三、启动配置
1、创建目录软链接
apache安装完成之后,我们要先为编译安装好的目录添加软链接。此操作在生产环境中为重要调优参数,添加这条软链接的目的有两点:1、方便人类使用。2、便于以后升级版本。
<code>[root@c64-web httpd-2.4.6]</code><code># ln -s /usr/local/apache-2.4.6 /usr/local/apache</code>
2、启动服务
创建好目录软链接之后,我们就可以开始启动apache服务了。如果我们是yum或者rpm安装的话,我们可以直接用service httpd start来进行服务启动。因为我们是编译安装的,所以此处我们要这样启动。
<code>[root@c64-web httpd-2.4.6]</code><code># cd /</code>
<code>[root@c64-web /]</code><code># /usr/local/apache/bin/apachectl -t #首先我们要检查语法</code>
<code>AH00557: httpd: apr_sockaddr_info_get() failed </code><code>for</code> <code>c64-web</code>
<code>AH00558: httpd: Could not reliably determine the server</code><code>'s fully qualified domain name, using 127.0.0.1. Set the '</code><code>ServerName' directive globally to suppress this message</code>
<code>Syntax OK</code>
此时,我们可以看到在检查语法时,报了两个提示。不过这两个提示不影响,我们的服务器启动和运行。在本篇暂时不讲,等到后面的排错篇,我会详细给大家讲解此问题的解决方案。因此,继续执行开启命令
<code>[root@c64-web /]</code><code># /usr/local/apache/bin/apachectl start</code>
启动之后,我们用下面的两个命令分别查看端口是否开启,服务进程是否启用。
<code>[root@c64-web /]</code><code># netstat -lnt|grep 80</code>
<code>tcp 0 0 :::80 :::* LISTEN</code>
<code>[root@c64-web /]</code><code># ps -ef|grep httpd</code>
<code>root 2009 1 0 05:14 ? 00:00:00 </code><code>/usr/local/apache-2</code><code>.4.6</code><code>/bin/httpd</code>
<code>daemon 2010 2009 0 05:14 ? 00:00:00 </code><code>/usr/local/apache-2</code><code>.4.6</code><code>/bin/httpd</code>
<code>daemon 2011 2009 0 05:14 ? 00:00:00 </code><code>/usr/local/apache-2</code><code>.4.6</code><code>/bin/httpd</code>
<code>daemon 2012 2009 0 05:14 ? 00:00:00 </code><code>/usr/local/apache-2</code><code>.4.6</code><code>/bin/httpd</code>
<code>root 2104 1928 0 05:14 pts</code><code>/0</code> <code>00:00:00 </code><code>grep</code> <code>httpd</code>
由此看出,我们的服务已经正常启动了,此时我们用客户端访问下我们的apache服务器,已经可以实现正常访问。
<a href="http://blog.51cto.com/attachment/201311/061046738.png" target="_blank"></a>
3、优化启动
大家应该感觉到上面的启动项有点很繁琐的感觉了,在这里我们可以对apache启动的控制命令进行优化。优化的方法有3种。
第一种:修改PATH变量
我们可以通过把apache启动命令的目录加入到全局环境变量中去,这样就可以实现直接输入命令即可操作,无需带上一长串的路径了。
<code>[root@c64-web /]</code><code># echo 'export PATH=$PATH:/usr/local/apache/bin' >> /etc/profile</code>
<code>[root@c64-web /]</code><code># tail -1 /etc/profile</code>
<code>export</code> <code>PATH=$PATH:</code><code>/usr/local/apache/bin</code>
第二种:拷贝命令
我们也可以拷贝apache的启动命令apachectl到系统启动目录下
<code>[root@c64-web /]</code><code># cp /usr/local/apache/bin/apachectl /etc/init.d/httpd</code>
第三种:添加软链接
我们还可以通过添加软链接的方式,将apache启动命令目录添加一条软链接到/etc/init.d/系统启动目录下
<code>[root@c64-web /]</code><code># ln -s /usr/local/apache/bin/apachectl /etc/init.d/httpd</code>
4、开机自启动
下面,我们就要实现apache服务的开机自启动了。开机自启动的实现也是有两种方式的
第一种:将httpd即apachectl命令加入到系统开机启动服务chkconf中(此种方法仅限优化启动中后两种操作者进行)
首先我需要对/etc/init.d/httpd文件稍作修改
<code>[root@c64-web /]</code><code># vi /etc/init.d/httpd #编辑此文件,在#!/bin/bash下面添加以下两行</code>
<code>#chkconfig:2345 10 90</code>
<code>#descrption:Activates/Deactivates Apache Web Server</code>
添加完成之后,
<code>[root@c64-web /]</code><code># chkconfig --add httpd #添加httpd服务到系统开机启动服务列表</code>
<code>[root@c64-web /]</code><code># chkconfig httpd on #设置httpd服务开机自启动</code>
<code>[root@c64-web /]</code><code># chkconfig --list httpd #从列表中查看httpd在不同级别的启动情况</code>
<code>httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off</code>
第二种:添加到开机启动配置文件/etc/rc.d/rc.local下
本方法对优化启动的3种方法都有效,不过你要注意你设置的httpd命令的路径。本例以优化启动的第二种方法为前提
<code>[root@c64-web /]</code><code># echo '#httpd start by sunsky in 20131104' >> /etc/rc.d/rc.local #添加注释,方便以后查看</code>
<code>[root@c64-web /]</code><code># echo '/etc/init.d/httpd start >/dev/null 2>&1' >> /etc/rc.d/rc.local</code>
<code>[root@c64-web /]</code><code># tail -2 /etc/rc.d/rc.local #添加完成后一定要看是否添加成功</code>
<code>#httpd start by sunsky in 20131104</code>
<code>/etc/init</code><code>.d</code><code>/httpd</code> <code>start ></code><code>/dev/null</code> <code>2>&1</code>
Apache服务器的部署到这里就彻底完工了!怎么样是不是很简单啊。中间有些操作我用了多种方式,是想告诉大家,在linux上,一个问题是有多种解决办法的,所以一定要多思考,多操作。下一篇博文,我将带大家一起了解apache的配置文件,编译参数和其他知识点的说明。
本文转自 aaao 51CTO博客,原文链接:http://blog.51cto.com/nolinux/1319750,如需转载请自行联系原作者