Apache软件服务|功能详解

Apache简介

Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。同时Apache音译为阿帕奇。

Apache功能实操

注意:
本机ip:172.25.254.100
SELinux状态为Enforcing

一、Apache基本配置

1、安装Apache

yum install httpd -y                     ##安装阿帕奇(此前得配置yum源)
systemctl start httpd.service            ##启动阿帕奇
firewall-cmd --permanent --add-service=http  ##火墙允许http服务
systemctl restart firewalld.service      ##重启火墙

网络访问
在这里插入图片描述
2、修改默认端口

rpm -qc httpd                            ##查看阿帕奇配置文件名称

在这里插入图片描述

vim /etc/httpd/conf/httpd.conf    ##apache主配置文件
 41 #Listen 12.34.56.78:80
 42 Listen 80                     ##修改默认端口80(从截图可以看到,改为8080)
systemctl restart httpd.service

netstat -antlupe | grep httpd     ##查询httpd监听端口

172.25.254.100:8080                ##网页访问8080端口

可以看到修改后的端口为8080
在这里插入图片描述
在这里插入图片描述
浏览器访问
在这里插入图片描述
3、修改默认发布目录

vim /etc/httpd/conf/httpd.conf       ##http主配置文件
 119 #DocumentRoot "/var/www/html"    ##注释掉原默认发布目录
 120 DocumentRoot "/mnt/html"         ##修改默认发布目录为/mnt/html
 125 <Directory "/mnt">
 126     Require all granted
 127 </Directory>

在这里插入图片描述

mkdir /mnt/html           
cd /mnt/html/                  
vim index.html     ##在修改的默认发布目录中建立文件index.html
  1 
  2 <h1>我爱你哦!</h1>

在这里插入图片描述

[root@station html]# getenforce      ##查看SELinux状态
Enforcing                            ##强制
[root@station html]# semanage fcontext -l | grep /var/www/html  
                                     ##查看/var/www/html的安全上下文
[root@station html]# systemctl restart httpd   ##重启http服务

在这里插入图片描述

[root@station html]# semanage fcontext -a -t httpd_sys_rw_content_t '/mnt(/.*)?'  
                                      ##修改/mnt及其子目录,文件安全上下文
[root@station html]# restorecon -FvvR /mnt  ##刷新更改

网页访问
在这里插入图片描述
4、修改默认发布文件
默认发布文件就是访问apache时没有指定文件名称时默认访问的文件
这个文件可以指定多个,有访问顺序

vim /etc/httpd/conf/httpd.conf    
  169     DirectoryIndex  file.html  index.html        ##默认发布文件读取顺序
systemctl restart httpd

在这里插入图片描述

扫描二维码关注公众号,回复: 5273749 查看本文章
[root@station html]# vim file.html
 我是file,现在我才是首要默认发布目录!

在这里插入图片描述
浏览器访问
在这里插入图片描述

二、Apache的虚拟主机设置

虚拟主机允许您从一个 httpd 服务器同时为多个网站提供服务。
多个域名都指向同一个 IP 地址 , 但是 Web 服务器根据用于到达站点的域名提供具有不同内容的不同网站。

1)建立文件,显示在网页上效果

mkdir /var/www/virtual/lee.com/news -p         ##创建目录
mkdir /var/www/virtual/lee.com/music -p
vim /var/www/virtual/lee.com/music/file.html   ##写网页文件
  <h1>这里是音乐哦!</h1>
vim /var/www/virtual/lee.com/news/file.html
 <h1>这里是新闻哦!</h1>

2)将建立的文件和http建立联系

cd /etc/httpd/conf.d/           ##进入副配置文件
vim adefault.conf               ##编写脚本
###################
  1 <VirtualHost *:80>
  2         DocumentRoot "/mnt/html"
  3 </VirtualHost>
  4 <Directory "/mnt">
  5         Require all granted
  6 </Directory>
  7 <VirtualHost *:80>
  8         ServerName "news.com"         ##域名
  9         DocumentRoot "/var/www/virtual/lee.com/news"     ##授权文件路径
 10         CustomLog logs/news.log combined              ##日志
 11 </VirtualHost>
 12 <Directory "/var/www/virtual/lee.com/news">         ##读取文件路径
 13         Require all granted                         ##允许所有人访问
 14 </Directory>
 15 <VirtualHost *:80>
 16         ServerName "music.com"
 17         DocumentRoot "/var/www/virtual/lee.com/music"
 18         CustomLog logs/music.log combined
 19 </VirtualHost>
 20 <Directory "/var/www/virtual/lee.com/music">
 21         Require all granted
 22 </Directory>
##########################

在这里插入图片描述
3)建立本地解析

vim /etc/hosts                           ##本地域名解析
 172.25.254.100 news.com music.com

在这里插入图片描述
4)测试

默认发布文件仍然没变
在这里插入图片描述
访问news.com出现我所要发布的内容
在这里插入图片描述
访问music.com出现我所要发布的内容
在这里插入图片描述

三、配置基于用户的身份验证

 Apache 无格式文件用户身份验证

在此配置中 , 用户账户和密码存储在本地 .htpasswd 文件中。
处于安全原因 , 该文件不能保存在网站的 DocumentRoot 中 ,
而应保存在 Web 服务器不提供服务的一些目录中。

注意:在副配置目录下(/etc/httpd/conf.d)编写
1)针对与主机的控制访问

vim /etc/httpd/conf.d/adefault.conf
  6 <Directory "/var/www/virtual/lee.com/music">
  7         Require all granted          ##允许所有人访问
  8         Order Deny,Allow             ##列表读取顺序,后读取的列表会覆盖先读取内容的重复部分
  9         Deny from all                ##拒绝所有用户访问
 10         Allow from 172.25.254.5      ##允许172.25.254.105访问
 11 </Directory>
systemctl restart httpd

在这里插入图片描述
网页访问
主机172.25.254.5访问成功,显示内容
而主机172.25.254.205访问失败,显示的是默认主页,看不到其要展示的内容
在这里插入图片描述
2)针对用户方式的访问控制

htpasswd -cm /etc/httpd/htuser admin    ##创建用户admin(建立第一个用户加c)
                                                                 ##设密码123
htpasswd -m /etc/httpd/htuser admin1    ##创建用户admin1(不加c,否则覆盖前面所有已建立用户)
                                                                 ##设密码321
cat /etc/httpd/htuser               ##查看建立的用户

在这里插入图片描述

mkdir -p /var/www/html/admin
vim aadmin.conf                            ##读取文件有优先级,按名字(字母)排序
#################
  1 <VirtualHost _default_:80>
  2         DocumentRoot "/var/www/html"
  3 </VirtualHost>
  4 <Directory "/var/www/html/admin">
  5         AuthuserFile /var/httpd/htuser              ##用户账户文件途径
  6         Authname "Please input your name and password"    ##用户登陆交互界面提示
  7         AuthType basic                           ##验证类型为简易验证帐号
  8 #       Require user admin                      ##只允许用户admin登陆
  9         Require valid-user                      ##验证密码登陆
 10 </Directory>
#################
systemctl restart httpd.service

网页访问:http://172.25.254.100/admin
在这里插入图片描述

四、Apache支持的编程语言

1)默认支持html语言,无需下载插件

2)php语言(不能直接识别,需下载插件)

vim /var/www/html/index.php    ##编写php文件
  1 <?php
  2         phpinfo();
  3 ?>
systemctl restart httpd.service

网络访问:http://172.25.254.100/index.php
在这里插入图片描述
什么都没有。
安装插件:

yum install php -y                     ##安装php
systemctl restart httpd.service        ##重启http服务

网络访问:http://172.25.254.100/index.php
在这里插入图片描述
能够识别了。

3)CGI

mkdir -p /var/www/html/cgi
semanage fcontext -a -t httpd_sys_script_exec_t '/var/www/html/cgi(/.*)?'    ##修改安全上下文
restorecon -FvvR /var/www/html/cgi                                      ##刷新
vim /var/www/html/cgi/index.cgi                                         ##写脚本
  1 #! /usr/bin/perl
  2 print "Content-type: text/html\n\n";
  3 print `date`;
chmod +x /var/www/html/cgi/index.cgi                            ##给执行权限
/var/www/html/cgi/index.cgi                                     ##执行

在这里插入图片描述

vim /etc/httpd/conf.d/aadmin.conf
 11 <Directory "/var/www/html/cgi">
 12         Options +ExecCGI
 13         AddHandler cgi-script .cgi	    ##cgi目录下,以.cgi结尾的都是cgi脚本
 14 </Directory>
systemctl restart httpd.service

在这里插入图片描述
网页访问:http://172.25.254.100/cgi/index.cgi
在这里插入图片描述
4)WSGI

yum install mod_wsgi.x86_64 -y
vim /var/www/html/cgi/westos.wsgi
  1 #!/usr/bin/env python
  2 import time
  3 
  4 def application (environ, start_response):
  5   response_body = 'UNIX EPOCH time is now: %s\n' % time.time()
  6   status = '200 OK'
  7   response_headers = [('Content-Type', 'text/plain'),
  8                       ('Content-Length', '1'),
  9                       ('Content-Length', str(len(response_body)))]
 10   start_response(status, response_headers)
 11   return [response_body]

在这里插入图片描述

vim /etc/httpd/conf.d/aadmin.conf
 20 <VirtualHost _default_:80>
 21         DocumentRoot "/var/www/html"
 22         WSGIScriptAlias /WSGI /var/www/html/cgi/westos.wsgi     ##文件途径
 23 </Virtualhost>
systemctl restart httpd.service 

网络访问http://172.25.254.100/WSGI
在这里插入图片描述

五、HTTPS

HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer 或 Hypertext Transfer Protocol Secure,超文本传输安全协议),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

1、主要作用
a)建立信息安全通道,保证数据传输的安全
b)确认网站的真实性,点击浏览器地址栏的锁头标志来查看网站认证之后的真实信息,也可以通过 CA 机构颁发的安全签章来查询

2、HTTPS和HTTP的区别
a)https协议需要到ca申请证书,一般免费证书很少,需要交费。
b)http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。
c)http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
d)http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全

3、运用HTTPS

1)制作钥匙,锁

yum install mod_ssl.x86_64 -y
yum install crypto-utils.x86_64 -y
genkey www.westos.com                       ##生成钥匙,锁

可以看到生成的钥匙和锁的位置,点Next
在这里插入图片描述
有5种加密选择,示例选第二种
在这里插入图片描述
等待完成
在这里插入图片描述
现在需要我们敲击键盘来使其加载
在这里插入图片描述
这里会提示是否需要到CA申请证书,这里我们就不申请了,需要花费人民币的!
选NO
在这里插入图片描述
直接选Next
在这里插入图片描述
填写信息:国家、省份、城市、公司名称、部门、域名
在这里插入图片描述
可以看到钥匙,锁的位置
在这里插入图片描述
2)修改配置文件

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.service               ##重启http服务

在这里插入图片描述
3)网页访问https://172.25.254.100/
可以看到锁
在这里插入图片描述
点击锁能够看到证书的一些信息
在这里插入图片描述

六、设定https虚拟主机并设定网页重写

1)网络重写是什么?
举个例子,来快速感受下。我们在浏览器地址栏中输入www.baidu.com就能访问百度了,可以看到地址栏的网址会变成https://www.baidu.com。让我们输入的不规范网址变为规范的网址就叫网络重写。

2)设定网络重写

vim /etc/httpd/conf.d/z_login.conf
  1 <VirtualHost *:80>
  2          ServerName login.westos.com
  3          RewriteEngine on
  4          RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=301]
  5 </VirtualHost>
systemctl restart httpd

3)网页访问login.westos.com
在这里插入图片描述
重写成功

4)部分代码解释

^(/.*)$           ##客户在浏览器地址栏中输入的所有字符
https://          ##强制客户加密访问
%{HTTP_HOST}      ##客户请求主机
$1                ##“$1”表示^(/.*)$的值

总结:

vim  /etc/httpd/conf/httpd.conf         ##主配置文件
 
cd  /etc/httpd/conf.d                   ##副配置目录

在副配置目录编写脚本

  <VirtualHost *:80>                    ##80端口
          ServerName "news.com"         ##写域名
          DocumentRoot "/var/www/virtual/lee.com/news"     ##授权文件路径权限
          CustomLog logs/news.log combined              ##日志
  </VirtualHost>
  <Directory "/var/www/virtual/lee.com/news">         ##读取文件路径
          Require all granted                         ##允许所有人访问
  </Directory>

在读取文件路径目录下编辑文件index.html,里面即是阿帕奇展示内容
重启http服务

猜你喜欢

转载自blog.csdn.net/weixin_44297303/article/details/87830516