Apache--Web服务器软件

环境: reset–ip,route,yum源

1.安装部署

yum install httpd -y		//apache软件
yum install httpd-manual	//apache的手册
systemctl start httpd 
systemctl enable httpd 

在这里插入图片描述

firewall-cmd --list-all				##列出火墙信息
firewall-cmd --permanent --add-service=http	##永久允许http
firewall-cmd --reload				##火墙从新加载策略

在这里插入图片描述
测试:

/var/www/htmlapache的/目录,默认发布目录
/var/www/html/index.htmlapache的默认发布文件

(1)编辑默认发布文件:vim /var/www/html/index.html
在这里插入图片描述在这里插入图片描述
(2)在浏览器中测试: http://172.25.60.1
在这里插入图片描述
2.apache的基础信息

主配置目录/etc/httpd/conf
主配置文件/etc/httpd/conf/httpd.conf
子配置目录/etc/httpd/conf.d/
子配置文件/etc/httpd/conf.d/*.conf
默认发布目录/var/www/html
默认发布文件index.html
默认端口80
默认安全上下文httpd_sys_content_t
程序开启默认用户apache
apache日志/etc/httpd/logs/*

(1)修改默认端口:

netstat -antlupe | grep httpd	//httpd使用的端口
semanage port -l | grep http	//http默认允许使用的端口

在这里插入图片描述

修改为允许的:

vim /etc/httpd/conf/httpd.conf
	43 Listen 8080		##修改默认端口为8080
systemctl restart httpd
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --reload 

在这里插入图片描述
在这里插入图片描述
测试:http://172.25.60.1:8080 //加上端口号,不然浏览器默认访问80端口
在这里插入图片描述
修改为不允许的:

netstat -antlupe | grep 6666	//查看6666没有被占用
vim /etc/httpd/conf/httpd.conf
43 Listen 6666		##修改默认端口为6666
systemctl restart httpd		//重启失败
	修改selinux:setenforce 0 :Enforcing-->Permissive
systemctl restart httpd		//重启成功
测试:http://172.25.254.120:6666	//访问不到

semanage port -a -t http_port_t -p tcp 6666
修改selinux:setenforce 1 :Permissive-->Enforcing
systemctl restart httpd
测试:http://172.25.254.120:6666	//再次访问就可以了

(2)修改默认发布文件:
默认发布文件就是访问apache时没有指定文件名称时默认访问的文件。

vim /etc/httpd/conf/httpd.conf
	164     DirectoryIndex index.html test.html	//当index.html不存在时访问test.html

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

  • 注:/etc/httpd/conf/httpd.conf文件可以指定多个默认发布文件,当有多个时,按顺序访问(前面的不存在时,访问后面的)

当有两个默认发布文件时,默认访问配置文件中写的第一个:
在这里插入图片描述
在这里插入图片描述
访问:172.25.60.1–出现的内容为配置文件中指定的第一个文件中的内容

在这里插入图片描述
当删除掉配置文件中的第一个,访问时第一个不存在,就回去寻找默认的第二个:
在这里插入图片描述
访问:172.25.60.1–出现的内容为配置文件中指定的第二个文件中的内容
在这里插入图片描述
(3)修改默认发布目录;
第一步: 创建发布目录,编辑发布文件

mkdir /westos/html -p
vim /westos/html/test.html	

在这里插入图片描述
第二步: 编辑主配置文件,修改默认发布目录

vim /etc//httpd/conf/httpd.conf
120 DocumentRoot "/westos/html"		//不能访问,没权限(selinux=0时也不能访问,说明与其无关)
systemctl restart http

在这里插入图片描述
直接访问时无法访问,修改selinux=0时也不能访问,说明与selinux无关
在这里插入图片描述
第三步: 既然与selinux无关,那么可能就是权限问题。修改主配置文件,给默认发布目录权限

vim /etc//httpd/conf/httpd.conf
121 <Directory "/westos/html">		//给权限
122         Require all granted
123 </Directory>						
systemctl restart http

在这里插入图片描述
在这里插入图片描述
虽然可以访问了,但将selinux=1时,就又出现不能访问的情况,说明此时与安全上下文有关
在这里插入图片描述
在这里插入图片描述
第四步: 修改安全上下文

semanage fcontext -a -t httpd_sys_content_t '/westos/html(/.*)?'	//修改安全上下文
restorecon -RvvF /westos/html/		//刷新

在这里插入图片描述
再次测试时,就可以正常访问了
在这里插入图片描述
3.apache的虚拟主机

指的是在一台主机上运行多个网站,下面我们以这三个网站为例:www.westos.comnews.westos.commusic.westos.com

步骤一: 建立发布目录与编写发布文件

mkdir /var/www/vhost/news  -p
mkdir /var/www/vhost/music -p
vim /var/www/vhost/music/index.html	--music	
vim /var/www/vhost/news/index.html	--news	
	//index.html可以自定义为*.html,但需要在主配置文件中加上此文件为默认发布文件
	//或者访问时加上文件名即可

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
步骤二: 编辑子配置文件

vim /etc/httpd/conf.d/vhost.conf	//在子配置目录中编辑子配置文件vhost.conf
	//文件名必须以.conf结尾,结尾方式在主配置文件中定义了

在这里插入图片描述
代码段:

 <virtualHost _default_:80>
             DocumentRoot /var/www/html
             CustomLog logs/default.log combined
    </VirtualHost>
    
    <VirtualHost *:80>
             ServerName news.westos.com
             DocumentRoot /var/www/vhost/news
             CustomLog logs/news.log combined
    </VirtualHost>
    <Directory "/var/www/vhost/news">
             Require all granted
    </Directory>
    
    <VirtualHost *:80>
             ServerName music.westos.com
             DocumentRoot /var/www/vhost/music
             CustomLog logs/music.log combined
    </VirtualHost>
    <Directory "/var/www/vhost/music">
             Require all granted
    </Directory>

步骤三: 在真机中编辑本地解析,用真机测试
编辑本地解析:
在这里插入图片描述

在这里插入图片描述
打开浏览器测试:三个站点搭建成功
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.apache访问控制

(1)基于ip

白名单:

vim /etc/httpd/conf.d/vhost.conf		//编辑子配置文件
	<virtualHost _default_:80>
         DocumentRoot /var/www/html
         CustomLog logs/default.log combined
	</VirtualHost> 
	<Directory "/var/www/html">			//访问规则
        Order Deny,Allow			//先读取Deny再读取Allow
        Allow from 172.25.60.250	//允许172.25.60.250(真机ip)访问
        Deny from All				//不允许所有人访问
	</Directory>		//先不让所有人访问,再可以让172.25.60.250访问---白名单
systemctl restart httpd

在这里插入图片描述
在虚拟机中配置好域名解析
在这里插入图片描述
在这里插入图片描述
测试:真机为白名单用户,可以访问;虚拟机不在白名单中,不可以访问。
在这里插入图片描述
在这里插入图片描述
黑名单:

vim /etc/httpd/conf.d/vhost.conf	//编辑子配置文件
	<Directory "/var/www/html">		//访问规则
        Order Allow,Deny			//先读取Allow再读取Deny
        Allow from All				//允许所有人访问
        Deny from 172.25.60.250		//不允许172.25.60.250访问
	</Directory>		//先允许所有人,再不允许172.25.60.250访问---黑名单
systemctl restart httpd

在这里插入图片描述
测试:真机为黑名单用户,不可以访问;虚拟机不在黑名单中,可以访问。在这里插入图片描述
在这里插入图片描述

(2)基于用户名和密码
第一步:在某个文件中创建用户名和密码
在这里插入图片描述
第二步:编辑子配置文件,并重启服务

vim /etc/httpd/conf.d/vhost.conf
	<virtualHost _default_:80>
         DocumentRoot /var/www/html
         CustomLog logs/default.log combined
	</VirtualHost> 
	<Directory "/var/www/html">
        AuthUserFile /etc/httpd/.apache_auth		//用户名密码文件
        AuthType basic					//文件中指定的才能访问
        AuthName "Please input username add password"	//提示语
        #Require user admin			//Require user指定可以访问的用户
        Require valid-user			//Require指定所有人都可以访问
	</Directory>
systemctl restart httpd

指定用户可以登陆:Require user admin //指定只有admin用户可以登陆,当指定多个用户时,中间用空格分隔开
所有用户都可以登陆: Require valid-user在这里插入图片描述

测试:在浏览器中输入www.westois.com,就会弹出输入用户名和密码的窗口
在这里插入图片描述
当指定admin用户可以登陆时,只有admin用户可以登陆,其他用户登陆就会被拒绝
当所有用户都可以登陆时,输入用户名和密码就可以登陆

  • 做完实验恢复为原来的环境。

5.apache 支持的语言
(1)html: 前面用的就是改语言,就不举例了。

(2)php:
第一步:编辑发布文件

vim /var/www/html/index.php
	<?php
		phpinfo();
	?>

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

第二步:下载php

yum install php -y
systemctl restart httpd		//在/etc/httpd/conf.d中生成php.conf文件

测试:在浏览器中输入172.25.60.1/index.php,可以看到php的主页,说明文件中的内容已经执行
在这里插入图片描述

(3)cgi
第一步:创建发布目录,并更改安全上下文

mkdir -p /var/www/html/cgi
semanage fcontent -a -t  httpd_sys_script_exec_t '/var/www/html/cgi(/.*)?'
restorecon -RvvF /var/www/html/cgi/

在这里插入图片描述
第二步:编辑发布文件脚本,赋予和执行权限,并在shell中测试能否执行

vim /var/www/html/cgi/index.cgi		//编辑perl语言脚本--显示系统当前时间
	#!/usr/bin/perl
	print "Content-type: text/html\n\n";
	print `date`;
chmod +x /var/www/html/cgi/index.cgi
/var/www/html/cgi/index.cgi	#执行下脚本确保脚本运行正常

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

第三步:修改子配置文件,并重启服务

vim /etc/httpd/conf.d/vhost.conf
  1 <virtualHost _default_:80>
  2          DocumentRoot /var/www/html
  3          CustomLog logs/default.log combined
  4 </VirtualHost>
  5 <Directory "/var/www/html/cgi">		//发布目录
  6          Options +ExecCGI
  7          AddHandler cgi-script .cgi
  8 </Directory>
systemctl restart httpd 

在这里插入图片描述
在这里插入图片描述
测试:在浏览器中输入172.25.60.1/cgi/index/cgi,执行脚本内容,说明实验成功
在这里插入图片描述

(4)wsgi
第一步:下载

   yum install mod_wsgi -y

第二步:创建发布目录与发布文件

mkdir /www/cgi-bin
vim /var/www/cgi-bin/webapp.wsgi

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

第三步:编辑子配置文件

vim /etc/httpd/conf.d/vhost.conf
 	<VirtualHost *:80>
          ServerName wsgi.westos.com		//建立一个新的
          WSGIScriptAlias / /var/www/cgi-bin/webapp.wsgi
 	</VirtualHost>
systemctl restart httpd

在这里插入图片描述

第四步:在真机中编辑本地解析,加上wsgi.westos.com的解析

测试:在浏览器中输入wsgi.westos.com

在这里插入图片描述

7.加密访问:https
(1)下载

yum install mod_ssl -y
yum install crypto-utils -y

在这里插入图片描述
(2)生成密钥:genkey apache_server.westos.com
输入命令就会弹出下图窗口,选择下一步
在这里插入图片描述
越长安全性越高,生成需要的时间越长;做实验钻选1024就可以了
在这里插入图片描述
生成密钥需要随机数,如果比较慢,就打开服务器,随机输入一些字母就好了
在这里插入图片描述
在这里插入图片描述
此处选择NO,选择YES时收费的
在这里插入图片描述
在这里插入图片描述
填写相关信息,下一步就可以了
在这里插入图片描述
此时密钥对就生成了,密钥对的位置也回给出
在这里插入图片描述

(3)在/etc/httpd/conf.d/ssl.conf 中将原来的密钥对用新生成的替换,并重启httpd服务

vim /etc/httpd/conf.d/ssl.conf 
101 SSLCertificateFile /etc/pki/tls/certs/www.westos.com.crt
109 SSLCertificateKeyFile /etc/pki/tls/private/www.westos.com.key
systemctl restart httpd

在这里插入图片描述

(4)在火墙中添加https
在这里插入图片描述
测试:在浏览器中输入https://172.25.60.1,刷新
在这里插入图片描述
出现如图所时情况,我们需要在浏览器中手动设置
在这里插入图片描述
在这里插入图片描述
设置成功后在返回就会看到i如图所示的样子,并且点击锁查看,也正是我们设定的

在这里插入图片描述

在这里插入图片描述

8设定https虚拟主机并设定网页重写
(1)建立发布目录,编写发布文件
在这里插入图片描述
在这里插入图片描述
(2)编辑子配置文件

^(/.*)$客户在浏览器地址栏中输入的所有字符
https://强制客户加密访问
%{HTTP_HOST}客户请求主机
$1表示 ^(/.*)$的值
[redirect=301]永久重写; 302为临时

在这里插入图片描述

在这里插入图片描述

  1 <VirtualHost *:443>		//建立一个443端口虚拟主机
  2         ServerName login.westos.com
  3         DocumentRoot /var/www/vhost/login		//默认发布目录
  4         CustomLog "logs/login.logs" combined
  5         SSLEngine on		//开启这个功能
  6         SSLCertificateFile /etc/pki/tls/certs/www.westos.com.crt	//钥匙
  7         SSLCertificateKeyFile /etc/pki/tls/private/www.westos.com.key	//锁
  8 </VirtualHost>
  9 <Directory "/var/www/html/virtual/login.westos.com/html">	//授权
 10         Require all granted
 11 </Directory>
 12 <VirtualHost *:80>	//建立一个80端口的虚拟主机
 13         ServerName login.westos.com
 14         RewriteEngine On	//将网页重写功能开启
 15         RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=301]	//redirect=301永久设定
 16 </VirtualHost>

编辑完配置文件重启服务:systemctl restart httpd

(3)在测试端浏览器主机本地解析/etc/shots中添加解析
在这里插入图片描述
测试:在浏览器中输入login.westos.com
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值