apache服务详解

APACHE服务

Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中。
Apache HTTP服务器是一个模块化的服务器,源于NCSAhttpd服务器,经过多次修改,成为世界使用排名第一的Web服务器软件。
它可以运行在几乎所有广泛使用的计算机平台上。

HTTP协议

超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。

一、重置虚拟机,配置纯净的环境

这里我的ip为172.25.254.1,并且配置好yum源(apache在linux的镜像文件里有安装包)

二、安装apache并测试其可以正常显示

1、安装apache的服务器 yum install httpd

2、开启http服务,并设置为开机自启动。

3、但是http不在火墙允许列表里,所以我们将其加入火墙允许列表(–permanent表示永久性的 –reload表示重新加载列表)

这里写图片描述
4、apache的默认发布目录为 /var/www/html

默认发布文件:index.html

我们可以在默认发布文件下写下内容,当其他主机来访问时就可以看到
这里写图片描述

三、默认发布文件的修改

默认发布文件可以有多个,在配置文件里修改,其按顺序执行,即如果前面的文件不存在,则访问后面的。

我们在默认发布目录下,新建westos文件加入内容,并在配置文件里加入westos置于index.html前。

1、在默认发布目录下新建westos加入内容,如下图
这里写图片描述
2、编辑主配置文件 vim /etc/httpd/conf/httpd.conf,完成后重启http服务,如下图
这里写图片描述
3、真机进行访问,发现默认发布内容变成了westos文件里的内容
这里写图片描述

四、默认发布目录的修改

1、新建一个目录,准备将其设为默认发布目录
这里写图片描述
2、我们将默认发布目录修改为上面新建的/westos/html,其中Directory模块是赋予新的发布目录的权限,Require all granted表示允许所有用户访问,修改后重启服务,如下图

这里写图片描述
注意:修改的发布目录必须系统存在,如果不存在需要手动建立,否则访问不到。

3)测试:用真机进行访问查看
这里写图片描述
修改默认发布目录时,如果selinux是开启状态,需要将其加入安全上下文列表
semanage fcontext -a -t httpd_sys_content_t ‘/www(/.*)?’
retorecon -RvvF /www/

五、默认端口的修改

apache的默认端口为80,我们修改为8080

1、先在主配置文件里修改
这里写图片描述
2、查看是否修改成功,但此时还是无法访问到,因为火墙的默认端口是80,所以还要将其加入火墙允许列表里,如下图

这里写图片描述
3、真机进行访问,虚拟机ip:8080访问
这里写图片描述

六、apache的访问控制

在主配置文件里写入控制模块,用来设置哪些用户可以访问,哪些不能,具体做法有两种:

1、针对主机的访问控制,如下图,Dirctory模块设置权限,Order表示读取顺序,即允许所有人访问,但是不允许172.25.254.28用户访问 (系统在读取文件时,Order后的顺序决定了读取顺序,先读取的内容会被后读取的内容中相同的内容覆盖掉),虚拟机ip为172.25.254.128,可以正常访问

<Directory "/var/www/html">
         Order Allow,Deny
         Allow from all
         Deny  from 172.25.254.28
 </Directory>

这里写图片描述
这里写图片描述
测试可以看到,修改完后,真机不可以正常访问,虚拟机本身可以访问

2、用户方式的访问控制

1)先建立用户的目录,即把你要发布的内容写在此目录的发布文件中,访问者访问时可以看到

2)建立用户的登陆文件
在/etc/httpd里 执行htpasswd -cm 用户目录 用户添加(第一次创建-cm 再次建立-m即可,否则会覆盖你第一次建立用户)
这里写图片描述

3)编辑主配置文件

<Directory "/var/www/html/westos">
        AuthUserFile  /etc/httpd/user
        AuthName      "please input username and password"
        AuthType      basic
        Require       valid-user
</Directory>
Authuserfile    ##表示登陆文件所在目录
AuthName        ##给进来访问的人提示信息
Authtype        ##认证类型为基本类型
Require         ##指定用户可以登陆,下一行是登陆文件里的所有用户都可以登陆

4)真机进行登陆访问,必须输入在登陆文件里的用户名和密码,才可以登陆
这里写图片描述
这里写图片描述

七、apache的虚拟主机

什么是虚拟主机:

虚拟主机(Virtual Host),又称虚拟服务器、主机空间或是网页空间,是一种网络技术,可以让多个主机名称,在一个单一的服务器上运作,而且可以分开支持每个单一的主机名称。虚拟主机可以运行多个网站或服务。虚拟并非指不存在,而是指空间是由实体的服务器延伸而来,其硬件系统可以是基于服务器群,或者单个服务器。其技术是互联网服务器采用的节省服务器硬件成本的技术,虚拟主机技术主要应用于HTTP、FTP、EMAIL等多项服务,将一台服务器的某项或者全部服务内容逻辑划分为多个服务段位,对外表现为多个服务器,从而充分利用服务器硬件资源。
——Wiki中对虚拟主机的解释。

虚拟主机的配置:
1、在真机(也就是你一会准备进行访问的那台主机)的本地域名解析里加上你准备访问虚拟主机的所有网址
这里写图片描述
2、接下来在虚拟机里

1)先建立news(和music)的目录,下面配置文件里面要指令此目录, /var/www/virtual/news.lal.com/html/
再编辑内容vim /var/www/virtual/news.lal.com/html/index.html 即打开网页就是查看你写在里面的内容

2)cd /etc/httpd/conf.d/切换到此目录下,准备建立三个文件并编辑其内容
编辑a_default.conf(第一行指定默认发布目录,类似首页;第二行为混合日志文件)
编辑news.lal.conf(类似首页下的子网站,第一行为news的网址;第二行指定news所在发布目录;第三行为混合日志文件)
编辑music.lal.conf(首页下的子网站,第一行为music的网址;第二行指定music所在发布目录;第三行为混合日志文件)

3)完成后重启服务,并依次进行访问查看
这里写图片描述
这里写图片描述
这里写图片描述

八、apache支持的语言

php语言

1、安装php yum install php

2、cd /var/www/html 切换到此目录下,并编写php脚本文件,固定格式

<?php
    phpinfo();
?>

3、进行访问查看ip/index.php
这里写图片描述

cgi语言

1、cd /var/www/html 切换到此目录下,建立cgi目录,在cgi目录下编写cgi脚本内容为动态的显示系统当前时间,完成后赋予执行权限,并./文件查看脚本文件是否编写正确

#!/usr/bin/perl
print "Content-type: text/html\n\n";
print `date`;

2、在之前建立的a_default 里写入cgi的授权模块(可以安装httpd-manual访问方式ip/manual去网页里打开cgi模块去复制cgi的配置信息)完成后重启服务

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

3、进行访问查看:ip/cgi/index.cgi
这里写图片描述

九、https

HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket
Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司(Netscape)进行,并内置于其浏览器Netscape Navigator中,提供了身份验证与加密通讯方法。现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。
https是用户在通过http访问时数据不会被破解,简单来说就是http的加密。
https的默认访问端口为443

1、部署https:yum install mod_ssl -y :生成443端口以及https服务,并将其加入火墙允许列表,然后重新加载火墙列表,并重启http服务

yum install mod_ssl
yum install crypto-utils.x86_64

这里写图片描述
2、这时我们https://ip进入后是下图页面
这里写图片描述
3、下面我们来配置其证书信息:yum install crypto-utils -y :生成产生加密证书的命令

安装完成后即可运行产生证书的命令:genkey 网站名称,运行后会产生如下界面进行生成:
这里写图片描述
分别为加密的key和加密证书的文件及其位置,选择Next进行下一步

选择key文件的大小,建议选择1024适中
这里写图片描述
此步为收集密码数据,速度较慢,此时需要在一个新的shell命令行随机输入内容,速度会迅速加快
这里写图片描述
该步骤为是否向CA机构发送,选择NO,不发送
这里写图片描述
填写网站的基本信息,依次为国家、省份、所在城市、公司名称,所属部门,网站网址名称
这里写图片描述
完成后Next即可创建成功

4、https的配置文件会自动在/var/httpd/conf.d/下生成,为ssl.conf文件
vim /etc/httpd/conf.d/ssl.conf,在里面写入生成的key和密码证书文件路径,完成后重启服务
这里写图片描述
5、点击锁子->第一行右边的箭头->More Information->,查看证书
这里写图片描述

十、网页重写

目的:输入指定网址强制使用443https加密

1、在真机本地解析/etc/hosts加入测试网址login.westos.com

2、/var/www/virtual下建立login.westos.com/html目录并编辑目录下/index.com 写入内容

3、在/etc/httpd/conf.d/里建立login.conf文件,编辑
第一部分SSLEngine on 表示认证打开
第二部分允许所有人访问
第三部分RewriteEngine on 打开重写功能
RewriteRule 重写规则 (/. h t t p s : / / 访 1表示^(/.*)$的值
[redirect=301]临时重写 (=302永久重写)

<Virtualhost *:443>
        ServerName "login.westos.com"
        DocumentRoot "/var/www/virtual/login.westos.com/html"
        CustomLog "logs/login.log" combined
        SSLEngine on       ##开始https功能
        SSLCertificateFile /etc/pki/tls/certs/www.westos.com.crt    #证书
        SSLCertificateKeyFile /etc/pki/tls/private/www.westos.com.key ##密钥
</Virtualhost>
<Directory "/var/www/virtual/login.westos.com/html">
        Require all granted
</Directory>
<Virtualhost *:80>         ##网页重写实现自动访问https
        ServerName login.westos.com
        RewriteEngine on
        RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=301]
</Virtualhost>

4、重启服务,真机只输入网址访问查看,认证后发现可以网址前面强制加入https://

这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq_38484607/article/details/81676344