Apache服务

一.Apache简单介绍

问:Apache是什么?
答:1、Apache是一个Web服务器软件,Apache取自“a patchy server”,意思是充满补丁的服务器,它可以运行在几乎所有广泛使用的计算机平台上,是最流行的Web服务器端软件之一
2、在web被访问时通常使用http://的方式,http是超文本传输协议
http:// 超文本传输协议的支持软件大概有以下几种(可以用下面的命令查询:curl -I 浏览器名称,例如:curl -I baidu.com查询百度使用的服务器软件,curl -I qq.com,查询qq的服务器软件):Apache、nginx、stgw、jfe、Tengine,也就是说如果你在系统中安装了这些软件中的任何一种,那么你的系统对外就支持http协议,别人就可以通过浏览器来访问你的主机
例如:
在这里插入图片描述

二.Apache的安装及启用

安装

rhel8中的安装命令:dnf install httpd.x86_64 -y
rhel7中的安装命令:yum install httpd.x86_64 -y

在这里插入图片描述

Apache的启用

1、systemctl enable --now httpd  		#开启服务并设定为开机启动    
   相当于systemctl start httpd + sysytemctl enable httpd两条命令一起使用
2、设定防火墙允许http和https服务
firewall-cmd --list-all 			#查看防火墙信息
firewall-cmd --get-services			#查看防火墙支持的服务名称
firewall-cmd --permanent --add-service=http	#在火墙中永久开启http访问
firewall-cmd --permanent --add-service=https	#在火墙中永久开启https访问
firewall-cmd --reload				#刷新防火墙使设定生效

启用过程:
在这里插入图片描述

在这里插入图片描述
Apache启用成功:默认访问Apache的测试页
在这里插入图片描述

三.Apache的基本信息

Apache基本信息
服务名称httpd
主配置文件/etc/httpd/conf/httpd.conf
子配置文件/etc/httpd/conf.d/*.conf
默认发布目录/var/www/html
默认发布文件index.html
默认端口http为80端口 https为443端口
默认用户apache
日志存放位置/etc/httpd/logs

四.Apache的基本配置

实验环境:
rhel7能正常上网 ,配置静态网络:IP DNS 网关
rhel8:安装yum源,安装Apache服务,ip:192.168.0.110

1.Apache端口修改

1、netstat -antlupe | grep httpd
或
ss -antlupe | grep httpd
				#查看Apache服务的端口
ps aux | grep httpd		#查看apache服务进程的信息,如用到的用户等等				

2、修改主配置文件的端口号为8080端口然后设置防火墙规则使其可以成功访问
vim /etc/httpd/conf/httpd.conf
Listen 8080
systemctl restart httpd
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --reload 

3、修改主配置文件的端口号为6666端口然后设置防火墙规则使其可以成功访问
<1>
vim /etc/httpd/conf/httpd.conf
Listen 6666
<2>
systemctl restart httpd(此时在selinux为强制模式时服务会启动失败)
<3>
semanage port -l | grep http			#查看httpd服务的允许端口
semanage port -a -t http_port_t -p tcp 6666	#将6666添加到允许端口中
systemctl restart httpd
<4>
firewall-cmd --permanent --add-port=6666/tcp
firewall-cmd --reload 

1、
在这里插入图片描述
2、修改主配置文件的端口号为8080端口然后设置防火墙规则使其可以成功访问
<1> 查看服务的主配置文件
在这里插入图片描述
<2> 在主配置文件中修改端口号为8080在这里插入图片描述
<3> 设置防火墙允许8080端口
在这里插入图片描述
访问成功
在这里插入图片描述
3、修改主配置文件的端口号为6666端口然后设置防火墙规则使其可以成功访问
<1>
在这里插入图片描述
<2> systemctl restart httpd(此时在selinux为强制模式时服务会启动失败)
在这里插入图片描述
在selinux为警告模式时服务重启成功,并且可以看到端口号为6666
在这里插入图片描述
为什么selinux对8080端口没有影响,而对6666端口有影响呢,这是因为8080端口在httpd的缓存端口中,而6666不在服务的允许端口中,所以selinux会拒绝设置该服务的端口为6666,因此我们需要添加6666到httpd服务允许的端口列表中
在这里插入图片描述
<3>添加防火墙允许6666端口然后就可以访问成功

2.默认发布文件修改

index.html为httpd服务的默认发布文件,当该文件存在时默认访问文件里的内容,
如果该文件不存在,那么默认访问Apache的默认测试页,可以修改默认发布文件

例如:修改默认发布文件为wei.html
vim /etc/httpd/conf/httpd.conf

DirectoryIndex wei.html index.html
注意:此处写的文件按顺序访问,默认访问第一个文件的内容

systemctl restart httpd

1、
在这里插入图片描述
默认访问位置:
在这里插入图片描述
默认访问内容为index.html文件的内容
在这里插入图片描述
2、修改文件的访问顺序后,默认访问wei.html文件的内容
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

3.默认发布目录的修改

修改默认发布目录为/wei/html

vim /etc/httpd/conf/httpd.conf

DocumentRoot "/wei/html"		#修改默认发布目录
<Directory "/wei/html">
 Require all granted
</Directory>				#对/wei目录进行授权

修改selinux为警告模式然后重启服务就可以访问成功

注意:如果selinux为强制模式的话需要修改目录的安全上下文:
semanage fcontext -a -t httpd_sys_content_t '/wei(/.*)?'	#修改安全上下文

restorecon -RvvF /wei/						#刷新
systemctl restart httpd 
此时再去浏览器访问可以成功

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述当selinux开启时需要修改安全上下文才可以访问成功
在这里插入图片描述

五.Apache的访问控制

实验素材:

mkdir /var/www/html/wei
vim /var/www/html/wei/index.html
文件内容:
<h1>westosdir's page</h1>
浏览器访问:192.168.0.110/wei

此时两台主机都能访问该文件的内容
在这里插入图片描述

1.基于客户端ip的访问控制

用来控制哪个用户可以访问,哪个用户不可以访问

ip白名单

vim /etc/httpd/conf/conf.d

<Directory "/var/www/html/wei">
 Order Deny,Allow		#读取名单的顺序,后面的名单会覆盖前面名单里相同ip的权限
 Allow from 192.168.0.109
 Deny from All
</Directory>

systemctl restart httpd

ip黑名单

<Directory "/var/www/html/wei">
 Order Allow,Deny
 Allow from All
 Deny from 192.168.0.109
</Directory> 

例如设置IP为192.168.0.109的rhel7主机为黑名单:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.基于用户的访问控制

1、
vim /etc/httpd/conf/httpd.conf

<Directory "/var/www/html/wei">
 AuthUserfile /etc/httpd/hahafile			#指定认证文件
 AuthName "Please input your name and password" 	#认证提示语
 AuthType basic 					#认证类型
 Require valid-user 					#允许所有用户通过认证
或( Require user admin 		#允许通过的认证用户)
</Directory>
2、
htpasswd -cm /etc/httpd/hahafile haha 		#生成认证文件
htpasswd -m /etc/httpd/hahafile hehe   		#生成认证文件
注意:
当/etc/httpd/hahafile文件存在时,在添加用户时不要加-c参数,否则会覆盖原文件内容

systemctl restart httpd

1、配置文件的写法
在这里插入图片描述
2、注意:这两个用户不是系统内的真实用户,是虚拟用户
在这里插入图片描述
此时在浏览器访问192.168.0.110时会提示输入用户名和密码
在这里插入图片描述

六.Apache的虚拟主机

一般情况下,我们在访问一个网站时,能看到许多超链接,每点击一个超链接都会进入到另一个页面,那么我们怎么才能做到不同的子站点有不同的文件对应,这就叫做Apache的虚拟主机,即让一个Apache能够发布多个站点测试页,从而实现一个ip对应多个站点

我们在访问网站时一般都输入网站的域名,但是此时因为没有运营商为我们的IP进行解析,因此需要我们手动地在客户主机中进行本地域名解析:
设置本地解析:
vim /etc/hosts
192.168.0.110 www.weiwei.com

1、建立站点测试页
mkdir -p /var/www/weiwei.com/{news,wenku}
给目录下的index.html文件写入内容
在这里插入图片描述

2、在子配置目录中添加文件,文件名字随意,但必须以 .conf 结尾,例子中的文件为virtualhost.conf

文件内容如下:

<VirtualHost _default_:80>			#默认访问80端口
DocumentRoot "/var/www/html"			#访问文件存放位置
CustomLog logs/default.log combined		#日志存放位置
注意:以上为默认虚拟主机的配置,即访问没有指定过名称的主机访问的是该页面
</VirtualHost> <VirtualHost *:80>
ServerName wenku.weiwie.com
DocumentRoot "/var/www/weiwei.com/wenku"
CustomLog logs/wenku.log combined

</VirtualHost> <VirtualHost *:80>
ServerName news.weiwei.com
DocumentRoot "/var/www/weiwei.com/news"
CustomLog logs/news.log combined
</VirtualHost>

systemctl restart httpd

在这里插入图片描述
在这里插入图片描述
测试:
在浏览器所在主机中手动进行地址解析:

vim /etc/hosts
192.168.0.11 www.westos.com wenku.westos.ocm news.westos.com

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

七.Apache的语言支持

Apache默认支持html语言,也可以设定支持PHP语言和perl语言

设置Apache支持php语言

编写PHP的测试页
vim /var/www/html/index.php
内容:

<?php
phpinfo();
?>

dnf install php -y		#安装PHP
systemctl restart httpd 	#重启Apache即可让Apache识别PHP模块

1、安装PHP,安装好后Apache主配置目录中会多一个文件php.conf
在这里插入图片描述
2、在Apache服务中编写PHP测试页:vim /var/www/html/index.php
在这里插入图片描述
测试:浏览器访问
在这里插入图片描述

设置Apache支持perl语言

因为perl语言是一个脚本型的语言,所以主要是让系统支持cgi(common gateway interface——公共网关接口),因为有很多程序是Apache以外的程序,但是我们要把程序的结果用页面的形式展示出来,通过Apache进行共享,所以要让Apache能够读懂这些程序,因此Apache就对外留了一个接口——cgi,第三方程序通过这个接口把数据传递到Apache内部,Apache就可以对传递进来的数据进行发布

cgi

mkdir /var/www/html/cgidir
vim /var/www/html/cgidir/index.cgi
文件内容:
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "Hello World.";

chmod +x index.cgi		#因为cgi为可执行脚本,所以要给该文件执行权限
./index.cgi			#执行该脚本可以看到输出结果

vim /etc/httpd/conf.d/virtualhost.conf

<Directory "/var/www/html/cgidir">
Options +ExecCGI
AddHandler cgi-script .cgi
</Directory>	

sysytemctl restart httpd				

在这里插入图片描述
但是此时去访问直接显示文件内容,而没有执行,因为Apache不知道该文件中的内容需要执行以后显示执行结果
在这里插入图片描述
告诉Apache文件.cgi中的内容需要执行:
在这里插入图片描述
执行成功,显示结果
在这里插入图片描述

结束!!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值