文章目录

  • httpd
    • 1. httpd简介
    • 2. httpd版本
      • 2.1 httpd的特性
      • 2.2 httpd-2.4新增的模块
    • 3. httpd基础
      • 3.1 httpd自带的工具程序
      • 3.2 rpm包安装的httpd程序环境
      • 3.3 web相关的命令
        • 3.3.1 curl命令
        • 3.3.2 httpd命令
    • 4. httpd的编译安装
      • 4.1安装
      • 4.2.源码编译报错信息处理

httpd


1. httpd简介

httpd是Apache超文本传输协议(HTTP)服务器的主程序。被设计为一个独立运行的后台进程,它会建立一个处理请求的子进程或线程的池。

通常,httpd不应该被直接调用,而应该在类Unix系统中由apachectl调用,在Windows中作为服务运行。

2. httpd版本

本文主要介绍httpd的两大版本,httpd-2.2和httpd-2.4。

  • CentOS6系列的版本默认提供的是httpd-2.2版本的rpm包
  • CentOS7系列的版本默认提供的是httpd-2.4版本的rpm包

2.1 httpd的特性

httpd有很多特性,下面就分别来说说httpd-2.2版本和httpd-2.4版本各自的特性。

版本2.1的 特性:

  • 事先创建进程
  • 按需维持适当的进程
  • 模块化设计,核心比较小,各种功能通过模块添加(包括PHP),支持运行时配置,支持单独编译模块
  • 支持多种方式的虚拟主机配置,如基于ip的虚拟主机,基于端口的虚拟主机,基于域名的虚拟主机等
  • 支持https协议(通过mod_ssl模块实现)
  • 支持用户认证
  • 支持基于IP或域名的ACL访问控制机制
  • 支持每目录的访问控制(用户访问默认主页时不需要提供用户名和密码,但是用户访问某特定目录时需要提供用户名和密码)
  • 支持URL重写
  • 支持MPM(Multi Path Modules,多处理模块)。用于定义httpd的工作模型(单进程、单进程多线程、多进程、多进程单线程、多进程多线程)

版本2.4的特性:

  • httpd-2.4的新特性:
  • MPM支持运行DSO机制(Dynamic Share Object,模块的动态装/卸载机制),以模块形式按需加载
  • 支持event MPM,eventMPM模块生产环境可用
  • 支持异步读写
  • 支持每个模块及每个目录分别使用各自的日志级别
  • 每个请求相关的专业配置,使用来配置
  • 增强版的表达式分析器
  • 支持毫秒级的keepalive timeout
  • 基于FQDN的虚拟主机不再需要NameVirtualHost指令
  • 支持用户自定义变量
  • 支持新的指令(AllowOverrideList)
  • 降低对内存的消耗
工作模型 工作方式
prefork ① 多进程模型,预先生成进程,一个请求用一个进程响应
② 一个主进程负责生成n个子进程,子进程也称为工作进程
③ 每个子进程处理一个用户请求,即使没有用户请求,也会预先生成多个空闲进程,随时等待请求到达,最大不会超过1024个
worker 基于线程工作,一个请求用一个线程响应(启动多个进程,每个进程生成多个线程)
event 基于事件的驱动,一个进程处理多个请求

2.2 httpd-2.4新增的模块

httpd-2.4在之前的版本基础上新增了几大模块,下面就几个常用的来介绍一下。

模块 功能
mod_proxy_fcgi 反向代理时支持apache服务器后端协议的模块
mod_ratelimit 提供速率限制功能的模块
mod_remoteip 基于ip的访问控制机制被改变,不再支持使用Order,Deny,Allow来做基于IP的访问控制

3. httpd基础

3.1 httpd自带的工具程序

工具 功能
htpasswd basic认证基于文件实现时,用到的帐号密码生成工具
apachectl httpd自带的服务控制脚本,支持start,stop,restart
apxs 由httpd-devel包提供的,扩展httpd使用第三方模块的工具
rotatelogs 日志滚动工具
suexec 访问某些有特殊权限配置的资源时,临时切换至指定用户运行的工具
ab apache benchmark,httpd的压力测试工具

3.2 rpm包安装的httpd程序环境

文件/目录 对应的功能
/var/log/httpd/access.log 访问日志
/var/log/httpd/error_log 错误日志
/var/www/html/ 站点文档目录
/usr/lib64/httpd/modules/ 模块文件路径
/etc/httpd/conf/httpd.conf 主配置文件
/etc/httpd/conf.modules.d/*.conf 模块配置文件
/etc/httpd/conf.d/*.conf 辅助配置文件

mpm:以DSO机制提供,配置文件为/etc/httpd/conf.modules.d/00-mpm.conf

3.3 web相关的命令

3.3.1 curl命令

curl是基于URL语法在命令行方式下工作的文件传输工具,它支持FTP,FTPS,HTTP,HTTPS,GOPHER,TELNET,DICT,FILE及LDAP等协议。

curl支持以下功能:

  • https认证
  • http的POST/PUT等方法
  • ftp上传
  • kerberos认证
  • http上传
  • 代理服务器
  • cookies
  • 用户名/密码认证
  • 下载文件断点续传
  • socks5代理服务器
  • 通过http代理服务器上传文件到ftp服务器
/语法:curl [options] [URL ...]
//常用的options:-A/--user-agent <string>    //设置用户代理发送给服务器-basic                      //使用Http基本认证--tcp-nodelay               //使用TCP_NODELAY选项-e/--referer <URL>          //来源网址--cacert <file>             //CA证书(SSL)--compressed                //要求返回时压缩的格式-H/--header <line>          //自定义请求首部信息传递给服务器-I/--head                   //只显示响应报文首部信息--limit-rate <rate>         //设置传输速度-u/--user <user[:password]> //设置服务器的用户和密码-0/--http1                  //使用http 1.0版本,默认使用1.1版本。这个选项是数字0而不是字母o-o/--output                 //把输出写到文件中-#/--progress-bar           //进度条显示当前的传送状态//通过curl下载文件
[root@yxt ~]# curl -o myblog.html http://blog.51cto.com/itchentao% Total    % Received % Xferd  Average Speed   Time    Time     Time  CurrentDload  Upload   Total   Spent    Left  Speed0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--100   312  100   312    0     0   1925      0 --:--:-- --:--:-- --:--:--  1925
[root@yxt ~]# ls
myblog.html

3.3.2 httpd命令

//语法:httpd [options]
//常用的options:-l      //查看静态编译的模块,列出核心中编译了哪些模块。 \//它不会列出使用LoadModule指令动态加载的模块-M      //输出一个已经启用的模块列表,包括静态编译在服务 \//器中的模块和作为DSO动态加载的模块-v      //显示httpd的版本,然后退出-V      //显示httpd和apr/apr-util的版本和编译参数,然后退出-X      //以调试模式运行httpd。仅启动一个工作进程,并且 \//服务器不与控制台脱离-t      //检查配置文件是否有语法错误[root@yxt httpd-2.4.54]# httpd -l
Compiled in modules:core.cmod_so.chttp_core.c[root@yxt httpd-2.4.54]# httpd -M
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::20c:29ff:fe8d:ff95. Set the 'ServerName' directive globally to suppress this message
Loaded Modules:core_module (static)so_module (static)http_module (static)mpm_prefork_module (shared)authn_file_module (shared)authn_core_module (shared)authz_host_module (shared)authz_groupfile_module (shared)authz_user_module (shared)
.....[root@yxt httpd-2.4.54]# httpd -v
Server version: Apache/2.4.54 (Unix)
Server built:   Jul 21 2022 15:12:37[root@yxt httpd-2.4.54]# httpd -V
Server version: Apache/2.4.54 (Unix)
Server built:   Jul 21 2022 15:12:37
Server's Module Magic Number: 20120211:124
Server loaded:  APR 1.6.5, APR-UTIL 1.6.1, PCRE 10.32 2018-09-10
Compiled using: APR 1.6.5, APR-UTIL 1.6.1, PCRE 10.32 2018-09-10
Architecture:   64-bit
Server MPM:     preforkthreaded:     noforked:     yes (variable process count)
Server compiled with....-D APR_HAS_SENDFILE-D APR_HAS_MMAP-D APR_HAVE_IPV6 (IPv4-mapped[root@yxt modules]# httpd -t
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::20c:29ff:fe8d:ff95. Set the 'ServerName' directive globally to suppress this message
Syntax OK......

4. httpd的编译安装

4.1安装

一、下载apache前,需先下载编译工具,使用如下命令:

[root@yxt ~]# yum -y install openssl-devel pcre-devel expat-devel libtool gcc gcc-c++ wget make
[root@yxt ~]# yum -y groups mark install "Development Tools"
.......

二、下载编译apr-1.7.0
下载地址:https://downloads.apache.org/apr/apr-1.7.0.tar.gz

[root@yxt ~]# wget https://downloads.apache.org/apr/apr-1.7.0.tar.gz
[root@yxt ~]# tar -zxvf apr-1.7.0.tar.gz
[root@yxt ~]# cd apr-1.7.0
[root@yxt apr-1.7.0]# ./configure --prefix=/usr/local/apr
[root@yxt apr-1.7.0]# make && make install

三、下载编译apr-util-1.6.1
下载地址:https://downloads.apache.org/apr/apr-util-1.6.1.tar.gz

[root@yxt ~]# wget https://downloads.apache.org/apr/apr-util-1.6.1.tar.gz
[root@yxt ~]# tar -zxvf apr-util-1.6.1.tar.gz
[root@yxt ~]# cd apr-util-1.6.1
[root@yxt apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/
[root@yxt apr-util-1.6.1]# make && make install

四、下载编译apache httpd-2.4.54
下载地址:http://archive.apache.org/dist/httpd/httpd-2.4.54.tar.gz

[root@yxt ~]# wget http://archive.apache.org/dist/httpd/httpd-2.4.54.tar.gz
[root@yxt ~]# tar -zxvf httpd-2.4.54.tar.gz
[root@yxt httpd-2.4.54]# ./configure --prefix=/usr/local/apache \--enable-so \--enable-ssl \--enable-cgi \--enable-rewrite \--with-zlib \--with-pcre \--with-apr=/usr/local/apr \--with-apr-util=/usr/local/apr-util/ \--enable-modules=most \--enable-mpms-shared=all \--with-mpm=prefork
[root@yxt httpd-2.4.54]# make && make install

五、开启服务
切换当前目录为/usr/local/apache/bin下

[root@yxt ~]# cd /usr/local/apache/bin/
[root@yxt bin]# ./apachectl start
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::20c:29ff:fe22:f929%ens33. Set the 'ServerName' directive globally to suppress this message
[root@yxt bin]# iptables -F
[root@yxt bin]# ps -ef | grep httpd
root       83492       1  0 20:24 ?        00:00:00 /usr/local/apache/bin/httpd -k start
daemon     83493   83492  0 20:24 ?        00:00:00 /usr/local/apache/bin/httpd -k start
daemon     83494   83492  0 20:24 ?        00:00:00 /usr/local/apache/bin/httpd -k start
daemon     83495   83492  0 20:24 ?        00:00:00 /usr/local/apache/bin/httpd -k start
root       83580   20887  0 20:25 pts/1    00:00:00 grep --color=auto httpd

如果想要关闭服务:输入命令./apachectl stop 即可
六、如果想要编辑网页内容,在/usr/local/apache/htdocs目录下找到index.html文件,

[root@yxt ~]# cd /usr/local/apache/htdocs/
[root@yxt htdocs]# vim index.html
hello world[root@yxt htdocs]# systemctl  stop firewalld      //临时关闭防火墙

在浏览器输入本机IP就能查看


4.2.源码编译报错信息处理

第一种错误,如果在执行完make && make install后出现如下错误

xml/apr_xml.c:35:10: fatal error: expat.h: No such file or directoryinclude <expat.h>

需执行以下命令 ,下载xml:

[root@yxt ~]# yum -y install expat-devel

第二种错误,如果在执行完make && make install后出现如下错误

util_pcre.c:58:10: fatal error: pcre.h: No such file or directoryinclude "pcre.h"

需执行以下命令 ,下载xml:

[root@yxt httpd-2.4.51]# yum -y install pcre-devel

第三种错误,如果在执行完make && make install后出现如下错误

collect2: error: ld returned 1 exit status
make[2]: *** [Makefile:48: htpasswd] Error 1
make[2]: Leaving directory '/root/httpd-2.4.51/support'
make[1]: *** [/root/httpd-2.4.51/build/rules.mk:75: all-recursive] Error
make[1]: Leaving directory '/root/httpd-2.4.51/support'
make: *** [/root/httpd-2.4.51/build/rules.mk:75: all-recursive] Error 1

解决方案
第一步、需要安装libxml2-devel

[root@yxt ~]# yum -y install libxml2-devel

第二步、然后删除apr-util重新编译安装,也需要重新编译安装httpd

[root@yxt ~]# rm -rf /usr/local/apr-util
[root@yxt ~]# cd apr-util-1.6.1

第三步、清缓存

[root@yxt apr-util-1.6.1]# male clean

第四步、然后重新配置安装

[root@yxt apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr

第五步、编译并安装

[root@yxt apr-util-1.6.1]# make && make install

第六步、接着是httpd

[root@yxt ~]# cd httpd-2.4.51

第七步、清缓存

[root@yxt httpd-2.4.51]# make clean

第八步、然后重新配置安装

[root@yxt httpd-2.4.51]# ./configure --prefix=/usr/local/apache --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre=/usr/local/pcre

第九步、编译并安装

[root@yxt httpd-2.4.51]# make && make install

http的安装(编译安装)相关推荐

  1. Centos7安装编译安装zabbix2.219及mariadb-5.5.46

    mariadb-5.5.46的安装: 首先下载mariadb-5.5.46-linux-x86_64.tar.gz,然后使用tar -xf mariadb-5.5.46-linux-x86_64.ta ...

  2. 分支1-CentOS6.5下 正/反向域名解析之yum安装/编译安装 的教程

    本人对DNS的理解: -->正向解析与反向解析: 1)正向解析: 正向解析是指域名到IP地址的解析过程. 2)反向解析: 反向解析是从IP地址到域名的解析过程;反向解析的作用为服务器的身份验证. ...

  3. CentOS 下安装编译安装MeMcached

    下载最新的 memcached http://www.memcached.org/ 1.4.15 # tar -xvf memcached-1.4.15.tar.gz cd memcached-1.4 ...

  4. 二进制编译安装mysql_数据库(MySQL)二进制安装+编译安装 + MariaDB编译安装

    配置文件: my.cnf [mysql] :只用于mysql这个客户端 [mysqld] [client]:共享与所有客户端,如mysqldump等 MySQL二进制包安装:(在 mysql/下有个 ...

  5. linux内核编译安装,编译安装Linux内核

    实验前准备:在https://www.kernel.org/下载内核 这里我们下载的是:linux-4.14.10.tar.xz du -sh /app/linux.tar/ 此命令可查看内核文件大小 ...

  6. linux安装Git依赖的包出错,Centos6.7安装编译安装最新Git2.10.1

    到 Git官网发现,git版本已经是Git2.10.1了,绝对安装最新的版本,所以我们必须采用编译安装,测试环境本地 Centos6.7,小编已经完成测试成功,在make安装时出现了错误提示,已经完美 ...

  7. zz在Ubuntu中通过源码安装编译安装软件(MySQL篇)

    使用Ubuntu Server作为本地测试环境已经有一段时间了,一直都是使用apt-get方式来安装各种应用软件,通过源码编译安装应用软件是Linux和Unix环 境下最常用的方式.通过源码编译安装的 ...

  8. php编译安装, 编译安装nginx, yum安装nginx, nginx虚拟主机,默认虚拟主机

    编译安装PHP-7.3.0 1. 下载程序 下载php 7.3.0 cd /usr/local/src wget http://cn2.php.net/distributions/php-7.3.0. ...

  9. linux安装编译安装 ffmpeg,解决linux下ffmpeg压缩的mp4无法在网页播放问题

    ffmpeg官网下载页面:http://www.ffmpeg.org/download.html github下载页面  https://github.com/FFmpeg/FFmpeg/releas ...

  10. (0.2.6)Mysql安装——编译安装

    参考我的另一篇文章:https://www.cnblogs.com/gered/p/9539333.html 转载于:https://www.cnblogs.com/gered/p/10359289. ...

最新文章

  1. 快收藏!52篇25万字,微服务、云原生、容器、K8S、Serverless精华文章集锦
  2. 【Python学习系列二十】scikit-learn库模型持久化
  3. Vue.js 状态管理
  4. 区块链BaaS云服务(39)时戳信息Bystack“架构设计”
  5. pci中断号分配_西门子S7-200 SMART中断及中断指令概述
  6. 沉默已久的华为突然宣告杀入无人驾驶领域,司机将全部失业!
  7. Just $h$-index HDU - 6278(主席树找区间大于等于k的个数)
  8. JVM调优总结(3):垃圾回收面临的问题
  9. prefuse学习(一)用非数据库连接和xml的方式读入数据
  10. java 插桩 工具_一个基于Eclipse的通用Java程序插桩工具.pdf
  11. 如何赋值hook定义的变量
  12. mongodb 创建数据库权限账号,增删改查(基本操作)
  13. C++普通类继承模版类demo
  14. 608. 两数和-输入已排序的数组
  15. 《HTML与CSS入门经典(第8版)》——导读
  16. htc 常见错误和解决方案
  17. Django-天天生鲜项目
  18. 数学建模模板(让你也能写论文的模板)
  19. PS薄纱飘带字体制作
  20. html屏蔽浏览器自动填充,禁止浏览器对表单自动填充的几种方法

热门文章

  1. STM32实战-无源蜂鸣器
  2. 什么是Web?及web服务器原理
  3. 如何让淘宝客推广我们的产品?
  4. 今天在清华图书馆看到我的杰作,感慨万千,而我要归零一切 !
  5. UI设计中Sketch使用指南—入门篇
  6. 快速打开控制面板中的功能项
  7. SWUST OJ916:吉姆的发现
  8. 【SEUSE】操作系统实验:消费者-生产者问题
  9. 获取页面元素、随机色、Math对象
  10. 17篇论文,详解图的机器学习趋势 | NeurIPS 2019