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
文章版权归作者所有,未经允许请勿转载。

THE END
打赏
海报
Apache概述
一、Apache概述 1.1.Apache简介 “Apache HTTP Server”是开源软件项目的杰出代表,基于标准的HTTP网络协议提供网页浏览服务,在web服务器领域中长期保持着超过……
<<上一篇
下一篇>>