httpd服务

httpd

1、httpd简介

httpd是Apache超文本传输协议(HTTP)服务器的主程序。被设计为一个独立运行的后台进程,它会建立一个处理请求的子进程或线程的池。
通常,httpd不应该被直接调用,而应该在类Unix系统中由apachectl调用,在Windows中做为服务运行。

2、httpd版本

主要介绍httpd的两大版本:

  • httpd-2.2
  • httpd-2.4

2.1 httpd的特性

  • httpd-2.2 特性:
    事先创建进程
    按需维持适当的进程
    模块化设计,核心比较小,各种功能通过模块添加(包括PHP),支持运行时配置,支持单独编译模块
    支持多种方式的虚拟主机配置,如基于ip的虚拟主机,基于端口的虚拟主机,基于域名的虚拟主机等
    支持https协议(通过mod_ ssI模块实现)
    支持用户认证
    支持基于IP或域名的ACL访问控制机制
    支持每目录的访问控制(用户访问默认主页时不需要提供用户名和密码,但是用户访问某特定目录时需要提供用户名和支持URL重写
    支持MPM (Multi Path Modules,多处理模块)。用于定义httpd的工作模型(单进程、 单进程多线程、多进程、多进程单线程、多进程多线程)
  • httpd-2.4 特性:
    MPM支持运行DSO机制(Dynamic Share Object,模块的动态装/卸载机制),以模块形式按需加载
    支持event MPM, event MPM模块生产环境可用
    支持异步读写
    支持每个模块及每个目录分别使用各自的日志级别
    每个请求相关的专业配置,使用来配置
    增强版的表达式分析器
    支持毫秒级的keepalive timeout
    基于FQDN的虚拟主机不再需要Name Virtual Host指令
    支持用户自定义变量
    支持新的指令(Allow Override List)
    降低对内存的消耗

3、httpd基础

3.1 httpd 自带的工具程序

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

3.2 web 相关的命令

1.curl 命令
  • curl是基于URL语法在命令行方式下的传输工具,它支持FTP,FTPS,HTTP,HTTPS等协议

  • curl 支持的功能:
    ·https 认证
    ·http 的POST/PUT 等方法
    ·ftp 上传
    ·kerberos 认证
    ·http 上传
    ·代理服务器
    ·cookies
    ·用户名/密码认证
    ·下载文件断点传续
    ·socks5 代理服务器
    ·通过http 代理服务器上传文件到ftp服务器

  • 语法

//语法:curl [option] […]
常用的option:
-A……//设置用户代理发送给服务器
-basic……//使用Http 基本认证
–tcp-nodelay …… //使用TCP_NODELAY选项
-e …… //来源网址
–cacert ……//CA证书
–compressed ……//要求返回时压缩格式
-H ……//自定义请求首部信息传递服务器
-I ……//只显示响应报文首部信息
–limit-rate ……//设置传输速度
-o……//把输出写到文件中

2.httpd 命令

-l……//查看静态编译模块,列出核心中编译了那些模块
-M……//输出一个已经启用的模块列表,包括静态编译在服务器中的模块和作为DSO动态加载的模块
-v……//显示httpd版本,然后退出
-V……//显示httpd和apr/apr-util的版本和编译参数,然后退出
-X……//以调试模式运行httpd
-t……//检查配置文件是否有错误

4、 编译安装 httpd-2.4

//关闭防火墙与SELINUX
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@localhost ~]# setenforce 0

**//安装前请确保本地仓库或网络源有一个可以用**
**//安装开发环境**
[root@localhost ~]# yum groupinstall "Development Tools"
……安装过程略
[root@localhost ~]# groupadd -r apache 
[root@localhost ~]# useradd -r -g apache apache
[root@localhost ~]# yum -y install openssl-devel pcre-devel expat-devel libtool
……安装过程略
**//下面下载安装包请确保电脑有网(如果有下载好的安装包可直接上传即可。)**
**//下载并安装apr-1.4+和apr-util-1.4+**
[root@localhost ~]# cd /usr/src/ 
[root@localhost src]# wget http://mirrors.shu.edu.cn/apache//apr/apr-1.6.5.tar.bz2
……下载过程略
[root@localhost src]# wget http://mirrors.shu.edu.cn/apache//apr/apr-util-1. 6.1.tar.bz2 
……下载过程略
[root@localhost src]# ls 
apr-1.6.5.tar.bz2  apr-util-1.6.1.tar.bz2  debug  kernels 
[root@localhost src]# tar xf apr-1.6.5.tar.bz2 
[root@localhost src]# tar xf apr-util-1.6.1.tar.bz2
[root@localhost src]# ls 
apr-1.6.5  apr-1.6.5.tar.bz2  apr-util-1.6.1  apr-util-1.6.1.tar.bz2  debug  kernels 
[root@localhost src]# cd apr-1.6.5 
[root@localhost apr-1.6.5]# vim configure 
		........   
		cfgfile="${ofile}T"    
		trap "$RM \"$cfgfile\"; exit 1" 1 2 15    
		# $RM "$cfgfile"        //将此行添加注释
		.........
[root@localhost apr-1.6.5]# ./configure  --prefix=/usr/local/apr 
……配置过程略
[root@localhost apr-1.6.5]# make && make install 
……编译安装过程略

[root@localhost apr-1.6.5]# cd /usr/src/apr-util-1.6.1 
[root@localhost apr-util-1.6.1]# ./configure   --prefix=/usr/local/apr-util --with-apr=/usr/local/apr 
……配置过程略 
[root@localhost apr-util-1.6.1]# make && make install 
……编译安装过程略

**//下载httpd(如有下载完成的安装包可直接上传)**
[root@localhost ~]# wget http://mirror.bit.edu.cn/apache//httpd/httpd-2.4.38 .tar.bz2 
……下载过程略
[root@localhost ~]# ls 
httpd-2.4.38.tar.bz2 
[root@localhost ~]# tar xf httpd-2.4.38.tar.bz2
[root@localhost ~]# ls 
httpd-2.4.38.tar.bz2   httpd-2.4.38
[root@localhost ~]# cd httpd-2.4.38 
[root@localhost httpd-2.4.38]# ./configure  --prefix=/usr/local/apache      --sysconfdir=/etc/httpd38   --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@localhost httpd-2.4.37]# make && make install 
……编译安装过程略

**//创建软连接**
[root@localhost ~]# echo  "export  PATH=/usr/local/apache/bin:$PATH"  >  /etc/profile.d/httpd.sh
[root@localhost ~]# source /etc/profile.d/httpd.sh
[root@localhost ~]# ln -s /usr/local/apache/include/ /usr/include/httpd
[root@localhost ~]# echo 'MANPATH /usr/local/apache/man' >> /etc/man.config
**//取消ServerName前面的注释**
[root@localhost ~]# sed -i '/#ServerName/s/#//g' /etc/httpd38/httpd.conf 
**//启动服务(80端口为httpd服务端口)**
[root@localhost ~]# apachectl start
[root@server ~]# ss  -antl
State       Recv-Q Send-Q     Local Address:Port                    Peer Address:Port              
LISTEN      0      128                    *:22                                 *:*                  
LISTEN      0      100            127.0.0.1:25                                 *:*                  
LISTEN      0      128                   :::80                                :::*                  
LISTEN      0      128                   :::81                                :::*                  
LISTEN      0      128                   :::22                                :::*                  
LISTEN      0      100                  ::1:25                                :::*                                        :::*                  

5、httpd 常用配置

模块功能
prefork多进程模型,预先生成进程,一个请求用一个进程响应,一个主进程负责生成n个子进程,子进程也称为工作进程,每个子进程处理一个用户请求, 即使没有用户请求,也会预先生成多个空闲进程
worker基于线程工作,一个请求用一个线程响应(启动多个进程,每个进程生成多个线程
event基于事件的驱动,一个进程处理多个请求

5.1 控制访问法则

法则功能
Require all granted允许所有主机访问
Require all deny拒绝所有主机访问
Require ip IPADDR授权指定来源地址的主机访问
Require not ip IPADDR拒绝指定来源地址的主机访问
Require host HOSTNAME授权指定来源主机名的主机访问
Require not host HOSTNAME拒绝指定来源主机名的主机访问

6、虚拟主机

虚拟主机有三类::

  • 相同IP不同端口
  • 不同IP相同端口
  • 相同IP相同端口不同域名

6.1 相同IP不同端口

[root@localhost ~]# vim  /etc/httpd38/httpd.conf 
.......
**//在最后一行加入以下内容**
<VirtualHost *:80>
    DocumentRoot "/usr/local/apache/htdocs/aaa"
    ServerName  zhao.example.com
    ErrorLog "logs/11-error_log"
    CustomLog "logs/11-access_log" common
</VirtualHost>

<VirtualHost *:81>
    DocumentRoot "/usr/local/apache/htdocs/bbb"
    ServerName  wen.example.com
    ErrorLog "logs/22-error_log"
    CustomLog "logs/22-access_log" common
</VirtualHost>

**//末行模式下搜索:/Listen** 
**//在添加一个端口(默认端口为80)**
#
#Listen 12.34.56.78:80
Listen 80
Listen 81
.....

[root@localhost ~]# cd  /usr/local/apache/htdocs/
[root@localhost htdocs]# mkdir  aaa   bbb
[root@localhost htdocs]# ls
aaa  bbb  index.html
[root@localhost htdocs]# cd  aaa/
[root@localhost aaa]# echo  "123456789"  > index.html
[root@localhost htdocs]# cd  bbb/
[root@localhost bbb]# echo  "987654321"  > index.html
[root@localhost ~]# apachectl   -t
Syntax OK
[root@localhost ~]# apachectl   restart
[root@localhost ~]# ss  -antl
State       Recv-Q Send-Q     Local Address:Port                    Peer Address:Port              
LISTEN      0      128                    *:22                                 *:*                  
LISTEN      0      100            127.0.0.1:25                                 *:*                  
LISTEN      0      128                   :::80                                :::*                  
LISTEN      0      128                   :::81                                :::*                  
LISTEN      0      128                   :::22                                :::*                  
LISTEN      0      100                  ::1:25                                :::* 

在这里插入图片描述
在这里插入图片描述

6.2 不同IP相同端口

[root@localhost ~]# vim  /etc/httpd38/httpd.conf 
.......
**//在最后一行加入以下内容**
<VirtualHost 192.168.206.129:80>
    DocumentRoot "/usr/local/apache/htdocs/aaa"
    ServerName  zhao.example.com
    ErrorLog "logs/11-error_log"
    CustomLog "logs/11-access_log" common
</VirtualHost>

<VirtualHost 192.168.206.100:80>
    DocumentRoot "/usr/local/apache/htdocs/bbb"
    ServerName  wen.example.com
    ErrorLog "logs/22-error_log"
    CustomLog "logs/22-access_log" common
</VirtualHost>

[root@localhost ~]# apachectl   -t
Syntax OK
**//临时添加一个ip**
[root@localhost ~]#ip  addr add  192.168.206.100/24  dev eth0
[root@localhost ~]# cd  /usr/local/apache/htdocs/
[root@localhost htdocs]# mkdir  aaa   bbb
[root@localhost htdocs]# ls
aaa  bbb  index.html
[root@localhost htdocs]# cd  aaa/
[root@localhost aaa]# echo  "123456789"  > index.html
[root@localhost htdocs]# cd  bbb/
[root@localhost bbb]# echo  "987654321"  > index.html
[root@localhost ~]# apachectl   restart

在这里插入图片描述
在这里插入图片描述

6.3 相同IP相同端口不同域名

[root@localhost ~]# vim  /etc/httpd38/httpd.conf 
.......
**//在最后一行加入以下内容**
<VirtualHost *:80>
    DocumentRoot "/usr/local/apache/htdocs/aaa"
    ServerName  zhao.example.com
    ErrorLog "logs/11-error_log"
    CustomLog "logs/11-access_log" common
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/usr/local/apache/htdocs/bbb"
    ServerName  wen.example.com
    ErrorLog "logs/22-error_log"
    CustomLog "logs/22-access_log" common
</VirtualHost>

[root@localhost ~]# apachectl   -t
Syntax OK
[root@localhost ~]# cd  /usr/local/apache/htdocs/
[root@localhost htdocs]# mkdir  aaa   bbb
[root@localhost htdocs]# ls
aaa  bbb  index.html
[root@localhost htdocs]# cd  aaa/
[root@localhost aaa]# echo  "123456789"  > index.html
[root@localhost htdocs]# cd  bbb/
[root@localhost bbb]# echo  "987654321"  > index.html
[root@localhost ~]# apachectl   restart

**//下面的操作需要先返回电脑桌面**
1、点击桌面上的‘我的电脑’
2、点击进入:C:\windows\systemd32\drivers\etc\
3、把里面的hosts文件拖到电脑桌面上双击用记事本打开
4、在hosts文件里的最后一行加上你ip和你的域名(域名就是你上面设置的 ServerName)
192.168.206.xxx    xxx.xxx.com
192.168.206.xxx    xxx.xxx.com
5、关闭并保存文件,然后把文件拖回原来的位置
6、刷新一下‘我的电脑’

在这里插入图片描述
在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值