Linux下Apache+Tomcat+JK实现负载均衡和群集的完整过(2)

5.编译apache服务器

首先编译apache服务器。在编译之前需要执行其自带的检测配置脚本。对于不同发行版本的Linux,默认安装的库都有所差别,即便是同一个发行版本,由于用户安装软件的软件不同,也会导致系统内包含的库有所区别。因此apache作为开源服务器,在编译前需要了解系统的库安装情况,某些模块需要依赖于特定的库,如果这些库不存在,配置脚本将自动忽略这些库的编译。经过检测时候会生成合适的MakeFile文件。这里特别提醒一句,如果直接执行配置脚本,是不会编译额外的模块的,我们希望使用额外模块时,需要在运行配置脚本命令后加入参数,让其尽最大可能编译可用的库。关于这方面的介绍可以参阅我的另外一篇文章“Linux下编译apache服务器modules文件夹缺少模块(.so)的问题”()。下面进入apache服务器源码目录并执行配置脚本:

[root@lxp2 Downloads]# cd httpd-2.2.21   [root@lxp2 httpd-2.2.21]# ./configure --enable-so --enable-mods-shared=most  

如果配置过程中出现

configure: error: Cannot use an external APR with the bundled APR-util  

这样的错误信息,说明本机没有安装apr运行库,需要下载并安装。访问网址:,下载apr和apr-util:

下载apr和apr-util

解压apr和apr-util

[root@lxp2 Downloads]# tar -xf apr-1.4.5.tar.gz    [root@lxp2 Downloads]# tar -xf apr-util-1.3.12.tar.gz   

进入apr,并编译

[root@lxp2 Downloads]# cd apr-1.4.5   [root@lxp2 apr-1.4.5]# ls   apr-config.in  build.conf        helpers       memory         shmem   apr.dep        build-outputs.mk  include       misc           strings   apr.dsp        CHANGES           libapr.dep    mmap           support   apr.dsw        config.layout     libapr.dsp    network_io     tables   apr.mak        configure         libapr.mak    NOTICE         test   apr.pc.in      configure.in      libapr.rc     NWGNUmakefile  threadproc   apr.spec       docs              LICENSE       passwd         time   atomic         dso               locks         poll           user   build          emacs-mode        Makefile.in   random   buildconf      file_io           Makefile.win  README   [root@lxp2 apr-1.4.5]# ./configure  

生成了MakeFile后直接编译

[root@lxp2 apr-1.4.5]# ls   apr-1-config   buildconf         dso         locks          poll   apr-config.in  build.conf        emacs-mode  Makefile       random   apr.dep        build-outputs.mk  file_io     Makefile.in    README   apr.dsp        CHANGES           helpers     Makefile.win   shmem   apr.dsw        config.layout     include     memory         strings   apr.mak        config.log        libapr.dep  misc           support   apr.pc         config.nice       libapr.dsp  mmap           tables   apr.pc.in      config.status     libapr.mak  network_io     test   apr.spec       configure         libapr.rc   NOTICE         threadproc   atomic         configure.in      libtool     NWGNUmakefile  time   build          docs              LICENSE     passwd         user   [root@lxp2 apr-1.4.5]# make  

编译好之后使用root权限安装:

[root@lxp2 apr-1.4.5]# sudo make install  

然后使用类似的方法配置apr-util:

[root@lxp2 Downloads]# cd apr-util-1.3.12   [root@lxp2 apr-util-1.3.12]# ./configure --with-apr=/usr/local/apr  

编译apr-util:

[root@lxp2 apr-util-1.3.12]# make  

编译好之后使用root权限安装:

[root@lxp2 apr-util-1.3.12]# sudo make install  

当然如果你在配置apache服务器编译的时候没有提示缺少“APR”,请忽略上面关于APR编译的几步。

回到apache服务器源码所在目录,开始编译:

[root@lxp2 httpd-2.2.21]# make  

编译过程大概不到十分钟,完成之后使用root权限进行安装

[root@lxp2 httpd-2.2.21]# sudo make install  

如果不出意外,至此apache就安装成功了。来测试一下:

进入apache服务器的bin目录,并启动服务器:

[root@lxp2 httpd-2.2.21]# cd /usr/local/apache2/bin/   [root@lxp2 bin]# sudo ./apachectl start   httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName  

在本地打开浏览器,访问

如果出现“It Works!”则表示启动成功了

Apache启动成功

这里要注意一点就是Linux的防火墙问题。如果你的Linux服务器启动了防火墙,本地访问上面的网址是没有问题的,但如果其它计算机访问你的服务器有可能会连接失败。

出现这种情况的原因是防火墙将入站80端口封锁了。解决方法是将80端口加入到允许列表中:

防火墙

进入防火墙设置后,如果发现Firewall状态为Enabled,表示防火墙已启用,需要将WWW(HTTP)服务标记为信任,如果需要使用hhtps协议,还要将Secure WWW(HTTPS)服务也标记为信任。如下图所示:

允许HTTP和HTTPS

另外,此时如果有其他程序占用80端口也是会影响到apache服务器的,需要确保这个端口没有被占用。

还有我还要补充一点,在Mac OS中按照上述方法安装apache服务器是不行的。开始的时候我不想搭建Linux服务器,想到Mac OS也是类Unix的系统,操作命令什么的都一样,就先在Mac上实验了。结果安装上apache服务器后启动了,每次访问都提示505错误,service temporarily unavailable。经过查阅很多资料和尝试才发现,原来Mac系统中已经自带了apache服务器。具体应用是在“系统设置”中的“共享”功能。这个功能里有“Web共享”方式。其实现时使用的服务器就是apache。它采用的配置文件在/etc/httpd/目录中。这里的配置文件和自己安装的apache服务器配置文件冲突了,因此造成505错误。这一点需要注意。(注:我是用的Mac系统为Mac OS X Lion 10.7.2)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/ppzfj.html