概述
介绍
Apache HTTP Server(简称Apache)是Apache的一个开源的网页服务器,它源自NCSAhttpd服务器,并经过多次修改和发展,如今已经成为全球范围内广泛使用的Web服务器软件之一
特点
跨平台:可以运行在几乎所有广泛使用的计算机平台上
高效性能:能够处理大量的并发连接,满足大型网站的需求
稳定性:服务器稳定性高,运行时间长,可提供持续的服务
安全性:提供了多种安全功能,如SSL/TLS加密、访问控制等,以保护用户数据的安全
功能
支持通用网关接口(CGI)、基于IP和基于域名的虚拟主机、多种方式的HTTP认证
支持服务器端包含指令(SSI)、安全Socket层(SSL)
支持SSL技术,支持多个虚拟主机
安装部署
环境准备
#准备一台Linux虚拟机,IP地址为192.168.221.151
systemctl stop firewalld #关闭防火墙
setenforce 0 #关闭selinux
安装
#源代码编译安装
yum -y install gcc gcc-* make #准备编译安装工具
yum -y install apr-util-devel pcre-devel zlib-devel #准备依赖包
tar -zxvf httpd-2.4.59.tar.gz -C /usr/src #解压安装包
cd /usr/src/httpd-2.4.59/ #切换到解压后的目录#配置安装路径
./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi #配置安装路径
make && make install #编译并安装#使用编译安装,systemctl命令可能会无法使用,运行以下代码
ln -s /usr/local/httpd/bin/* /usr/local/bin/
cat > /lib/systemd/system/httpd.service << 'EOF'
[Unit]
Description=The Apache HTTP Server
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/httpd/logs/httpd.pid
ExecStart= /usr/local/bin/apachectl $OPTIONS
ExecrReload= /bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
EOF#启动服务并设置开机自启动
systemctl start httpd
systemctl enable httpd
测试
如果是yum安装的话应该会显示Testing123.....页面
配置
配置文件
安装完成后在我们设置的安装目录下即可看到几个目录
conf:存放配置文件
httpd.conf:位于conf目录下,是httpd的主配置文件
htdocs:存放html网页,前面测试的It works!网页就放在这里
#编辑主配置文件
vi /usr/local//httpd/conf/httpd.conf
ServerRoot "/usr/local/httpd" #定义服务器配置文件的根目录
Listen 80 #设置监听的端口为80
ServerName 192.168.221.151 #定义服务器的主机名
DocumentRoot "/usr/local/httpd/htdocs" #定义网站根目录,即HTTP请求访问的默认目录
DirectoryIndex index.html #定义访问网站根目录时默认索引文件<Directory "/usr/local/httpd/htdocs"> #对特定的目录进行设置AllowOverride None #设置特殊属性,none表示不设置,all表示允许Require all granted #允许所有人访问,denied表示拒绝
</Directory>
示例
#在htdocs目录下创建test目录并编写一个网页
echo "<h1>test html</h1>" > ftx.html#在主配置文件中编辑配置
DocumentRoot "/usr/local/httpd/htdocs/test" #将默认访问目录改为刚创建的test目录
<Directory "/usr/local/httpd/htdocs/test"> #配置这个目录AllowOverride NoneRequire all granted
</Directory>DirectoryIndex ftx.html #将索引改为这个网页,不修改的话则需要在IP后添加ftx.html#保存然后重启服务
连接保持
Keep-Alive
允许客户端和服务器在单个 TCP 连接上发送和接收多个 HTTP 请求/响应,而不是为每个请求/响应都创建和销毁一个新的 TCP 连接,这可以显著提高性能和效率
KeepAlive配置文件在httpd/conf/extra/httpd-default.conf
配置
KeepAliveTimeout:一次连接多次请求之间的最大间隔时间,两次请求超过该时间连接断开
KeepAlive On:是否打开连接保持,OFF关闭,ON打开
MaxKeepAliveRequests:一次长连接能够传输的最大请求量
然后在主配置文件495行左右取消注释Include conf/extra/httpd-default.conf,即可开启
访问控制
作用
控制对网站资源的访问
为特定的网站目录添加访问授权
常用访问控制方式
客户机地址限制
用户授权限制
客户机地址限制
#编辑主配置文件
<Directory "/usr/local/httpd/htdocs/test">Require ip 192.168.221.147 #限制只能192.168.221.147主机访问Require ip 192.168.221.1/24 #限制只能192.168.221网段的主机访问Require all granted #允许所有主机访问Require all denied #拒绝所有主机访问Require local #仅允许本地主机访问Require [not] host <主机名或域名列表> #允许或拒绝指定主机或域名访问Require [not] ip <IP地址或网段列表> #允许或拒绝指定IP地址网络访问<RequireAll> #组合写法Require all grantedRequire not ip 192.168.221.0/24 192.168.222.0/24</RequireAll>
</Directory>#以上配置根据需要填写即可
#示例
<Directory "/usr/local/httpd/htdocs/test">Require ip 192.168.222.0/24 #只允许192.168.222网段访问
</Directory>#重启服务,这时我的宿主机就无法访问,我的宿主机网段为192.168.221
使用用户授权限制
#创建用户,使用httpd/bin/htpasswd
cd /usr/local/httpd
#创建用户webadmin -c 第一次创建用户时需要创建文件 -m 使用md5加密
bin/htpasswd -c -m /usr/local/httpd/conf/.awspwd zhangsan
#再添加一个lisi,这时就不需要使用-c选项
bin/htpasswd -m /usr/local/httpd/conf/.awspwd lisi#编辑主配置文件
<Directory "/usr/local/httpd/htdocs/test">AllowOverride None#Require all granted#Require ip 192.168.222.0/24 #这里要注释掉AuthName "test html" #向用户解释他们正在尝试访问的受保护区域AuthType Basic #设置认证的类型,Basic 表示基本认证AuthUserFile /usr/local/httpd/conf/.awspwd #设置用于保存用户账号、密码的认证文件路径Require valid-user #要求只有认证文件中的合法用户才能访问
</Directory>#重启服务,访问网页时即可看到需要登录