http的安装(编译安装)
文章目录
- 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的安装(编译安装)相关推荐
- 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 ...
- 分支1-CentOS6.5下 正/反向域名解析之yum安装/编译安装 的教程
本人对DNS的理解: -->正向解析与反向解析: 1)正向解析: 正向解析是指域名到IP地址的解析过程. 2)反向解析: 反向解析是从IP地址到域名的解析过程;反向解析的作用为服务器的身份验证. ...
- CentOS 下安装编译安装MeMcached
下载最新的 memcached http://www.memcached.org/ 1.4.15 # tar -xvf memcached-1.4.15.tar.gz cd memcached-1.4 ...
- 二进制编译安装mysql_数据库(MySQL)二进制安装+编译安装 + MariaDB编译安装
配置文件: my.cnf [mysql] :只用于mysql这个客户端 [mysqld] [client]:共享与所有客户端,如mysqldump等 MySQL二进制包安装:(在 mysql/下有个 ...
- linux内核编译安装,编译安装Linux内核
实验前准备:在https://www.kernel.org/下载内核 这里我们下载的是:linux-4.14.10.tar.xz du -sh /app/linux.tar/ 此命令可查看内核文件大小 ...
- linux安装Git依赖的包出错,Centos6.7安装编译安装最新Git2.10.1
到 Git官网发现,git版本已经是Git2.10.1了,绝对安装最新的版本,所以我们必须采用编译安装,测试环境本地 Centos6.7,小编已经完成测试成功,在make安装时出现了错误提示,已经完美 ...
- zz在Ubuntu中通过源码安装编译安装软件(MySQL篇)
使用Ubuntu Server作为本地测试环境已经有一段时间了,一直都是使用apt-get方式来安装各种应用软件,通过源码编译安装应用软件是Linux和Unix环 境下最常用的方式.通过源码编译安装的 ...
- 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. ...
- linux安装编译安装 ffmpeg,解决linux下ffmpeg压缩的mp4无法在网页播放问题
ffmpeg官网下载页面:http://www.ffmpeg.org/download.html github下载页面 https://github.com/FFmpeg/FFmpeg/releas ...
- (0.2.6)Mysql安装——编译安装
参考我的另一篇文章:https://www.cnblogs.com/gered/p/9539333.html 转载于:https://www.cnblogs.com/gered/p/10359289. ...
最新文章
- 快收藏!52篇25万字,微服务、云原生、容器、K8S、Serverless精华文章集锦
- 【Python学习系列二十】scikit-learn库模型持久化
- Vue.js 状态管理
- 区块链BaaS云服务(39)时戳信息Bystack“架构设计”
- pci中断号分配_西门子S7-200 SMART中断及中断指令概述
- 沉默已久的华为突然宣告杀入无人驾驶领域,司机将全部失业!
- Just $h$-index HDU - 6278(主席树找区间大于等于k的个数)
- JVM调优总结(3):垃圾回收面临的问题
- prefuse学习(一)用非数据库连接和xml的方式读入数据
- java 插桩 工具_一个基于Eclipse的通用Java程序插桩工具.pdf
- 如何赋值hook定义的变量
- mongodb 创建数据库权限账号,增删改查(基本操作)
- C++普通类继承模版类demo
- 608. 两数和-输入已排序的数组
- 《HTML与CSS入门经典(第8版)》——导读
- htc 常见错误和解决方案
- Django-天天生鲜项目
- 数学建模模板(让你也能写论文的模板)
- PS薄纱飘带字体制作
- html屏蔽浏览器自动填充,禁止浏览器对表单自动填充的几种方法