Apache取自“a patchy server”的读音,源于NCSAhttpd服务器,经过多次修改,成为世界上最流行的Web服务器软件之一,Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。
本来它只用于小型或试验Internet网络,后来逐步扩充到各种Unix系统中,尤其对Linux的支持相当完美。Apache有多种产品,可以支持SSL技术,支持多个虚拟主机。Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适合于多处理器环境,因此,在一个Apache Web站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。到目前为止Apache仍然是世界上用的最多的Web服务器,市场占有率达60%左右。世界上很多著名的网站如Amazon、Yahoo!、W3 Consortium、Financial Times等都是Apache的产物,它的成功之处主要在于它的源代码开放、有一支开放的开发队伍、支持跨平台的应用(可以运行在几乎所有的Unix、Windows、Linux系统平台上)以及它的可移植性等方面。
本文通过下载Apache2的httpd的源码,在ubuntu20.4的虚拟机计算机上搭建web服务器,基于Apache2的httpd在编译的过程中依赖于APR的开发环境(含APR、APR util和pcre2软件),其中apr-util依赖expat的软件。因此httpd的源码移植包括apr源码移植、expat源码移植、apr-util源码移植、pcre2源码移植和httpd源码移植等部分组成,并进行ubuntu20.4的httpd的web服务器的配置与测试。
(一) APR软件源码移植
1.首先在apache的官网下载APR的最新软件压缩包(V1.7.4)
http://archive.apache.org/dist/apr/
2.拷贝apr压缩包到工作目录,并解压。
3.在apr的解压目录下新建编译脚本build_x86.sh。
4.编译脚本build_x86.sh的内容如下所示:
5.给编译脚本添加可执行权限,并运行编译脚本进行APR的配置、编译与安装。
6.安装完成后,在/usr/local/apr目录生成如下文件目录。
(二)expat源码移植
1.Github下载expat的最新版本压缩包(V2.5.0),由于apr-util依赖expat的头文件,因此需要移植。
Release 2.5.0 · libexpat/libexpat · GitHub
2.拷贝expat源码压缩包到工作目录,并解压expat源码压缩包。
3.在解压后新建编译脚本build_x86.sh,如下图所示:
4.编译脚本build_x86.sh的内容如下所示:
5.给编译脚本添加可执行权限,运行编译脚本,在/usr/local/expat目录下生成安装文件如下所示:
(三)apr-util源码移植
1.在apr源码移植章节的步骤1,在官方下载apr-util的最新版本压缩包(V1.6.3)。
2.拷贝apr-util压缩包到工作目录,并解压。
3.在apr-util解压目录新建编译脚本build_x86.sh
4.编译脚本build_x86.sh的内容如下所示:
5.给编译脚本添加可执行权限,运行编译脚本,在安装目录/usr/local/apr_util下生成文件列表如下:
(四)pcre2源码移植
1.github官方下载pcre2的最新源码压缩包(V10.42)。
https://github.com/PCRE2Project/pcre2/tags
2.拷贝pcre2源码压缩包到工作目录,并解压pcre2源码压缩包。
3.进入pcre2解压目录,新建编译脚本build_x86.sh,如下所示
4.运行antogen.sh脚本,生成配置文件和Makefile。
5.编译脚本build_x86.sh的内容如下所示:
6.给编译脚本build_x86.sh添加可执行权限,运行编译脚本,在安装目录/usr/local/pcre2生成如下目录。
(五)httpd源码移植
1.首先在apache的官网下载httpd的最新源码压缩包,有两个官方下载网址(其中有一个是github),具体如下图所示:
Index of /dist/httpd
2.拷贝httpd的源码压缩包到工作目录,并解压,如下图所示:
3.新建编译脚本build_x86.sh,如下图所示:
4.编辑编译脚本build_x86.sh,具体如下所示:
5.给编译脚本添加可执行权限,并运行编译脚本进行httpd的编译。在安装目录/usr/local/httpd下生成移植后的文件目录,如下图所示:
(六)基于httpd的web服务器配置与测试
1.Ubuntu首先输入ifconfig命令获得本地网口的ip地址(192.168.50.151),如下所示:
2.进入httpd的安装目录的配置文件目录/usr/local/httpd/conf,打开配置文件httpd.conf(注意:sudo权限),修改监听IP地址和端口号:
3.进入httpd的安装目录/usr/local/httpd的子目录bin目录下,运行启动脚本,开启web服务。如果外部浏览器访问本web服务器,会显示httpd的安装目录/usr/local/httpd/htdocs子目录下的index.html文件。
sudo ./apachectl start //开启httpd的web服务
sudo ./apachectl stop //停止httpd的web服务(用于关闭web服务使用)
4.在浏览器输入web服务器的IP地址和端口号,访问浏览器如下所示: