Web服务,也称WWW服务,是最常见的网络服务之一,用户通过网页浏览器可以轻松浏览Web服务器中的网页内容。目前较常见的Web服务器有运行在Windows环境中的IIS服务器和在几乎在各种平台都可以运行的Apache服务器。 Apache 音译为阿帕奇, Apache这个命名是根据北美当地的一支印第安部落而来,这支部落以高超的军事素养和超人的忍耐力著称,19世纪后半期对侵占他们领土的入侵者进行了反 抗。为了对这 支印第安部落表示敬仰之意,取该部落名称(Apache)作为服务器名。但一提到这个命名,这里还有流传着一段有意思的故事。因为这个服务器是在 NCSA httpd 服务器的基础之上,通过众人努力,不断地修正、打补丁(Patchy)的产物,被戏称为“A Patchy Server”(一个补丁服务器)。在这里,因为“Patchy”与“Apache”是谐音,故最后正式命名为“Apache Server”。 Apache 是最著名的开源软件之一,在Web服务器领域长期占据超过半数的份额。本文在Red Hat Enterprise Linux 4系统下安装配置Apache,并使用花生壳(Peanuthull)2008 for Linux实现动态域名访问Apache站点。 一、 在RHEL4中编译安装Apache RHEL4系统中默认安装了Apache服务器,软件包名称是httpd而不是apache,版本为2.0.52。我们可以用命令”rpm –e –nodeps httpd”先把这个旧版卸载掉,以防止即将安装的新版和旧版的安装目录文件发生冲突。 安装时采用编译安装的方式,此种方式相对RPM包安装会复杂一些,但是具有更大的自由度,可以根据自己的应用需要在编译之前对Apache服务器进行功能的定制。编译安装的主要步骤包括: 1. 获得Apache服务器的源码包 2. 确认具备编译所需的环境 3. 进行Apache的编译安装 1. 获得Apache服务器的源码包 首先需要下载Apache的源码包。Apache软件基金会(也就是Apache Software Foundation,简称为ASF)专门负责管理和维护Apache 项目,ASF的官方网站是http://www.apache.org 。http://httpd.apache.org/download.cgi 是ASF官网下载Apache的主页,这里列出了Apache的主要版本:1.X和2.X。当前最新也是最好的版本是2008-12-14日发布的 2.2.11版,我们需要下载的软件包是httpd-2.2.11.tar.gz(软件包名称是httpd而不是apache)。如下图: httpd-2.2.11.tar.gz包下载后,我们把它保存在/home/paopaobo/backup,大小有6M多。如下图: 2. 确认具备编译所需的环境 RHEL4系统中编译安装Linux需要一定的开发编译环境。我们可以用命令”rpm –qa | grep gcc”查询最重要的gcc软件包在系统中是否已经安装。结果是没有。那么可以通过命令”system-config-packages”运行RHEL4 提供的软件包管理程序安装完整的开发编译环境。如下图: 实际上”system-config-packages”这个命令就是调用了下图中所示的”Add/Remove Applications”: 运行命令后会先检查系统状态,然后在弹出的界面选中Development Tools进行Update,如下图: 接下来按照系统的提示插入安装所需的光盘既可,如下图: 耗时十几分钟,终于安装好所需的编译环境,如下图: 此时再次用命令”rpm –qa | grep gcc”查询,gcc软件包在系统中已经安装,如下图: 3. 进行Apache的编译安装 接下来正式进入编译过程。Apache服务器的编译安装采用标准的源代码编译安装步骤,主要包括: 1) 使用tar命令释放源代码安装包 2) 使用”./configure”命令进行编译前的配置工作 3) 使用make命令进行程序的编译 4) 使用make install命令将已经编译的文件安装到系统中 其中3)和4)可以合并完成。 下面按照步骤进行详细说明: 1)释放源码包文件 将下载保存在/home/paopaobo/backup的源码包复制到目录”/usr/local/src/”中,该目录通常用于保存需要编译的程序源代码。进入目录”/usr/local/src/”后可使用tar命令将源代码包释放,如下图: tar命令执行后会在当前目录下生成名为httpd-2.2.11的源代码目录,进入该目录可看到释放后的文件,如下图: 2)编译前的配置 在httpd-2.2.11的源代码目录中使用”./configure”命令进行编译前的配置工作,如下图: 命令为”./config –prefix=/usr/local/apache2 --enable-so --enable-rewrite”,含义如下: “–prefix”选项预指定Apache服务器程序将要安装到的系统目录,此处我们指定为” /usr/local/apache2”,从上图可见当前” /usr/local/”下并没有这个目录,该目录将在命令运行过程中被建立。 “--enable-so”选项设置Apache服务器可以使用动态加载模块功能,相当于Windows系统中的.dll文件,动态加载模块功能可节省系统内存资源。 “--enable-rewrite”选项设置Apache服务器具有rewrite功能,可实现对动态网页地址的重写。 ”./config” 命令的执行需要一定的时间,其间屏幕将显示配置过程信息。 3)编译服务器程序 配置完成后,执行make命令进行程序的编译,该过程真正的将程序源代码转换为可执行程序。 4)安装已编译完成的程序 得到可执行程序后的最后一步,就是用make install命令将已经编译完成的可执行程序安装到预指定的安装目录” /usr/local/apache2”中。 步骤3和4耗时很久,在这里我们把这两步一起执行,命令是”make;make install” ,如下图: 命令运行中同样会显示过程信息,时间上比”./config” 配置命令更长。 可以看到安装成功后” /usr/local/”中多了一个apache2目录,该目录包括了完整的源代码编译获得的Apache服务器程序,目录文件总大小约24M,如下图: 二、 在RHEL4中配置Apache 至此Apache就通过编译安装在系统的目录” /usr/local/apache2”中了,该目录称为Apache服务器的根目录。下面我们看看Apache服务器根目录中包含的子目录。 如上图,根目录” /usr/local/apache2”中包含以下目录: bin目录中包含了Apache服务器运行和管理所需的执行程序,其中httpd是服务器的执行程序,apachectl是服务程序的启动脚本。 lib目录中保存了Apache服务器运行所需的库文件。 conf目录用于保存Apache服务器的配置文件,其中httpd.conf是Apache服务器的主配置文件。 htdocs目录是Apache服务器的文档根目录,该目录将作为Web服务器的根目录。 manual目录中保存了Apache服务器的帮助手册文件,文件是网页格式的,可以通过访问Apache服务器中的” manual”目录阅读该目录下的帮助文件内容。 继续看,如上图,根目录” /usr/local/apache2”中还包含的目录有: man目录用户保存Apache服务器的手册页文件,文件被分别保存在man1和man8两个子目录中,可以使用man命令阅读指定的手册页文件查询目录的帮助信息。 logs目录用户保存Apache服务器的日志文件。 理解以上Apache服务器常用目录的功能有助于对服务器的管理。 接下来我们将httpd服务运行起来。 前面我们说过,bin目录中的apachectl是服务程序的启动脚本。进入bin目录后: “apachectl start”——启动httpd服务 “apachectl stop”——停止httpd服务 “apachectl restart”——重启httpd服务 更多命令参数:进入bin目录后,直接运行“apachectl”将显示帮助信息。 现在我们进入”/usr/local/apache2/bin”目录,用“apachectl start”启动httpd服务,如下图: 如果要使Apache服务器在Linux系统启动时自动运行,可以将Apache服务器的启动脚本apachectl的启动命令写入到/etc/rc.local文件,如下图: 在文件末尾添加启动命令”/usr/local/apache2/bin/apachectl start”,然后保存、退出,如下图: 启动了httpd服务后,我们在RHEL4本机已经可以访问到Apache服务器的测试页面内容。证明httpd服务的确已成功启动,如下图: 接着我们在局域网内另一台Windows XP Pro SP3上测试,却无法访问到192.168.0.10,如下图: 经过分析,不能访问的原因在于RHEL4的防火墙设置。用命令”system-config-securitylevel-tui”打开防火墙配置工具,在该界面中选择Customize进入防火墙设置界面,如下图: 在防火墙的设置界面中,选中WWW(HTTP)网络服务,允许网络中的其他计算机访问当前RHEL4主机的WWW网络服务,如下图: 该防火墙配置工具设置保存后是即时生效的,并将设置保存到文件中。 这时我们再回到局域网内另一台Windows XP上刷新浏览器页面,成功的访问到Apache服务器的测试页面,如下图: 最后我们说一下Apache服务器的配置文件”/usr/local/apache2/conf/httpd.conf”,前面提到过,httpd.conf是Apache服务器的主配置文件,如下图: 用vi打开httpd.conf,我们看到相当多的注释,如下图: 注释行以”#”开头,其内容只起到说明和注释作用,对服务器的配置不起作用。初学者通过阅读注释行可以快速获得配置项的帮助内容。而行首没有”#”的称为设置行,是配置文件中真正有效的设置内容。 经统计,httpd.conf文件中的注释行的数量甚至超过了设置行的数量,过多的注释行内容会对配置文件的阅读造成一定的干扰,我们可以用grep命令去除httpd.conf文件中的注释行的内容,来获得有效的配置清单,如下图: 如上图,httpd.conf文件中的设置行大致内容如下: ServerRoot用于设置Apache服务器的根目录; Listen设置Apache服务器监听的网络端口号,默认为80; ServerAdmin用于设置Apache服务器管理员的E-mail地址; DocumentRoot用于设置Apache服务器网页(文档)根目录在Linux系统中的实际目录; …… 这类配置项称为全局配置项,这些配置项不包括在任何区域中,决定了Apache服务器的全局设置。 还有一类配置项称为区域配置项。实际上,httpd.conf文件中的大多数设置都是包括在区域中的,例如: 在以上的区域定义中,使用<Directory />定义区域的开始,使用</Directory>定义区域的结束,区域开始和结束之间的设置内容只作用于该区域内部,而不会在全局或 其他区域中生效。掌握在区域中进行合理设置可以对Apache服务器进行非常灵活的功能设置。 关于Apache服务器的更多设置,请参考http://www.apache.org。 三、 在RHEL4中安装花生壳(Peanuthull)2008 for Linux实现动态域名访问 最后我们在RHEL4系统中安装Peanuthull 2008 for Linux,实现通过域名对Apache测试页面的访问。 将适合RHEL4的包phlinux-1.0-install.redhat.tar.gz下载到系统中,然后进入压缩包所在文件夹,用tar命令解压缩,如下图: 解压后生成文件夹phlinux_install,进入文件夹,执行安装脚本#./install.sh,如下图: 执行过程中系统报错:缺少libstdc++.so.5库,用rpm –qa | grep libstdc查询,发现RHEL4系统默认安装的是libstdc++3的版本,如下图。去查找libstdc++3安装即可,过程省略。 安装好libstdc++.so.5库后,再次执行安装脚本#./install.sh,将自动以互动配置模式的phlinux程序: 输入web服务的地址,直接回车 Runing phlinux for first configuration... Peanuthull Linux-core 1.0 by oray.net, copyright 2005 No user configuration found, entering interactive mode automatically! Peanuthull Linux-core Interactive startup. Please input service address(press ENTER use phservice.oray.net): 输入花生壳服务器地址phlinux3.oray.net,直接回车 Please input server address(press ENTER use PH031.Oray.Net): 此处提示输入花生壳护照名 Please input username(press ENTER use ): 此处提示输入花生壳护照密码 Please input password: 系统提示是否保存配置文件,在这里输入yes回车,花生壳即登录在线。 Save to configuration file (/etc/phlinux.conf)?(yes/no): 登录完成后,在局域网内另一台Windows XP系统的电脑上用”nslookup 域名 ns1.oray.net”检查解析结果,如下图: 尝试访问域名,显示Apache测试页面,如下图: 总结:在Red Hat Enterprise Linux 4下安装和配置使用Apache后,经过花生壳的动态域名解析,就可以实现通过域名访问到Apache站点。在实际应用中,除了Web服务器之外,还需要 有网页编程语言和后台数据库等多种角色,例如LAMP网页应用架构(Linux平台下的Apache服务器+MySQL数据库+Perl/PHP /Python语言)。(责任编辑:admin) |