Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。同时Apache音译为阿帕奇。
注意:
本机ip:172.25.254.100
SELinux状态为Enforcing
1、安装Apache
yum install httpd -y ##安装阿帕奇(此前得配置yum源)
systemctl start httpd.service ##启动阿帕奇
firewall-cmd --permanent --add-service=http ##火墙允许http服务
systemctl restart firewalld.service ##重启火墙
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
126 Require all granted
127
mkdir /mnt/html
cd /mnt/html/
vim index.html ##在修改的默认发布目录中建立文件index.html
1
2 我爱你哦!
[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
[root@station html]# vim file.html
我是file,现在我才是首要默认发布目录!
虚拟主机允许您从一个 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 ##写网页文件
这里是音乐哦!
vim /var/www/virtual/lee.com/news/file.html
这里是新闻哦!
2)将建立的文件和http建立联系
cd /etc/httpd/conf.d/ ##进入副配置文件
vim adefault.conf ##编写脚本
###################
1
2 DocumentRoot "/mnt/html"
3
4
5 Require all granted
6
7
8 ServerName "news.com" ##域名
9 DocumentRoot "/var/www/virtual/lee.com/news" ##授权文件路径
10 CustomLog logs/news.log combined ##日志
11
12 ##读取文件路径
13 Require all granted ##允许所有人访问
14
15
16 ServerName "music.com"
17 DocumentRoot "/var/www/virtual/lee.com/music"
18 CustomLog logs/music.log combined
19
20
21 Require all granted
22
##########################
vim /etc/hosts ##本地域名解析
172.25.254.100 news.com music.com
默认发布文件仍然没变
访问news.com出现我所要发布的内容
访问music.com出现我所要发布的内容
Apache 无格式文件用户身份验证
在此配置中 , 用户账户和密码存储在本地 .htpasswd 文件中。
处于安全原因 , 该文件不能保存在网站的 DocumentRoot 中 ,
而应保存在 Web 服务器不提供服务的一些目录中。
注意:在副配置目录下(/etc/httpd/conf.d)编写
1)针对与主机的控制访问
vim /etc/httpd/conf.d/adefault.conf
6
7 Require all granted ##允许所有人访问
8 Order Deny,Allow ##列表读取顺序,后读取的列表会覆盖先读取内容的重复部分
9 Deny from all ##拒绝所有用户访问
10 Allow from 172.25.254.5 ##允许172.25.254.105访问
11
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
2 DocumentRoot "/var/www/html"
3
4
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
#################
systemctl restart httpd.service
网页访问:http://172.25.254.100/admin
1)默认支持html语言,无需下载插件
2)php语言(不能直接识别,需下载插件)
vim /var/www/html/index.php ##编写php文件
1
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
12 Options +ExecCGI
13 AddHandler cgi-script .cgi ##cgi目录下,以.cgi结尾的都是cgi脚本
14
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
21 DocumentRoot "/var/www/html"
22 WSGIScriptAlias /WSGI /var/www/html/cgi/westos.wsgi ##文件途径
23
systemctl restart httpd.service
网络访问http://172.25.254.100/WSGI
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/
可以看到锁
点击锁能够看到证书的一些信息
1)网络重写是什么?
举个例子,来快速感受下。我们在浏览器地址栏中输入www.baidu.com就能访问百度了,可以看到地址栏的网址会变成https://www.baidu.com。让我们输入的不规范网址变为规范的网址就叫网络重写。
2)设定网络重写
vim /etc/httpd/conf.d/z_login.conf
1
2 ServerName login.westos.com
3 RewriteEngine on
4 RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=301]
5
systemctl restart httpd
4)部分代码解释
^(/.*)$ ##客户在浏览器地址栏中输入的所有字符
https:// ##强制客户加密访问
%{HTTP_HOST} ##客户请求主机
$1 ##“$1”表示^(/.*)$的值
vim /etc/httpd/conf/httpd.conf ##主配置文件
cd /etc/httpd/conf.d ##副配置目录
在副配置目录编写脚本
##80端口
ServerName "news.com" ##写域名
DocumentRoot "/var/www/virtual/lee.com/news" ##授权文件路径权限
CustomLog logs/news.log combined ##日志
##读取文件路径
Require all granted ##允许所有人访问
在读取文件路径目录下编辑文件index.html,里面即是阿帕奇展示内容
重启http服务