文章目录
- 一,安装Apache软件
- (一)Apache软件安装
- (二)Apache软件管理
- (三)Apache软件基本设置
- (四)测试Apache服务器
- 二,Apache服务器的配置文件
- (一)Apache的配置文件详述
- (二)httpd.conf中常用的配置指令
- (三)配置文件格式检查
- (四)使用默认根目录作为网站目录发布网站
- (五)使用指定目录作来发布网站
- 三,配置目录访问控制
- (一)目录访问控制的概念
- (二)目录访问控制的配置格式
- (三)常见访问控制指令
- 四,配置虚拟目录
- (一)虚拟目录的概念
- (二)添加虚拟目录的方法
- (三)添加虚拟目录的示例
- 五,页面访问身份认证
- (一)设置身份认证的过程
- (二)创建用户口令数据库
- (三)创建用户组
- (四)认证与授权配置
- 六,配置虚拟主机
- (一)虚拟主机概述
- (二)基于端口的虚拟主机配置
- (三)基于多IP地址的虚拟主机配置
- (四)基于域名的虚拟主机配置
一,安装Apache软件
(一)Apache软件安装
采用yum命令方式
执行命令:yum -y install httpd
或 yum -y group install
“基本网页服务器”
(二)Apache软件管理
-
启动httpd服务
systemctl {start | stop | status | restart | reload} httpd
-
设置开机自启
systemctl {enable | disable} httpd
-
重新加载配置文件
apachectl {start | stop | status | restart}
apachectl graceful
-
在防火墙放行httpd服务(前提:启动防火墙)
firewall-cmd --add-service=http
# 临时放行
firewall-cmd --permanent --add-service=http
# 放行http服务
firewall-cmd --permanent --add-port=80/tcp
# 放行80端口
firewall-cmd --reload
# 永久放行http服务 -
关闭SElinux安全增强功能
setenforce 0
(三)Apache软件基本设置
-
在RHEL/CentOS中,Apache httpd服务器包含了基本的应用设置,不需要额外的配置即可使用。
-
默认网站根目录:
/var/www/html
-
如果默认网站没有index.html文件,则显示
/usr/share/httpd/noindex/index.html
文件,此项目由/etc/httpd/conf.d/welcome.conf
来确定。 -
Apache所有运行状态设定,都是由配置文件实现的。
(四)测试Apache服务器
- 从客户端验证Apache服务器是否正常运行
在地址栏中输入http://<服务器的IP地址>
将打开缺省主页。
在地址栏中输入http:// <服务器的IP地址>/manual
将打开Apache的帮助手册页面。
二,Apache服务器的配置文件
(一)Apache的配置文件详述
- Apache服务器程序的配置文件包含在一下三个目录中:
/etc/httpd/conf;
/etc/httpd/conf.d;
/etc/httpd/conf.modules.d。
/etc/httpd/conf/httpd.conf : #Apache的主配置文件
在主配置文件httpd.conf中,通过如下指令将外部配置文件的配置指令导入进来:
IncludeOptional conf.d/*.conf
Include conf.modules.d/*.conf.
在配置文件中使用“容器”概念来容纳诸如“目录”、“虚拟主机”、“文件”、“模块”等内容,以便对他们来进行设置。
<容器名称>
配置的内容
</容器名称>
配置文件中包含大量的httpd程序可以理解的配置指令。
配置文件的内容可以归纳三个部分:全局配置、主服务配置、虚拟机主机配置。
如果想要了解配置文件的详细信息,可以参考Apache官网:https://httpd.apache.org/docs/
(二)httpd.conf中常用的配置指令
-
全局环境配置命令
ServerRoot指令:用于定于httpd配置文件、错误文件、日志文件的根目录,后续出现的相对路径都是以此路径作为根目录。默认值是“/etc/httpd”(不能以/结尾),一般不需要进行修改。
Timeout指令:超时设置,用于设置接收和发送数据时的超时时限,单位是秒,有些配置文件中没有该指令,我们可以自己添加。格式为:Timeout 100;
Listen指令:设置Apache服务器将监听服务器所有IP地址的80端口,可以指定监听特定IP地址和特定的端口;例如:Listen 12.34.56.78:80
-
主服务器配置命令
DocumentRoot指令:指定网站的根目录,路径使用绝对路径,默认是”/var/www/html”
DirectoryIndex指令:义主页文件,当访问到网站目录时,如果有定义的主页文件,网站会自动访问,默认是“DirectoryIndex index.html”
ServerAdmin指令:指定主服务器的管理员邮箱地址,仅为网站显示信息 ,默认为“root@localhost” 。
ServerName指令:指定主服务器的名称,仅为网站显示信息 ,默认为“www.example.com:80” 。
(三)配置文件格式检查
Apache配置文件修改完成后,可以使用Apache自带配置文件检查命令,检查配置文件修改后的语法结构是否正确。
# apachectl configtest
(四)使用默认根目录作为网站目录发布网站
可以采用如下步骤使用默认根目录作为网站目录来发布网站:
- 将网站的所有内容复制到/var/www/html目录下;
- 将网站的首页名称添加到DirectoryIndex指令的第一项。
(五)使用指定目录作来发布网站
可以采用如下步骤使用指定目录作来发布网站:
- 在服务器上创建Web网站的根目录,例如
“/web”
; - 将网站的文件夹复制到网站根目录下;
- 打开
/etc/httpd/conf/httpd.conf
文件,按如下步骤修改,并保存;- 修改
DocumentRoot “/var/www/html”
为DocumentRoot “/web”
; - 设置网站根目录的权限:修改
<Directory “/var/www/html”>…</Directory>
为<Directory “/web”>…</Directory>
; - 将网站的首页名称添加到
DirectoryIndex
指令的第一项;
- 修改
- 重启httpd进程。
三,配置目录访问控制
(一)目录访问控制的概念
- 目录访问控制是指对文件系统中的目录进行权限设定:可以指定哪一些客户端可以访问目录,哪些不行,还能够指定客户端在该目录中可以做哪些操作,如列出目录内容、执行等操作;
- Apache可以在主配置文件httpd.conf中配置目录访问控制;
- Apache还允许在每个目录下放置一个.htaccess文件,通过它来控制这个目录的访问权限,可以替换httpd.conf中的默认设置。
(二)目录访问控制的配置格式
<Directory “目录路径”>
[访问控制指令]
</Directory>
<Directory "/var/www/html"> #网站容器开始标识
Options Indexes FollowSymLinks #找不到主页时,以目录的方式呈现,
AllowOverride None #none不使用 .htaccess控制,all允许
Require all granted #granted表示运行所有访问,denied表示拒绝所有访问
</Directory> #容器结束
(三)常见访问控制指令
-
Options (目录参数):设置目录内能够让Apache进行的动作,即是针对apache的程序的权限设定。主要的参数值有:
- Indexes:如果在此目录下找不到主页(预设为 index.html)时, 就显示整个目录下的文件名。
- FollowSymLinks:表示在该目录中,服务器将跟踪符号链接。
- ExecCGI:让此目录具有执行CGI程序的权限。例如,邮件服务OpenWebMail 使用了很多的 perl 的程序,你要让OpenWebMail 可以执行,就得要在该程序所在目录拥有 ExecCGI 的权限。
-
AllowOverride (允许的覆写参数功能):表示是否允许额外配置文件.htaccess 对主配置文件进行覆盖。
可以在httpd.conf 内设定好所有的权限,不过如此一来若使用者自己的个人网页想要修改权限时将会对管理员造成困扰。因此 Apache 默认可以让用户以目录底下的.htaccess 档案内覆写 内的某些功能参数。 -
AllowOverride (允许的覆写参数功能)常见的选项有:
(1)ALL:全部的权限均可被覆写;
(2)AuthConfig:仅有网页认证 (账号密码) 可覆写;
(3)Indexes:仅允许 Indexes 方面的覆写;
(4)Limits:允许使用者利用 Allow, Deny 与 Order 管理可浏览的权限;
(5)None:不可覆写,亦即让 .htaccess 档案失效! -
Require (能否登入浏览的权限):决定此目录是否可被用户 浏览的权限设定,能否被浏览主要有如下判定的方式。Apache2.4版本,使用Require命令取代Order来进行权限设置,但也兼容Order。
(1)Require all granted #允许所有
(2)Require all denied #拒绝所有
(3)Require ip 192.100 192.168.160 192.168.100.5 #允许特定IP或IP段,多个IP或IP段间使用空格分隔,拒绝其他
四,配置虚拟目录
(一)虚拟目录的概念
虚拟目录就是将其他目录以映射的方式虚拟到网站的根目录下,这样,一个网站的根目录实质上就可以包括很多不同盘符、不同路径的目录,而不会受到所在盘空间的限制了。
(二)添加虚拟目录的方法
使用Alias指令为网站添加虚拟目录:
Alias 虚拟目录 “实际目录”
说明:
1、虚拟目录的根目录是DocumentRoot指令指定的目录;
2、设置好虚拟目录后,还要定义虚拟目录对应于实际目录的访问授权。
3、定义了虚拟目录若无法访问,则为SElinux问题,使用setenforce 0命令临关闭SElinux防火墙即可使用。
(三)添加虚拟目录的示例
五,页面访问身份认证
(一)设置身份认证的过程
认证是指用户通过浏览器访问某一受保护资源时,提供正确的用户名和密码才能访问;设置身份认证的过程为:
- 通过用户名和口令来验证对Web页面的访问;
- 创建口令访问需要首先创建用户和口令数据库;
- 在需要口令保护的目录容器中添加验证指令。
(二)创建用户口令数据库
使用htpasswd命令创建用户口令数据库文件:
#htpasswd -c /etc/httpd/webpass 用户名 //-c首次创建时使用,指定创建数据库文件
#htpasswd /etc/httpd/webpass 用户名
(三)创建用户组
建立/etc/httpd/webgroup(其中/etc/httpd/webgroup为组文件名),按如下方式添加行。
组名称:用户名1 用户名2
例如:webgroup : user1 user2
(四)认证与授权配置
-
认证指令包括:
- AuthName<领域名称> //定义认证的名称
- AuthType<Basic|Digest> //定义使用Basic或Digest认证方式
- AuthGroupFile<文件名> //指定认证组文件的位置
- AuthUserFile<文件名> //指定认证密码文件的位置
-
上述配置指令要放在受保护的目录容器中;
-
为用户或者组进行授权的指令是Require,具有3种授权格式:
- Require user <用户名> [用户名] //授权给指定的一个或者多个用户
- Require group <组名> [组名] //授权给指定的一个或者多个用户组
- Require valid-user //授权给认证密码文件中的所有用户
六,配置虚拟主机
(一)虚拟主机概述
-
虚拟主机是指在一个主机上运行多个Web网站,每个网站均有自己独立的域名,通过不同的域名可以访问不同的网站。虽然多个Web网站部署在同一台计算机内,但是对于用户是透明的。用户在访问时,只需要在浏览器中输入相应的域名即可。
-
虚拟主机主要分为:基于端口的虚拟主机、基于IP地址的虚拟主机以及基于域名的虚拟主机。
-
建立虚拟主机通过修改配置文件来实现:
- 可以把虚拟主机配置内容直接写入主配置文件(早期Apache版本)
- 在conf.d目录下建立独立的配置文件(vhost.conf)(建议使用方法)
- 虚拟主机配置文件名称自定,但必须以”.conf”结尾。
-
虚拟主机配置容器配置:
- 使用VirtualHost作为容器
- 至少要包含以下内容:
- ServerName //指定主机名称
- DocumentRoot //指定主机根目录
- <Directory “…”> //主机根目录权限设置
- DirectoryIndex //指定网站默认主页文件
-
虚拟主机配置容器:
<VirtualHost 192.168.137.5 > //虚拟主机容器开始
ServerName exam.excesoft.com //指定主机名称
DocumentRoot /var/www/html/exam //指定主机根目录
<Directory “/var/www/html/exam”> //主机根目录权限设置
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
DirectoryIndex index.html //虚拟主机网站默认主页文件
</VirtualHost> //虚拟主机容器结束
- 虚拟主机配置准备工作
- 准备好多个网站内容信息
- 准备根据虚拟主机类型准备好端口号、IP地址以及域名。
(二)基于端口的虚拟主机配置
1、修改虚拟主机配置文件
2、修改主配置文件“httpd.conf”,增加对两个端口的监听
3、检查配置文件语法正确性,并重启apache服务
#apachectl configtest //检查配置文件正确性
# systemctl restart httpd //启动httpd服务
4、设置防火墙,放行两个端口
firewall-cmd --list-all #查看当前防火墙设置信息
firewall-cmd --permanent --add-service=http #放行http服务
firewall-cmd --permanent --add-port=8080 /tcp #放行8080端口
firewall-cmd --permanent --add-port=8088 /tcp #放行8088端口
firewall-cmd --reload
(三)基于多IP地址的虚拟主机配置
1、为虚拟机添加网卡并查看IP地址
2、修改虚拟主机配置文件
3、修改主配置文件“httpd.conf”,增加对两个IP的监听
4、检查配置文件语法正确性,并重启apache服务
#apachectl configtest //检查配置文件正确性
# systemctl restart httpd //启动httpd服务
5、设置防火墙,放行两个端口
firewall-cmd --list-all #查看当前防火墙设置信息
firewall-cmd --permanent --add-service=http #放行http服务
firewall-cmd --reload
(四)基于域名的虚拟主机配置
1、修改虚拟主机配置文件
2、修改主配置文件“httpd.conf”,增加对IP的端口监听
3、检查配置文件语法正确性,并重启apache服务
#apachectl configtest //检查配置文件正确性
# systemctl restart httpd //启动httpd服务
4、设置防火墙,放行两个端口
firewall-cmd --list-all #查看当前防火墙设置信息
firewall-cmd --permanent --add-service=http #放行http服务
firewall-cmd --reload
5、在实体机上配置域名解析文件
在“C:\Windows\System32\drivers\etc”目录下找到“hosts”文件,添加域名解析。