Linux之Apache服务软件

一、什么是Apache?

Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一。

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

二、Apache的安装部署

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           ##火墙重新加载策略

1、下载软件及手册

yum install httpd -y            ##apache软件
yum install httpd-manual        ##apache的手册

Linux之Apache服务软件_第1张图片

2、启动httpd服务

systemctl start httpd
systemctl enable httpd

在这里插入图片描述

3、更改火墙白名单

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

Linux之Apache服务软件_第2张图片

4、Apache的默认发布目录及文件

/var/www/html                   ##apache\默认发布目录
/var/www/html/index.html        ##apache的默认发布文件

测试:

vim /var/www/html/index.html

hello world

Linux之Apache服务软件_第3张图片
在浏览器的地址栏写入部署Apache服务的主机IP
Linux之Apache服务软件_第4张图片

三、Apache的基础信息

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

1、修改默认端口

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

firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --reload

Linux之Apache服务软件_第5张图片
Linux之Apache服务软件_第6张图片

重启服务:

systemctl restart httpd

测试:

Linux之Apache服务软件_第7张图片

分析:从8080端口访问才可以正常访问。
Linux之Apache服务软件_第8张图片
分析:从80端口访问,不能访问。

2、修改默认发布文件:

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

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

Linux之Apache服务软件_第9张图片
建立测试文件:

vim /var/www/html/test.html

test's page

Linux之Apache服务软件_第10张图片
重启服务:

systemctl restart httpd

测试:
在浏览器的地址栏输入:
172.25.254.133
Linux之Apache服务软件_第11张图片
分析:我们的apache的默认发布文件已经从index.html改为test.html。

3、更改默认发布目录:

1、更改selinux状态为强制模式

vim /etc/sysconfig/selinux
SELINUX=enforcing

reboot

Linux之Apache服务软件_第12张图片
在这里插入图片描述

2、建立发布目录

mkdir -p /redhat/html

3、更改目录的安全上下文

semanage fcontext -a -t httpd_sys_content_t '/redhat(/.*)?'
restorecon -RvvF /redhat/

Linux之Apache服务软件_第13张图片

4、更改主配置文件

vim /etc/httpd/conf/httpd.conf

更改:
DocumentRoot "/redhat/html"
 "/redhat/html">
        Require all granted		##允许所有人查看

Linux之Apache服务软件_第14张图片

5、重启

systemctl restart httpd.service

6、测试

vim /redhat/html/index.html

change dir

在浏览器的地址栏输入:172.25.254.133
Linux之Apache服务软件_第15张图片
更改默认发布目录成功!

四、Apache的虚拟主机

服务机

1、创建虚拟主机目录和测试文件

mkdir /var/www/virtual/westos.com/news -p		##创建虚拟主机news目录
mkdir /var/www/virtual/westos.com/music -p

vim /var/www/virtual/westos.com/news/index.html		##测试文件

nwes's page

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

music's page

Linux之Apache服务软件_第16张图片

2、编辑主机默认配置文件

vim /etc/httpd/conf.d/adefault.conf

        DocumentRoot "/var/www/html"

Linux之Apache服务软件_第17张图片

3、编辑虚拟主机music的配置文件

vim /etc/httpd/conf.d/music.conf

        ServerName "music.westos.com"						##指定站点名称
        DocumentRoot "/var/www/virtual/westos.com/music"	##站点默认发布目录
        CustomLog logs/music.log combined					##站点日志combined表示四种日志的集合

 "/var/www/virtual/westos.com/music">
        Require all granted

Linux之Apache服务软件_第18张图片

4、编辑虚拟主机news的配置文件


	ServerName "news.westos.com"
	DocumentRoot "/var/www/virtual/westos.com/news"
	CustomLog logs/news.log combined


 "/var/www/virtual/westos.com/news">
	Require all granted

Linux之Apache服务软件_第19张图片

5、重启Apache

systemctl restart httpd

6、服务机:测试

vim /etc/hosts			##更改ia本地解析文件
172.25.254.133 www.westos.com music.westos.com news.westos.com

Linux之Apache服务软件_第20张图片
在测试机浏览器地址栏输入www.westos.com
Linux之Apache服务软件_第21张图片
在测试机浏览器地址栏输入music.westos.com
Linux之Apache服务软件_第22张图片
在测试机浏览器地址栏输入news.westos.com
Linux之Apache服务软件_第23张图片

五、Apache的内部访问控制

1、针对主机的访问控制

白名单:

vim /etc/httpd/conf.d/adefault.conf


        DocumentRoot "/var/www/html"

 "/var/www/html">
        Require all granted
        Order Deny,Allow			##列表读取顺序,后读取的列表会覆盖先读取内容的重复部分
        Deny from all				##禁止所有人登陆
        Allow from 172.25.254.75	##允许172.25.254.75主机登陆


systemctl restart httpd				##重启服务

测试:

在IP为172.25.254.75的主机浏览器输入172.25.254.133
Linux之Apache服务软件_第24张图片
在其他主机浏览器输入172.25.254.133
Linux之Apache服务软件_第25张图片
分析:在配置文件写入的IP可以访问Apache文件,其他主机不行。白名单设置成功!

黑名单:

vim /etc/httpd/conf.d/adefault.conf


        DocumentRoot "/var/www/html"

 "/var/www/html">
        Require all granted
        Order Allow,Deny
        Allow from all
        Deny from 172.25.254.75


systemctl restart httpd				##重启服务

Linux之Apache服务软件_第26张图片

测试:

在IP为172.25.254.75的主机浏览器输入172.25.254.133
Linux之Apache服务软件_第27张图片
在其他主机浏览器输入172.25.254.133:
Linux之Apache服务软件_第28张图片
分析:在配置文件写入的IP不可以访问Apache文件,其他主机可以。黑名单设置成功!

2、用户的访问方式控制

mkdir /var/www/html/admin					##建立用户目录
vim /var/www/html/admin/index.html			##建立用户登录测试页

hello user

htpasswd -cm /etc/httpd/htuser admin ##添加apache用户及密码 htpasswd -m /etc/httpd/htuser admin1 ##添加apache用户及密码

Linux之Apache服务软件_第29张图片

1、用户的禁止与允许控制

vim /etc/httpd/conf.d/adefault.conf		

        DocumentRoot "/var/www/html"

 "/var/www/html">
        Require all granted
        Order Allow,Deny
        Allow from all

 "/var/www/html/admin">		
        AuthUserFile    "/etc/httpd/htuser"						##用户文件保存位置
        AuthName        "Please input username and password"	##用户登陆交互界面提示
        AuthType        Basic									##验证类型为简易验证帐号及
        Require user    admin									##只允许admin用户登陆


systemctl restart httpd

Linux之Apache服务软件_第30张图片
测试:
先用admin用户登录,浏览器地址栏输入172.25.254.133/admin
Linux之Apache服务软件_第31张图片
输入帐号和密码:
Linux之Apache服务软件_第32张图片
成功浏览到用户测试页的内容,用户登录成功!

用admin1用户登录,浏览器地址栏输入:172.25.254.133/admin
Linux之Apache服务软件_第33张图片
输入admin1的帐号和密码:
Linux之Apache服务软件_第34张图片
登录失败!实现的用户的访问控制。

2、验证密码登录

vim /etc/httpd/conf.d/adefault.conf

        DocumentRoot "/var/www/html"

 "/var/www/html">
        Require all granted
        Order Allow,Deny
        Allow from all

 "/var/www/html/admin">
        AuthUserFile    "/etc/httpd/htuser"
        AuthName        "Please input username and password"
        AuthType        Basic
        Require         valid-user	##验证密码登陆


systemctl restart httpd

Linux之Apache服务软件_第35张图片
测试:
浏览器地址栏输入:172.25.254.133/admin
Linux之Apache服务软件_第36张图片
输入正确的帐号及密码,登录成功!输入错误的密码登录失败!

六、Apache支持的编程语言

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

2、php语言

我们用php语言写一个文件,看能否通过网页执行。

vim /var/www/html/index.php

Linux之Apache服务软件_第37张图片
下载php插件:

yum install php -y
systemctl restart httpd		##重启服务

Linux之Apache服务软件_第38张图片
测试:
在浏览器地址栏输入:172.25.254.133/index.php

Linux之Apache服务软件_第39张图片

对了,说个题外话,大家访问一次后,浏览器会缓存这次的结果,为了实验效果,建议做完实验后清理缓存,ctrl+shift+delete。选择Everything后,Clear Now。
Linux之Apache服务软件_第40张图片

3、CGI

1、

mkdir /var/www/html/cgi 				##建立目录
semanage fcontext -a -t httpd_sys_script_exec_t '/var/www/html/cgi(/.*)?'	##更改cgi目录的安全上下文
restorecon -RvvF /var/www/html/cgi/		##刷新cgi目录的安全上下文

Linux之Apache服务软件_第41张图片

2、

vim /var/www/html/cgi/index.cgi		##编写cgi测试文件

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

chmod +x /var/www/html/cgi/index.cgi		##给脚本执行权力

Linux之Apache服务软件_第42张图片

3、编辑配置文件

vim adefault.conf


        Options +ExecCGI
        AddHandler cgi-script .cgi		##cgi目录下,以.cgi结尾的都是cgi脚本



systemctl restart httpd

Linux之Apache服务软件_第43张图片
测试:
在浏览器地址栏输入:172.25.254.133/cgi/index.cgi
Linux之Apache服务软件_第44张图片

5、WSGi

1、

yum install mod_wsgi -y		##下载插件

2、WSGI测试文件

vim /var/www/html/cgi/westos.wsgi		##显示主机硬件时间
#!/usr/bin/env python
import time

def application (environ, start_response):
  response_body = 'UNIX EPOCH time is now: %s\n' % time.time()
  status = '200 OK'
  response_headers = [('Content-Type', 'text/plain'),
                      ('Content-Length', '1'),
                      ('Content-Length', str(len(response_body)))]
  start_response(status, response_headers)
  return [response_body]

Linux之Apache服务软件_第45张图片

3、更改配置文件

vim /etc/httpd/conf.d/adefault.conf

        DocumentRoot "/var/www/html"
        WSGIScriptAlias /WSGI /var/www/html/cgi/westos.wsgi		##wsgi不支持直接访问脚本,需要建立访问接口/WSGI


systemctl restart httpd

Linux之Apache服务软件_第46张图片
测试:
在浏览器地址栏输入:172.25.254.133/WSGI
Linux之Apache服务软件_第47张图片

七、HTTPS

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

1、主要作用可以分为两种:

一种是建立一个信息安全通道,来保证数据传输的安全;
另一种就是确认网站的真实性,凡是使用了 https 的网站,都可以通过点击浏览器地址栏的锁头标志来查看网站认证之后的真实信息,也可以通过 CA 机构颁发的安全签章来查询

2、HTTPS和HTTP的区别主要为以下四点:

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

3、如何应用HTTPS

1、下载软件

yum install mod_ssl -y		##下载软件
yum install crypto-utils -y

Linux之Apache服务软件_第48张图片

2、执行:

genkey www.westos.com

Linux之Apache服务软件_第49张图片
这里会提示钥匙和锁分别放在那个文件下面以及文件的绝对位置。点击Next
Linux之Apache服务软件_第50张图片
这里有五种加密选择,我们示例采用第二种,点击Next
Linux之Apache服务软件_第51张图片
等待完成!
Linux之Apache服务软件_第52张图片
在这个界面如果进度条暂停,可以在主机shell中敲击键盘或者移动鼠标。
Linux之Apache服务软件_第53张图片
这里会提示是否需要到CA申请证书,这里我们就不申请了,需要花费人民币的!
Linux之Apache服务软件_第54张图片
这里直接Next!
Linux之Apache服务软件_第55张图片
这里填入基本信息:国家、省份、城市、公司名称、部门、域名,完成后点击Next!
Linux之Apache服务软件_第56张图片
完成后shell界面会提示钥匙放在那个文件!

3、编辑配置文件

vim /etc/httpd/conf.d/ssl.conf

101 SSLCertificateFile /etc/pki/tls/certs/www.westos.com.crt			##101和109为行数
109 SSLCertificateKeyFile /etc/pki/tls/private/www.westos.com.key

Linux之Apache服务软件_第57张图片

4、重启服务

systemctl restart httpd

5、测试

在浏览器地址栏输入:

https://172.25.254.133

Linux之Apache服务软件_第58张图片
这里我们看到网站的左边有一个小锁子,点击
Linux之Apache服务软件_第59张图片
可以看到证书的一些信息,详细信息可以查看More Information
Linux之Apache服务软件_第60张图片

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

我们登录一些比如腾讯、百度的网站会发现直接输入www.qq.com或www.baidu.com后访问,浏览器会自动加上https://。这就是网页重写

mkdir /var/www/virtual/westos.com/login

vim /var/www/virtual/westos.com/login/index.html

login's page

vim /etc/httpd/conf.d/z_login.conf

Linux之Apache服务软件_第61张图片

vim /etc/httpd/conf.d/z_login.conf

        ServerName login.westos.com
        RewriteEngine on
        RewriteRule ^(/.*)$  https://%{HTTP_HOST}$1 [redirect=301]



        ServerName "login.westos.com"
        DocumentRoot "/var/www/virtual/westos.com/login"
        CustomLog logs/login.log        combined
        SSLEngine on
        SSLCertificateFile /etc/pki/tls/certs/www.westos.com.crt
        SSLCertificateKeyFile /etc/pki/tls/private/www.westos.com.key

 "/var/www/virtual/westos.com/login">
        Require all granted


systemctl restart httpd

Linux之Apache服务软件_第62张图片
设定完成,开始测试:
在浏览器地址输入栏输入:login.westos.com。
Linux之Apache服务软件_第63张图片
网页自动重写到https://login.westos.com

你可能感兴趣的:(Linux,进阶)