Apache 的管理及优化 web

实验环境的搭建

在当前主机中配置好软件仓库,可以在当前主机搭建本地软件仓库,也可以编写文件来访问远程主机的软件仓库。

1. Apache 的作用

在 web 被访问时通常使用 http:// 的方式;

http:// 表示超文本传输协议,需要软件来提供;
目前常见的软件如下:

Apache
nginx
stgw
jfe
Tengine

如输入命令 curl -I www.163.com ,即可查看 163 邮箱所用到的提供超文本服务的软件是 web;
输入命令 curl -I www.baidu.com ,即可查看百度所用到的提供超文本服务的软件是 bfe;
输入命令 curl -I www.Taobao.com ,即可查看淘宝所用到的提供超文本服务的软件是 Tengine;
输入命令 curl -I www.qq.com ,即可查看 qq 所用到的提供超文本服务的软件是 isa;

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2. Apache 的安装

dnf install httpd.x86_64 -y

输入命令 dnf search httpd ,在软件库中找到 httpd 服务相关的软件包;
输入命令 dnf install httpd.x86_64 -y ,安装 httpd 服务;

在这里插入图片描述

3. Apache 的启用

在安装完成之后此服务并不会自动开启:
输入命令 systemctl enable --now httpd ,开启服务;
输入命令 systemctl status httpd ,查看服务是否已经成功开启;

在这里插入图片描述

在服务开启的情况下,设定火墙策略:

输入命令 firewall-cmd --permanent --add-service=http ,设定火墙策略,添加 http 服务到策略中;
输入命令 firewall-cmd --reload ,刷新火墙,让火墙策略生效;
输入命令 firewall-cmd --list-all ,查看所有的火墙策略;

在这里插入图片描述
当看到 services: 中有了 http 说明已经设定成功;表示 httpd 服务在火墙策略中对外开放。

当 http 设定好火墙策略时,在访问网页时会出现 Apache 服务的默认网页,如图所示:

在这里插入图片描述

4. Apache 的基本信息

  • 服务名称: httpd
  • 配置文件:
    /etc/httpd/conf/httpd.conf ##主配置文件
    /etc/httpd/conf.d/*.conf ##子配置文件
  • 默认发布目录: /var/www/html
  • 默认发布文件: index.html
  • 默认端口:
    80 #http
    443 #https
  • 用户: apache
  • 日志: /etc/httpd/logs

输入命令 rpm -qc httpd ,来查看此服务的配置文件;
输入命令 netstat -antlupe | grep httpd 来过滤显示 httpd 服务的端口信息;

在这里插入图片描述

5. Apache 的基本配置

  1. Apache 端口配置
    输入命令 getenforce 查看系统的加强型火墙的状态,多看到的信息为 Disabled,表示火墙关闭,不会影响后续实验;当火墙开启时,需要编辑配置文件 /etc/selinux/config ,将火墙关闭,再重启系统即可;
    输入命令 vim /etc/httpd/conf/httpd.conf,编辑主配置文件,修改内容如下图所示,表示将端口信息从 80 修改为 8080 ;

在这里插入图片描述
配置文件编辑完毕保存后,输入命令 systemctl restart httpd ,重启 httpd 服务,当文件内容书写不符合语法时会报错,按照报错信息进行修改,再次重启服务即可;
输入命令 netstat -antlupe | grep httpd 查看修改之后的端口信息;

在这里插入图片描述
由于该服务默认使用的是 80 端口,修改之后就不能访问网页;此时需要做如下设定:

输入命令 firewall-cmd --add-port=8080/tcp ,添加 8080 端口被允许;
输入命令 firewall-cmd --list-all ,查看端口信息;
当显示 ports:8080/tcp 表示设定成功,8080 不受 selinux 的限制;

在这里插入图片描述

此时再访问时只需加上端口就可以访问;

在这里插入图片描述

  1. 默认发布文件
    输入命令 cd /var/www/html ,进入到默认发布目录;
    输入命令 vim kkk,在默认发布目录中写入一个文件;
    输入命令 vim index.html ,在默认发布目录中书写默认发布文件;默认发布文件必须命名为 index.html,而且默认发布文件必须在默认目录中;
    以上书写内容如下图所示:

在这里插入图片描述

输入命令 systemctl restart httpd 重启 httpd 服务,此时在网页中输入当前主机的 ip 就可以访问到默认发布文件;

在这里插入图片描述
而要访问 kkk ,这个文件就需要在 ip 后加上该文件名称;

在这里插入图片描述

更改默认发布文件的名称

输入命令 vim /etc/httpd/conf/httpd.conf 对主配置文件惊醒更改,内容如下所示; 表示默认发布文件有两个, 为westos 和 index.html;当 kkk 不存在时,访问 index.html ;当 kkk 存在时,直接访问 kkk。

在这里插入图片描述
在编写完毕之后,输入命令 systemctl restart httpd 重启 httpd 服务,此时在网页中输入当前主机的 ip 就默认访问的是 kkk 文件;

在这里插入图片描述
当输入命令 rm -fr kkk,删除该文件之后,再次访问即可访问 index.html 的内容。

在这里插入图片描述

在这里插入图片描述

  1. 默认发布目录
  • 默认发布目录 /var/www/html
  • 建立默认发布文件和默认发布目录
    mkdir /var/www/kkk ,建立新的发布目录
    vim /var/www/kkk/index.html,在新的发布目录中建立发布文件;
    文件内容为 /var/www/kkk’s page;
  • vim /etc/httpd/conf/httpd.conf 编辑主配置文件,内容如下所示,第 123 行表示更改默认发布目录为 /var/www/kkk/ ,第125 行表示对于更改目录进行授权访问,否则访问不到;

在这里插入图片描述

  • 输入命令 systemctl restart httpd ,重启 httpd 服务;

再次访问网页时即可看到更改后的默认发布文件内容。

在这里插入图片描述

6. Apache 访问控制

  1. 基于 IP

输入命令 mkdir /var/www/html/westos,新建目录;
输入命令 vim /var/www/html/westos/index.html,在新建的目录中编写发布文件;

在这里插入图片描述

默认在访问网页时,谁都可以看;

在这里插入图片描述

输入命令 vim /etc/httpd/conf/httpd.conf ,编辑主配置文件,设定的用户可以访问;第 130 行表示发布目录,第 131 行表示 allow 和 Deny 的读取顺序,第 132 行表示允许任何人访问 westos,第 133 行表示不允许 1号主机访问;

在这里插入图片描述

因为先读 allow 后读 Deny ,那么Deny 里面的信息会覆盖 allow 中的信息。当在1号主机中访问发布目录时会提示如下图所示的内容:

在这里插入图片描述
当在其他主机中访问时没有限制;

此时如果做如下设置则表示 第133行表示禁止所有用户访问 westos,第132行允许1号主机访问 westos ;此处 131 行表示先读 Deny 的信息,限制所有用户;再读 allow 的信息,允许 1 号主机访问,此时会覆盖 Deny 的信息,只允许1号主机访问;

在这里插入图片描述

  1. 基于用户认证
    建立认证文件
    输入命令 htpasswd -cm /etc/httpd/.htpasswd admin ;
    当认证文件不存在时,需要加-c参数。c 表示创建 ,m 表示设定用户密码;新建的用户在系统存不存在没有关系,只是在完成认证时用到的用户身份而以;
    输入命令 htpasswd -m /etc/httpd/.htpasswd zxk123 ;
    再次建立的时候,当认证文件存在时,加 -c参数,会删除原有内容。

在这里插入图片描述

输入命令 vim /etc/httpd/conf/httpd.conf ,编辑主配置文件;
131 行表示指定认证文件,132 行表示指定认证提示,133 行表示指定认证类型,134 行表示指定认证用户,认证文件中 admin用户可通过认证,135 行表示认证文件中的所有用户都可以通过;

:134 和 135 行的内容只能写一个

在这里插入图片描述
输入命令 systemctl restart httpd 重启 httpd 服务;

此时在访问网页时需要输入用户名和密码;

在这里插入图片描述

此时再打开网页时,只允许 admin 用户通过认证;
当密码输入正确后,便可访问;
再次访问时,便不再需要。

在这里插入图片描述

清空密码
浏览器信息清空,按 ctrl+shift+del ,删除完毕之后,再次访问又要输入用户名称和密码;

在这里插入图片描述

7. Apache 的虚拟主机

  • 默认 Apache 只能发布一个页面;如果要发布多个,可以用多个主机搭建多个 Apache,但是很浪费资源;可以选择搭建 Apache 的虚拟主机的。
  1. 编写主页内容

输入命令 mkdir -p /var/www/westos.org/{linux,shell,python} 建立需要发布的主页;
输入命令以下命令来编写三个主页的内容;

echo linux.westos.org > /var/www/westos.org/linux/index.html
echo shell.westos.org > /var/www/westos.org/shell/index.html
echo python.westos.org > /var/www/westos.org/python/index.html

在这里插入图片描述

  1. 在浏览器所在主机中书写本地解析

输入命令 vim /etc/hosts,书写本地解析地址;输入内容为:

192.168.122.200 linux.westos.org shell.westos.org python.westos.org www.westos.org

此时访问网页时,不管是输入 linux.westos.org shell.westos.org python.westos.org www.westos.org 中的哪一个访问的都是默认的测试页。

  1. 虚拟主机的搭建

输入命令 cd /etc/httpd/conf.d/ 进入到 httpd 服务的子配置目录;
输入命令 vim vhost.conf ,编辑子配置文件;

前 4 行表示 Apache 默认主机,第2、3行表示的分别是默认发布目录和默认主机的日志类型;后面第 6 至 22 行与此类似,表示 Apache 虚拟主机,其中第 7、13、19 表示虚拟主机域名,第8、14、20表示虚拟主机默认发布目录,第 9、15、21表示虚拟主机日志, combined 表示混合形日志;

在这里插入图片描述
在编辑完毕之后,保存退出,输入命令 systemctl restart httpd,重启服务;
当文件内容编辑的有语法问题时,重启服务会报错,

  1. 输入命令 > /var/log/messages,清空日志,再次重启,查看日志信息,找到报错点,进行修改;
  2. 重启失败时,根据提示输入journalctl -xe 查看报错信息,找到报错点,进行修改;

当重启服务完成之后,此时访问网页时即可访问多个页面,多个站点对应多个访问页面。

在这里插入图片描述

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

如果此时某一个页面访问不了,在 /etc/httpd/logs 目录中,输入命令 ls,查看对应为网页的日志信息即可。

8. Apache 的语言支持

  1. php
    输入命令 vim /var/www/html/index.php,编辑发布文件内容如下所示;

在这里插入图片描述
在编辑完成之后,此是访问发布文件时,会提示没有这个服务;

在这里插入图片描述

输入命令 dnf install php -y,安装 php 插件;

安装完成之后,输入命令 systemctl restart httpd,重启服务,此时再次访问发布文件时,会有如图所示的信息:

在这里插入图片描述

  1. cgi
    输入命令 dnf install httpd-manual -y ,安装 apache 的文档;
    安装完成之后,输入命令 systemctl restart httpd ,重启服务;在网页访问时可以访问 apache 的手册;在手册中可以找到 cgi 手册;查看其用法。

在这里插入图片描述

输入命令 mkdir /var/www/html/cgidir,新建发布目录;
输入命令 vim /var/www/html/cgidir/index.cgi,编辑发布文件内容;

在这里插入图片描述

此时在网页中访问之前输入 chmod +x index.cgi,给发布文件执行权限;在访问时效果如图所示,只会看到代码,而不是执行之后的结果;

在这里插入图片描述

不能发布需要编写文件
输入命令 vim /etc/httpd/conf.d/vhost.conf ,编辑主配置文件;内容为第 5 至 8 行,第 5 行为发布目录,第 6 行为执行 cgi 程序,第 7 行为参数触发器;

在这里插入图片描述

编写完成之后,输入命令 systemctl restart httpd ,重启服务,此时在网页中访问 http://192.168.122.200/cgi/index.cgi,会只显示执行之后的内容,Hello, World。

  1. wsgi
  • 书写 wsgi 的测试文件
    输入命令 vim /var/www/html/wsgi/index.wsgi,编辑发布文件;
    在这里插入图片描述

输入命令 chmod +x index.wsgi,给发布文件执行的权限;
输入命令 vim /etc/httpd/conf.d/vhost.conf ,编辑主配置文件,书写内容如下所示:

<VirtualHost *:80>
ServerName wsgi.westos.org
WSGIScriptAlias / /var/www/html/wsgi/index.wsgi

在当前主机的系统中,默认是没有安装 wsgi 的插件,输入命令 dnf search wsgi,查找该软件;
输入命令 dnf install python3-mod_wsgi.x86_64 -y,安装插件;

在这里插入图片描述

输入命令 systemctl restart httpd,重启服务;

浏览器所在的主机中,编辑本地解析文件,内容如下所示:

192.168.122.200 linux.westos.org shell.westos.org python.westos.org www.westos.org wsgi.westos.org

此时访问网页即可看到如图所示的效果:

在这里插入图片描述

9. Apache 的加密访问 https://系统默认不支持

当我们在访问其他 ip 时,默认是明文的;如果企业中在进行数据传输时,也是明文的,那对企业来说是非常不安全的行为;此时,需要对数据进行加密传输。

1.安装加密时用到的 mod_ssl 插件
输入命令 dnf install mod_ssl -y,在安装完成之后,在 /etc/httpd/conf.d 目录中可以看到生成的加密文件 ssl.conf;
输入命令 systemctl restart httpd,重启服务;
输入命令 firewall-cmd --permanent --add-service=https,设置火墙策略,
输入命令 firewall-cmd --reload ,重新加载火墙策略;
输入命令 firewall-cmd --list-all,查看设置的火墙策略是否已经生效;当 https 出现时,说明火墙策略已经生效。

在这里插入图片描述

此时访问时便会提示没有锁;

在这里插入图片描述

在这里插入图片描述

按照提示点击 Advanced 之后, 再点击 Accept the Risk and Continue下载锁,完成之后便可看到网址前面有锁子的标志;

在这里插入图片描述

但是该锁的生成是系统给的,安全性很差;

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

此时要加载自己的锁,就需要将之前生成的锁删除;在浏览器右上角选择 Preference- ->Privacy&Securit- ->View Certificat- ->Server,选中自己点击 delete,刷新浏览界面,又回到警告界面;

在这里插入图片描述

  1. 生成 key

输入命令 mkdir -p /etc/httpd/webkey/ ,建立 key 目录;
输入命令 openssl genrsa -out /etc/httpd/webkey/www.westos.org.key 2048 ,生成 key;
输入命令 ls /etc/httpd/webkey/www.westos.org.key
/etc/httpd/webkey/www.westos.org.key,查看 key;
输入命令 penssl req -new -key /etc/httpd/webkey/www.westos.org.key -out /etc/httpd/webkey/www.westos.org.csr ,生成签证请求证书;

其中 :
Country Name (2 letter code) [XX]:CN ##表示选择国家
State or Province Name (full name) []:shannxi ##表示选择省
Locality Name (eg, city) [Default City]:xi’an ##表示选择市
Organization Name (eg, company) [Default Company Ltd]:westos ##表示设置公司
Organizational Unit Name (eg, section) []:www.westos.org ##表示设置部门
Common Name (eg, your name or your server’s hostname) []:www.westos.org ##表示设置域名
Email Address []: ##表示设置邮箱

Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []: ##表示设置密码
An optional company name []: ##此处不再添加,直接回车,即可设置完毕。

在这里插入图片描述

  1. 对密码设置进行授权
    此处模仿 CA 机构进行授权,只是为了达到实验的效果,现实中的授权机构是需要收钱的;
    输入命令 openssl x509 -req -days 365 -in /etc/httpd/webkey/www.westos.org.csr -signkey /etc/httpd/webkey/www.westos.org.key -out /etc/httpd/webkey/www.westos.org.crt 来对其授权;

在这里插入图片描述

  1. 指定主机

输入命令 mkdir /var/www/westos.org/login -p,建立发布目录;
输入命令 echo login.westos.org > /var/www/westos.org/login/index.html,导入发布内容;

输入命令 vim /etc/httpd/conf.d/vhost.conf ,编辑主配置文件内容如下所示,第36 行表示开启 SSL ,第 37 行表三加密证书,第 38 行表示加密公钥;

在这里插入图片描述
编辑完成之后,输入命令 systemctl restart httpd,重启服务;

浏览器主机中编辑本地解析文件,内容如下所示:

192.168.122.200 linux.westos.org shell.westos.org python.westos.org www.westos.org wsgi.westos.org login.westos.org ##添加要发布的文件 login.westos.org ;

此时在访问 http://login.westos.org 时,会自动生成锁;

在这里插入图片描述

但是直接访问 login.westos.org 不用密码,也可以访问,是因为端口设置的问题;通过以下设置自动转到 443 端口;

输入命令 vim /etc/httpd/conf/httpd.conf,编辑配置文件内容如下所示:

在这里插入图片描述

输入命令 systemctl restart httpd,重启服务;
此时在访问 login.westos.org 会自动跳转至 http://login.westos.org 加密访问。

此时再查看锁信息时,便可以看到自己生成的 key 和认证机构的认证信息。
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值