编译安装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/可以看到启动成功的标识:

nginx.png

CGI/FastCGI

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

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

  • 运行的脚本有Bug导致某些请求长时间卡住,那么当卡死的进程超过FastCGI开启的进程数后,以后的所有请求都将无法获得结果。
  • 当长时间运行时进程可能会挂掉,这时候需要一个守护进程监管工作进程并做拉起操作。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容