Apache概述
一、Apache概述
1.1.Apache简介
“Apache HTTP Server”是开源软件项目的杰出代表,基于标准的HTTP网络协议提供网页浏览服务,在web服务器领域中长期保持着超过半数的份额。Apache服务器可以运行在Linux、UNIX、Windows等多种操作系统平台。
Apache的起源:Apache服务器是针对之前出现的若干个web服务器程序进行整合、完善后形成的软件、其名称来源于“A Patchy Server”,意思是基于原有web服务程序的代码进行修改(补丁)后形成的服务器程序。1995年,Apache服务程序的1.0版本发布,之后一直由Apache Group负责该项目的管理和维护;直到1999年,在Apache Group 的基础上成立了Apache软件基金会(Apache Software Foundation,ASF)。目前,Apache项目一直由ASF负责管理和维护。
ASF是非盈利性质的组织,最初只负责“Apache Web”服务器项目的管理,随着web应用需求的不断扩大,ASF逐渐增加了许多与Web技术相关的开源软件项目,因此Apache现在不仅仅代表着web服务器,更广泛地代表着ASF管理的众多开源软件项目。ASF基金会的官方网站是http://www.apache.org/。Apache HTTP Server 是ASF旗下著名的软件项目之一,其正式名称是httpd,也就是历史上的Apache网站服务器。
1.2.Apache的主要特点:
Apache服务器在功能、性能和安全性等方面的表现都是比较突出的,可以较好地满足Web服务器用户的应用需求。
其主要特点包括以下几个方面:
(1.)开放源代码:
这是Apache服务器的重要特性之一,也是其他特性的基础。Apache服务程序由全世界的众多开发者共同维护,并且任何人都可以自由使用,这充分体现了开源软件的精神。
(2.)跨平台应用:
这个特性得益于Apache的源代码开放。Apache服务器可以运行在绝大多数软件硬件平台上,所有Unix操作系统都可以运行Apache服务器,甚至Apache服务器可以良好地运行在大多数Windows系统平台中。Apache服务器的跨平台特性使其具有被广泛应用的条件。
(3.)支持各种Web编程语言:
Apache服务器可支持的网页编程语言包括Perl、PHP、Python、Java等,甚至微软的ASP技术也可以在Apache服务器中使用。支持各种常用的web编程语言使Apache具有更广泛的应用领域。
(4.)模块化设计:
Apache并没有将所有的功能集中在单一的服务程序内部,而是尽可能地通过标准的模块实现专有的功能,这为Apache服务器带来了良好的扩展性。其他软件开发商可以编写标准的模块程序,从而添加Apache本身并不具有的其他功能。
(5.)运行非常稳定:
Apache服务器可用于构建具有大负载访问量的web站点,很多知名的企业网站都使用Apache作为web服务软件。
(6.)良好的安全性:
Apache服务器具有相对较好的安全性,这是开源软件共同具有的特性。并且,Apache的维护团队会及时对已发现的漏洞提供修补程序,为Apache的所有使用者提供尽可能安全的服务器程序。
二、Apache部署
2.1.安装Apache
1.上传httpd源码包至服务器
2.确认httpd服务是否安装,并安装2.4版本所需依赖包
# rpm -qa httpd
若提示已安装则进行卸载,未安装则直接执行第3步:
# rpm -e httpd --nodeps
# yum install -y apr apr-devel cyrus-sasl-devel expat-devel libdb-devel openldap-devel apr-util-devel apr-util pcre-devel pcre gcc gcc-c++ make lrzsz
3.解压并制定解压目录
# tar zxf httpd-2.4.25.tar.gz -C /usr/src/
进入解压目录
# cd /usr/src/httpd-2.4.25/
4.执行配置:
# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi
其中选项作用如下:
–prefix:指定将httpd服务程序安装到哪个目录,如/usr/local/httpd。
若不指定安装目录,默认安装在/usr/local/apache2目录下
–enable-so:启用动态加载模块支持,使httpd具备进一步扩展功能的能力。
–enable-rewrite:启用网页地址重写功能,用于网站优化及目录迁移维护。
–enable-charset-lite:启动字符集支持,以便支持使用各种字符集编码的网页。
–enable-cgi:启用CGI脚本程序支持,便于扩展网站的应用访问能力。
5.执行编译以及安装:
# make && make install
6.确认安装成功,进入安装目录查看是否有文件存在
# cd /usr/local/httpd/
# ls
7.优化路径方便管理:
# ln -s /usr/local/httpd/bin/* /usr/local/bin/ //文件链接
# httpd -v //查看当前httpd程序版本
8.设置为开机自启:
centos 7.5:
创建Apache 系统控制文件:
# vim /lib/systemd/system/httpd.service
[Unit]
Description=The Apache HTTP Server
After=httpd.target
[Service]
Type=forking
PIDFile=/usr/local/httpd/logs/httpd.pid
ExecStart=/usr/local/bin/apachectl $OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=1s
[Install]
WantedBy=multi-user.target //最小化安装或者桌面版本 /graohical.target
# systemctl daemon-reload //重载systemctl系统
# systemctl enable httpd.service //将httpd服务设置为开机自启
以下两种方法都可查询开机是否启动:
# systemctl list-unit-files | grep httpd.service
# systemctl is-enabled httpd
2.2.主要文件及目录
程序安装目录:/usr/local/httpd/
主配置文件:/usr/local/httpd/conf/httpd.conf
网页目录:/usr/local/httpd/htdocs/
服务脚本:/usr/local/httpd/bin/apachectl
主程序:/usr/local/httpd/bin/httpd
访问日志: /usr/local/httpd/logs/access_log
错误日志: /usr/local/httpd/logs/error_log
2.3.配置服务器
修改主机名
# vim /etc/sysconfig/network
HOSTNAME=www.chengdu.com //修改主机名,用于域名解析,可不更改
在主配置文件中添加主机名:
# vim /usr/local/httpd/conf/httpd.conf
ServerName www.chengdu.com //添加此项
检查配置文件是否正常:
# apachectl -t //提示OK 则正常
启动HTTPD服务:
# systemctl start httpd
查看运行的进程,有进程表示启动成功
# ps aux | grep httpd
修改默认显示网页
# vim /usr/local/httpd/htdocs/index.html
www.chengdu.com //加入此内容
客户机通过服务器IP地址进行访问:
服务器中查看客户机访问日志记录:
# tail /usr/local/httpd/logs/access_log
2.4.常用的全局配置参数
ServerRoot:服务目录
ServerAdmin:管理员邮箱
User:运行服务的用户身份
Group:运行服务的组身份
ServerName:网站服务器的域名
DocumentRoot:网页文档的根目录
Listen:监听的IP地址、端口号
PidFile:保存httpd进程PID号的文件
DirectoryIndex:默认的索引页文件
AddDefaultCharset UTF-8 设置字符集
常用的全局配置参数(续)
ErrorLog:错误日志文件的位置
CustomLog:访问日志文件的位置
LogLevel:记录日志的级别,默认为warn
Timeout:网络连接超时,默认为300秒
KeepAlive:是否保持连接,可选On或Off
MaxKeepAliveRequests:每次连接最多请求文件数
KeepAliveTimeout:保持连接状态时的超时时间
Include:需要包含进来的其他配置文件
三、Apache应用
3.1.客户机地址限制
Require all granted //允许访问策略
Require all denied //拒绝访问策略
Require local //只允许本地访问
Require [not] host <主机名或域名列表>
Require [not] ip <ip地址或网段列表>
举例1:表示只禁止IP 1.1访问服务
//使用"not"需要用到此标签,将该段加入到项目中
Require not ip 192.168.1.1
Require all granted
举例2:表示只允许IP 1.0网段和2.0网段访问服务,不需要使用 标签
Require ip 192.168.1.0/24 192.168.2.0/24
Require ip 192.168.1.1/32 192.168.0.0/16
被拒绝的主机连接服务器将会显示403错误
3.2.用户授权访问
认证就是客户端要给服务器出示一些自己的身份证明,来证明自己是谁!一旦服务器知道了客户端的身份,就可以判定客户端可以访问的事务和资源了。 在HTTP中,认证通常是通过提供用户名和密码来进行认证的。
http服务支持两种认证方式:摘要认证(需要模块功能支持,更加安全的方式传递验证信息)、基本认证。
基本认证:基于用户访问控制包括认证和授权,
认证:指识别用户身份的过程
授权:指允许特定用户访问特定目录区域的过程
1.创建用户认证数据文件
# cd /usr/local/httpd
# bin/htpasswd -c /usr/local/httpd/conf/.awspwd webadmin //创建授权访问的用户账户文件
# bin/htpasswd /usr/local/httpd/conf/.awspwd webadmin1 //添加新用户时不需要-c选项
2.添加用户授权配置
# vim /usr/local/httpd/conf/httpd.conf
<Directory “/usr/local/httpd/htdocs”> //在此行下添加
Authname “AAA”
Authtype Basic
Authuserfile /usr/local/httpd/conf/.awspwd
require valid-user //valid-user:代表所有列表中的用户,若需要指定单个用户可修改为:require webadmin
注意:当设置了主机访问控制的同时配置了验证访问,主机访问控制生效。
# Require all granted //配置了主机访问又配置了验证访问,因此需要关闭主机访问控制。
Authname “AAA”
Authtype Basic
Authuserfile /usr/local/httpd/conf/.awspwd
require valid-user
需求:
允许192.168.1.254直接访问,而其他人输入密码才能访问:
Require ip 192.168.1.253
Authname “AAA”
Authtype Basic
Authuserfile /usr/local/httpd/conf/.awspwd
require valid-user
需求2:
拒绝一个地址访问而允许其他人认证访问:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q1Vxu9pL-1688349541629)(file:///C:/Users/76450/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif)]
3.3构建虚拟web主机
能够让一台web服务器同时存在多个站点!
3.3.1.基于域名的虚拟主机
通过两个域名访问到不同内容
1.安装配置DNS服务器用于域名解析
# yum install -y bind
# mv /etc/named.conf /etc/named.conf.bak
# vim /etc/named.conf
options {
directory “/var/named”;
};
zone “chengdu.com” IN {
type master;
file “chengdu.com.zone”;
};
zone “shanghai.com” IN {
type master;
file “shanghai.com.zone”;
};
# vim /var/named/chengdu.com.zone
$TTL 600
@ IN SOA chengdu.com. admin.chengdu.com.(
20170405
1d
5d
2D
6h
)
@ IN NS ns1.chengdu.com.
ns1 IN A 192.168.1.10
www IN A 192.168.1.10
# vim /var/named/shanghai.com.zone
$TTL 600
@ IN SOA shanghai.com. admin.shanghai.com.(
20170405
1H
5M
2D
6h
)
@ IN NS ns1.shanghai.com.
ns1 IN A 192.168.1.10
www IN A 192.168.1.10
# systemctl restart named
2.准备虚拟主机网页文档
# mkdir /var/wwwchengdu /var/wwwshanghai //创建两台虚拟主机网页根目录
# echo “www.chengdu.com” > /var/wwwchengdu/index.html //生成网页文件内容
# echo “www.shanghai.com” > /var/wwwshanghai/index.html
3.以独立的形式创建虚拟主机配置文件
# mv /usr/local/httpd/conf/extra/httpd-vhosts.conf /usr/local/httpd/conf/extra/httpd-vhosts.conf.bak
# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
<VirtualHost 192.168.1.10:80>
DocumentRoot “/var/wwwchengdu”
ServerName www.chengdu.com
ErrorLog “logs/www.chengdu.com.error.log”
CustomLog “logs/www.chengdu.com.custom.log” common
<VirtualHost 192.168.1.10:80>
DocumentRoot “/var/wwwshanghai”
ServerName www.shanghai.com
ErrorLog “logs/www.shanghai.com.error_log”
CustomLog “logs/www.shanghai.com.access_log” common
注意:也可以将以上所有配置文件直接放在httpd.conf中
设置虚拟主机时需要注意:
1.修改主配置文件,确定主配置文件没有访问限制拒绝策略
2.将 "/"区域设置为允许所有人访问:
//此区域中将拒绝所有改为允许所有
AllowOverride none
Require all granted //将拒绝改为允许
3.在主配置文件中加入引用虚拟主机配置文件项:
# vim /usr/local/httpd/conf/httpd.conf
Include conf/extra/httpd-vhosts.conf
# systemctl restart httpd
验证:访问chengdu域名能够看到chengdu内容 访问shanghai能够看到shanghai内容
3.3.2.基于端口的虚拟主机
访问www.chengdu.com 得到的网页信息:www.chengdu.com
访问www.chengdu.com:8080 得到的网页信息:www.shanghai.com
在原配置文件中将shanghai的端口号改为8080,在httpd.conf中添加监听端口8080,重启访问服务即可
# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
找到shanghai配置区域
<VirtualHost 192.168.1.10:8080> //修改为8080
DocumentRoot “/var/wwwshanghai”
ServerName www.chengdu.com //域名改为www.chengdu.com
ErrorLog “logs/www.shanghai.com.error_log”
CustomLog “logs/www.shanghai.com.access_log” common
# vim /usr/local/httpd/conf/httpd.conf
Listen 8080 //添加监听端口
# systemctl restart httpd //重启服务验证
www.chengdu.com //能够访问到chengdu页面
www.chengdu.com:8080 //能够访问到shanghai页面
3.3.3.基于IP的虚拟主机
192.168.1.11 www.chengdu.com
192.168.1.12 www.shanghai.com
# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
<VirtualHost 192.168.1.11:80> //将shanghai.com段修改IP为11
DocumentRoot “/var/wwwshanghai”
ServerName www.shanghai.com
ErrorLog “logs/www.shanghai.com.error_log”
CustomLog “logs/www.chengdu.com.access_log” common
开放IP加端口的监听
Listen 192.168.1.10:80
Listen 192.168.1.11:80
#Listen 192.168.1.10:8080 //禁用此项
修改DNS解析:
# vim /var/named/shanghai.com.zone
@ IN SOA shanghai.com. admin.shanghai.com.(
20170405
1H
5M
2D
6h
)
@ IN NS ns1.shanghai.com.
ns1 IN A 192.168.1.11 //修改为11
www IN A 192.168.1.11 //修改为11
# ifconfig ens33 192.168.1.11/24
# systemctl restart named
# systemctl restart httpd
注意:需要将虚拟机两张网卡都设置为同一个vmnet网卡,便于客户端访问验证
验证:通过域名shanghai能够看到shanghai内容
通过域名chengdu能够看到chengdu内容
通过nslookup也能够解析到shanghai域名的IP为11,chengdu的IP为10
直接通过IP 192.168.1.10能够访问到chengdu页面
直接通过IP 192.168.1.11能够访问到shanghai页面
DNS解析:
# vim /var/named/shanghai.com.zone
@ IN SOA shanghai.com. admin.shanghai.com.(
20170405
1H
5M
2D
6h
)
@ IN NS ns1.shanghai.com.
ns1 IN A 192.168.1.11 //修改为11
www IN A 192.168.1.11 //修改为11
# ifconfig ens33 192.168.1.11/24
# systemctl restart named
# systemctl restart httpd
注意:需要将虚拟机两张网卡都设置为同一个vmnet网卡,便于客户端访问验证
验证:通过域名shanghai能够看到shanghai内容
通过域名chengdu能够看到chengdu内容
通过nslookup也能够解析到shanghai域名的IP为11,chengdu的IP为10
直接通过IP 192.168.1.10能够访问到chengdu页面
直接通过IP 192.168.1.11能够访问到shanghai页面
版权声明:
作者:SE_Meng
链接:https://www.cnesa.cn/1988.html
来源:CNESA
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论