Linux————Apache HTTP Server服务

以下所有的实验实操都在rhel7.0上


什么是apache?

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

它可以运行在几乎所有广泛使用的计算机平台上。

本来它只用于小型或试验Internet网络,后来逐步扩充到各种Unix系统中,尤其对Linux的支持相当完美。Apache有多种产品,可以支持SSL技术,支持多个虚拟主机。Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适合于多处理器环境,因此,在一个Apache Web站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。到目前为止Apache仍然是世界上用的最多的Web服务器,市场占有率达60%左右。世界上很多著名的网站如Amazon、Yahoo!、W3 Consortium、Financial Times等都是Apache的产物,它的成功之处主要在于它的源代码开放、有一支开放的开发队伍、支持跨平台的应用(可以运行在几乎所有的Unix、Windows、Linux系统平台上)以及它的可移植性等方面。


apache

在企业中常用的web服务,用来提供http://(超文本传输协议)


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/


apache的安装部署

关闭selinux

 getenforce
 查看selinux的状态 
 Disabled

在这里插入图片描述

[root@apache yum.repos.d]# yum install httpd  -y		  ##安装http
[root@apache yum.repos.d]# systemctl start httpd 	  ##开启http
[root@apache yum.repos.d]# systemctl enable httpd	  ##开机自启
[root@apache yum.repos.d]# firewall-cmd --list-all		##查看防火墙中是否添加了http服务
[root@apache yum.repos.d]# firefox & 
在浏览器上输入172.25.254.110,会出现apache默认页面

Linux————Apache HTTP Server服务_第1张图片
默认发布目录:/var/www/html/
Linux————Apache HTTP Server服务_第2张图片

[root@apache ~]# rpm -qc httpd 		  ##查看http配置文件:/etc/httpd/conf/httpd.conf;
[root@apache ~]# cd /var/www/html     ##apached的根目录,默认发布目录:apache默认的数据文档存储目录
[root@apache html]# vim index.html    ##apache的默认发布文件
默认文件的内容:

test wetsos1

[root@apache yum.repos.d]# firefox & 在浏览器上输入172.25.254.110,会显示默认发布目录下的发布文件index.html的默认页面

Linux————Apache HTTP Server服务_第3张图片

[root@apache html]# vim westos

test westos2

[root@apache yum.repos.d]# firefox & 在浏览器上输入172.25.254.110/westos,会出现配置文件 的默认页面

Linux————Apache HTTP Server服务_第4张图片

[root@apache html]# yum install -y httpd-manual.noarch
##安装apache的手册
在浏览器上输入172.25.254.110/manual,会出现报错因为没有重新启动服务;
Linux————Apache HTTP Server服务_第5张图片
[root@apache html]# systemctl restart httpd
[root@apache html]# systemctl restart network
Linux————Apache HTTP Server服务_第6张图片

##### 修改默认端口:
vim /etc/httpd/conf/httpd.conf
43 Listen 8080		#修改默认端口为8080

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


firewall-cmd  --permanent  --add-port=8080/tcp  #打开防火墙添加8080端口
firewall-cmd --reload
firewall-cmd --list-all
systemctl restart httpd      ##修改完配置文件要重新启动给防火墙添8080:

[root@apache yum.repos.d]# firefox & 
在浏览器上输入172.25.254.110:8080,因为默认的端口号为80,而端口号发生了改变,所以在访问时需要添加8080端口,会出现配置文件的默认页面;

Linux————Apache HTTP Server服务_第7张图片
在这里插入图片描述

Linux————Apache HTTP Server服务_第8张图片


修改默认发布文件:

默认发布文件就是访问apache时没有指定文件名时默认访问的文件这个文件可以指定多个,有访问顺序

vim /var/www/html/westos
 

test westos2

vim /etc/httpd/conf/httpd.conf 164 DirectoryIndex westos1 index.html ##当westos不存在时访index.html systemctl restart httpd

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

[root@apache yum.repos.d]# firefox &
在浏览器上输入172.25.254.110:8080,会出现配置文件->当westos存在时,自动跳转访问/westos目录下,若westos不存在时会访问index.html
Linux————Apache HTTP Server服务_第9张图片
cd /var/www/html/
ls
rm -fr westos
#删除westos文件
vim /etc/httpd/conf/httpd.conf
#将配置文件的端口好改为80,
systemctl restart httpd.service
[root@apache yum.repos.d]# firefox &
#在浏览器上输入172.25.254.110,westos配置文件不存在时,访问index.html
Linux————Apache HTTP Server服务_第10张图片

还原纯净环境!!!
将配置文件的端口好改为80,(记得实验后把配置文件的164行的westos删除)
在这里插入图片描述
Linux————Apache HTTP Server服务_第11张图片


修改发布目录:
mkdir -p /westos/html/				#创建发布目录
vim /westos/html/index.html

修改发布目录

在这里插入图片描述

vim /etc/httpd/conf/httpd.conf 

DocumentRoot "/westos/html"
文件默认访问目录

注意:常见访问控制指令

Require all granted
允许所有来源访问

Require all denied
拒绝所有来源访问

Require expr expression
允许表达式为true时访问

Require ip 10    172.20   192.168.2
允许特定IP段访问,多个段之前用空格隔开,每个段使用开头几项表示

Require host westos.com
只允许来自域名westos.com的主机访问

Linux————Apache HTTP Server服务_第12张图片
systemctl restart httpd.service
firefox &
#在浏览器上输入172.25.254.110:8080,会显示修改的发布目录下的文件
Linux————Apache HTTP Server服务_第13张图片

还原纯净环境!!!


基于ip访问控制

vim /var/www/html/index.html

test westos1

#先设置默认发布文件的内容 mkdir /var/www/html/westos #创建需要域名访问的的指定目录 vim /var/www/html/westos/index.html

westos目录下

` #编辑域名访问时,指定文件的内容 添加: 设置主配置文件中的域名访问时的访问控制条件 vim /etc/httpd/conf/httpd.conf 121 122 Order(顺序) Allow,Deny ##执行命令,注意顺序,先读Allow,再deny Allow from All #允许所有通过 Deny from 172.25.254.110 #不允许110主机访问,读到deny会覆盖allow(图片有误注意) 123 systemctl restart httpd #重启动服务

Linux————Apache HTTP Server服务_第14张图片

测试:
在110客户机浏览器上面测试:
172.25.254.110测试访问
权限未开,拒绝访问
172.25.254.110/westos/index.html

Linux————Apache HTTP Server服务_第15张图片
172.25.254.110测试访问
正常访问
Linux————Apache HTTP Server服务_第16张图片


基于用户访问控制
指定用户的目录:注意它的绝对路径:/etc/httpd/conf/
htpasswd -cm westosuser admin1 		#添加指定用户,第一次生成文件时加-c参数 
cat westosuser    				    #查看指定用户的存储文件下的帐号与密码
htpasswd -m westosuser admin2		#在第一次添加完用户后,往后添加新用户时不需要-c参数,因为如果还添加参数c会覆盖原本的信息;

Linux————Apache HTTP Server服务_第17张图片

vim /etc/httpd/conf/httpd.conf
添加:
121  
122	AuthUserFile     /etc/httpd/conf/westosuder	##指定用户和密码的目录
	AuthType	basic		#用户认证的类型是mod_auth提供的基本类型basic
	AuthName	"Please input your name and passwd!!"
#	下面这两行只能出现一行
	Require  user   admin   	#只允许admin用户登录
	#Require     valid-user     #存在合法的所有用户都可以登录
123  
sytemctl restart httpd

Linux————Apache HTTP Server服务_第18张图片
测试:http://172.25.254.110/westos/index.html #因为目录就是westos下
帐号:admin1
密码:admin1
正常访问需要认证

Linux————Apache HTTP Server服务_第19张图片

浏览器提示是否记录账户密码
Linux————Apache HTTP Server服务_第20张图片
正常访问
Linux————Apache HTTP Server服务_第21张图片
浏览器访问http://172.25.254.110/westos/index.html
帐号:admin2
密码:admin2

权限不够,拒绝访问
在这里插入图片描述

vim /etc/httpd/conf/httpd.conf
Require valid-user #存在合法的所有用户都可以登录
sytemctl restart httpd
在这里插入图片描述
如上述情况,所有的合法用户都可登录,而本人只设置了两个账户分别为:
账号admin1密码admin1
账号admin2密码admin2
测试与上述一样
日志截断:
/etc/httpd/logs/access_log 登录日志
/etc/httpd/logs/error_log 错误日志


排错:
  1. 服务起不来查看日志
  2. 服务起的来:
    1、查看apache是否被打开
    2、查看ifconfig是否存在ip
    3、查看apache日志:/etc/httpd/logs/error_log

解决在一台主机上完成:指定不同域名访问不同的域名服务

因为如果一个主机只能访问一个域名,这是非常的浪费资源;
所以现在处理一个主机处理不同的域名访问服务
apache的虚拟主机
一台apache主机上开多个站点


关于/etc/hosts文件

hosts——>The static table lookup for host name(文件名查询静态表)
/etc/hosts是配置ip地址和其对应主机名的文件,这里可以记录本机的或其他的ip及其对应

不同的linux版本,这个配置文件也可能不同,比如:Debian的对应文件的/etc/hostname
而linux主机名的相关配置文件就是/etc/hosts;这个文件告诉主机那些域名对应哪些ip,那些主机名对应那些ip:
比如文件中有这样的定义:
172.25.254.110 linux110 test110
假设172.25.254.110是一台网络服务器,在网页中输入http://linux110或http://test110就会打开172.25.254.110的网页。
通常情况下这个文件记录了本机的IP和主机名:
172.0.0.1 localhost.localdomain localhost

一般情况下hosts文件的每行尾一个主机,每行由三部分组成,每个部分由空格隔开。
第一部分:网络IP地址
第二部分:主机名或域名
第三部分:主机名别名。
主机名(hostname)与域名(domain)的区别:
主机名通常在局域网内使用,通过hosts文件,主机名就被解析到对应ip;
域名通常在INTERNET上使用,但如果本机不想使用internet上的域名解析,这时就可以更改hosts文件,加入自己的域名解析。


实验步骤:
主机名(hostname) 172.25.254.210主机操作:
vim /etc/hosts
172.25.254.110  www.westos.com news.westos.com      #本地地址解析

Linux————Apache HTTP Server服务_第22张图片

172.25.254.110主机操作:

一个主机处理不同服务访问

创建一个目录将其这些虚拟(virtual)服务放在一个目录下
mkdir /var/www/virtual/news/html -p
mkdir /var/www/virtual/music/html -p
#虚拟服务的默认的访问目录下的默认文件
vim /var/www/virtual/news/html/index.html 		

news.westos.com

vim /var/www/virtual/music/html/index.html

music.westos.com

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
vim /etc/httpd/conf/httpd.conf #记得还原配置文件
systemctl restart httpd.service

在子配置文件下建立
vim /etc/httpd/conf.d/default.conf
					#虚拟主机端口80
        DocumentRoot /var/www/html	#文件默认访问目录
        CustomLog    logs/default.log combined		#日志存放地址
        这里的logs相当于/etc/https/logs,combined	是混合性日志,将登录日志与错误日志联系在一起,不用分开看

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

vim /etc/httpd/conf.d/news.conf
                       #虚拟主机端口80 
        ServerName   news.westos.com	  #服务器名称
        DocumentRoot /var/www/virtual/news/html/	#文件默认访问目录
        CustomLog    logs/news.log combined             日志存放位置,类型:混合型(是将登录日志与错误日志联系在一起,一起看不用分开),这里的logs相当与/etc/https/logs	


        Require all granted		#允许所有来源访问

在这里插入图片描述Linux————Apache HTTP Server服务_第23张图片
查看默认目录下的文件内容
vim /var/www/virtual/news/html/index.html
cat /var/www/virtual/news/html/index.html

在这里插入图片描述

在210客户机测试:

http://news.westos.com正常访问

Linux————Apache HTTP Server服务_第24张图片
music类似
vim /var/www/virtual/music/html/index.html
[root@apache conf.d]# cat /var/www/virtual/music/html/index.html

music.westos.com

在这里插入图片描述
Linux————Apache HTTP Server服务_第25张图片

在210客户机测试:

http://music.westos.com正常访问
Linux————Apache HTTP Server服务_第26张图片


创建动态网页(以上都是静态文本)php+cgi


什么是php?(来自百度百科)

PHP即“超文本预处理器”,是一种通用开源脚本语言。PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。PHP独特的语法混合了C、Java、Perl以及 PHP 自创的语法。利于学习,使用广泛,主要适用于Web开发领域。

什么是CGI?(来自百度百科)

公共网关接口(Common Gateway Interface,CGI)是Web 服务器运行时外部程序的规范,按CGI 编写的程序可以扩展服务器功能。CGI 应用程序能与浏览器进行交互,还可通过数据API与数据库服务器等外部数据源进行通信,从数据库服务器中获取数据。格式化为HTML文档后,发送给浏览器,也可以将从浏览器获得的数据放到数据库中。几乎所有服务器都支持CGI,可用任何语言编写CGI,包括流行的C、C ++、VB 和Delphi 等。CGI分为标准CGI和间接CGI两种。标准CGI使用命令行参数或环境变量表示服务器的详细请求,服务器与浏览器通信采用标准输入输出方式。间接CGI又称缓冲CGI,在CGI程序和CGI接口之间插入一个缓冲程序,缓冲程序与CGI接口间用标准输入输出进行通信

步骤:

vim /var/www/html/index.php

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

测试:
http://172.25.254.110/index.php

报错信息:会显示空白的状态

解决办法:

添加php服务
安装php和cgi

yum install -y php
systemctl restart httpd

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

测试:

110主机上:172.25.254.110/index.php
显示默认状态;
Linux————Apache HTTP Server服务_第27张图片
mkdir /var/www/html/cgi 创建目录
vim /var/www/html/cgi/index.cgi 编剧index.cgi
#!/usr/bin/perl
print “Content-type: text/html\n\n”;
print date; 文字输出是静态的,显示的是代码;
在这里插入图片描述
在这里插入图片描述

测试:

http://172.25.254.110/cgi/index.cgi
Linux————Apache HTTP Server服务_第28张图片

chmod +x index.cgi  添加可执行权限;
vim /etc/httpd/conf.d/default.conf  ##进入子配置文件设置端口
  默认的80端口
	DocumentRoot   /var/www/html/
	CustomLog	logs/default.log combined  
	#将错误日志和登录日志联系在一起,及可以一起看不用分开看;方便

121  
122	Options +ExecCGI   		    #允许使用mod_cgi模块执行CGI脚本I
	AddHandler cgi-script .cgi      #允许用户目录中所有以“.cgi”结尾的文件作为CGI脚本执行
123  

在这里插入图片描述
在这里插入图片描述
Linux————Apache HTTP Server服务_第29张图片

测试:

http://172.25.254.110/cgi/index.cgi
时间是在不停变化的,这是一个动态的
在这里插入图片描述
在这里插入图片描述

apache的ssl(加密套接字协议层:一种加密的通讯协定,用在使用者与网络服务器之间,sercurity socket layer)

1、.关于http和https的理论知识

(1)关于https

HTTPS(全称:Hypertext Transfer Protocol Secure,超文本传输安全协议),是以安全为
目标的HTTP通道,即HTTP的安全版。HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细
内容就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http体系。用于安全的HTTP
数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验
证层(在HTTP与TCP之间)。

(2.)http与https的区别

HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,
为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于
对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。即HTTPS协议是由SSL+HTTP协议构建的可
进行加密传输、身份认证的网络协议,要比http协议安全。

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

2、具体实现
加密认证

没有加密之前,访问https不能访问
Linux————Apache HTTP Server服务_第30张图片
cd /etc/httpd/conf.d
yum install -y mod_ssl # 用mod_ssl来实现https
ls
systemctl restart httpd
在这里插入图片描述
在这里插入图片描述
Linux————Apache HTTP Server服务_第31张图片

测试:

https://172.25.254.110
有了加密软件之后,就可以通过证书来进行访问
Linux————Apache HTTP Server服务_第32张图片
Linux————Apache HTTP Server服务_第33张图片
Linux————Apache HTTP Server服务_第34张图片
认证成功后就可以访问了
https:172.25.254.110

Linux————Apache HTTP Server服务_第35张图片

自签名证书

上面的证书是系统自己生成的,可是我想自己制作证书,以下操作是我自己在生成证书
Linux————Apache HTTP Server服务_第36张图片
删除station证书
Linux————Apache HTTP Server服务_第37张图片
yum install -y mod_ssl
yum insatll -y crypto-utils # 此软件提供加密工具
在这里插入图片描述
genkey www.westos.com # 生成该网页的证书和密钥
在这里插入图片描述
Linux————Apache HTTP Server服务_第38张图片
Linux————Apache HTTP Server服务_第39张图片

Linux————Apache HTTP Server服务_第40张图片
Linux————Apache HTTP Server服务_第41张图片
Linux————Apache HTTP Server服务_第42张图片
Linux————Apache HTTP Server服务_第43张图片

Linux————Apache HTTP Server服务_第44张图片

Linux————Apache HTTP Server服务_第45张图片

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 

Linux————Apache HTTP Server服务_第46张图片
在这里插入图片描述
打开浏览器
Linux————Apache HTTP Server服务_第47张图片
Linux————Apache HTTP Server服务_第48张图片
Linux————Apache HTTP Server服务_第49张图片
测试
http://www.westos.com
Linux————Apache HTTP Server服务_第50张图片


网页重写

cd /etc/httpd/conf.d/
cp news.conf login.conf
vim login.conf
  默认的80端口
	ServerName     login.westos.com   域名名称	
	DocumentRoot   /var/www/virtual/login/html  文档根目录是指定的虚拟目录
	CustomLog	logs/default.log combined  #将错误日志和登录日志联系在一起,及可以一起看不用分开看;方便
	SSLEngine on  ##SSL引擎开启
	 SSLCertificateFile /etc/pki/tls/certs/www.westos.com.crt    认证文件
	 SSLCertificateKeyFile  /etc/pki/tls/private/www.westos.com.key?认证秘钥文件

121  
122	Require all granted   给该目录都授权
123  

在这里插入图片描述
Linux————Apache HTTP Server服务_第51张图片

mkdire -p /var/www/virtual/login/html
vim /var/www/virtual/login/html/index.html

login page

systemctl restart httpd

Linux————Apache HTTP Server服务_第52张图片

测试:http://login.westos.com

vim login.conf
  默认的80端口
	ServerName     login.westos.com   域名名称	
	RewriteEngine on  ##改写引擎开启
	RewriteRule      ^(/.*)$https://%{HTTP_HOST}$1 [redirect=301] ##重写规则,将80端口转换成443,这样才能保证安全性;

Linux————Apache HTTP Server服务_第53张图片
#^(/.*)$表示客户在浏览器中输入的所有字符
# 1 表 示 ( / . ∗ ) 1表示^(/.*) 1(/.)的值
#redirect=301表示转换成永久重定向
#%{HTTP_HOST}表示客户请求主机
https:445
http:80

测试:login.westos.com服务会自动转换成443服务:https://login.westos.com
Linux————Apache HTTP Server服务_第54张图片


1、当重新启动apache服务没有成功会有报错
解决办法:
查看日志:vim /var/log/message

2、当重新启动apache服务成功没有报错但是在浏览器测试时没有显示成功的页面
解决办法:
查看系统日志(错误日志):vim /etc/httpd/logs/error_log

你可能感兴趣的:(Linux运维入门)