编译安装Web服务器

httpd(Apache)

httpd是世界使用排名第一的Web服务器,通过可扩展模块可以加载各种支持服务。
本次使用源码编译的方式安装httpd2.4。

首先httpd依赖于apr,apr-util,pcre(正则表达式库)
所以先要安装这三个依赖。

其中在编译安装apr-util的过程中出现了如下错误

xml/apr_xml.c:35:19: fatal error: expat.h: No such file or directory

经过搜索得知是缺少了expat的开发库,使用apt install libexpat1-dev安装后顺利编译成功。

再次安装pcre后配置如下:

./configure \
        --with-pcre=/usr/local/pcre \
        --prefix=/usr/local/httpd \
        --enable-so \
        --enable-cgi \
        --enable-rewrite 

经过编译安装后,进入/usr/local/httpd/bin,执行httpd
然后访问http://192.168.231.128/可以看到一个h1的It works!

apache.png

安装nginx

nginx的默认依赖库有两个:pcre,zlib(gz压缩)

pcre在上一部分已经安装了,故再次编译安装zlib

最终配置如下:

./configure --with-pcre=/root/pcre-8.41 --with-zlib=/root/zlib-1.2.11

本次需要配置的依赖库路径为对应的源码路径。
配置完成后编译安装
进入/usr/local/nginx/sbin执行./nginx启动服务
访问http://192.168.231.128/可以看到启动成功的标识:

编译安装Web服务器_第1张图片
nginx.png

CGI/FastCGI

CGI作为一种即用即调用的通用接口,优势是不常驻内存,每次请求之间不会互相影响,不会因为长时间的运行导致内存泄漏或者其他方面的问题。然而劣势就是fork&run,每次首先开启新的进程->加载资源->处理请求->释放资源,在面对大量的请求时会略有性能方面的影响。

FastCGI相对于CGI确实变的快了,在启动时便启动多个进程等待请求到来,当有请求到来时,WebServer转发请求给FastCGI,然后FastCGI直接进行处理,处理完成之后再次进入就绪状态。相对来讲免去了CGI的fork过程,处理速度会有一些提升,然而FastCGI也有一些致命缺陷:

  • 运行的脚本有Bug导致某些请求长时间卡住,那么当卡死的进程超过FastCGI开启的进程数后,以后的所有请求都将无法获得结果。
  • 当长时间运行时进程可能会挂掉,这时候需要一个守护进程监管工作进程并做拉起操作。

你可能感兴趣的:(编译安装Web服务器)