Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一。
企业中常用的web服务,用来提供http://(超文本传输协议)
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 ##火墙重新加载策略
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 ##火墙重新加载策略
/var/www/html ##apache\默认发布目录
/var/www/html/index.html ##apache的默认发布文件
vim /var/www/html/index.html
hello world
#主配置目录: /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/*
vim /etc/httpd/conf/httpd.conf
Listen 8080 ##修改默认端口为8080
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --reload
systemctl restart httpd
分析:从8080端口访问才可以正常访问。
分析:从80端口访问,不能访问。
默认发布文件就是访问apache时没有指定文件名称时,默认访问的文件
这个文件可以指定多个,有访问顺序
vim /etc/httpd/conf/httpd.conf
DirectoryIndex test.html index.html ##当test.html不存在时访问index.html文件
vim /var/www/html/test.html
test's page
systemctl restart httpd
测试:
在浏览器的地址栏输入:
172.25.254.133
分析:我们的apache的默认发布文件已经从index.html改为test.html。
vim /etc/sysconfig/selinux
SELINUX=enforcing
reboot
mkdir -p /redhat/html
semanage fcontext -a -t httpd_sys_content_t '/redhat(/.*)?'
restorecon -RvvF /redhat/
vim /etc/httpd/conf/httpd.conf
更改:
DocumentRoot "/redhat/html"
"/redhat/html">
Require all granted ##允许所有人查看
systemctl restart httpd.service
vim /redhat/html/index.html
change dir
在浏览器的地址栏输入:172.25.254.133
更改默认发布目录成功!
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
vim /etc/httpd/conf.d/adefault.conf
DocumentRoot "/var/www/html"
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
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
systemctl restart httpd
vim /etc/hosts ##更改ia本地解析文件
172.25.254.133 www.westos.com music.westos.com news.westos.com
在测试机浏览器地址栏输入www.westos.com
在测试机浏览器地址栏输入music.westos.com
在测试机浏览器地址栏输入news.westos.com
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
在其他主机浏览器输入172.25.254.133
分析:在配置文件写入的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 ##重启服务
在IP为172.25.254.75的主机浏览器输入172.25.254.133
在其他主机浏览器输入172.25.254.133:
分析:在配置文件写入的IP不可以访问Apache文件,其他主机可以。黑名单设置成功!
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用户及密码
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
测试:
先用admin用户登录,浏览器地址栏输入172.25.254.133/admin
输入帐号和密码:
成功浏览到用户测试页的内容,用户登录成功!
用admin1用户登录,浏览器地址栏输入:172.25.254.133/admin
输入admin1的帐号和密码:
登录失败!实现的用户的访问控制。
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
测试:
浏览器地址栏输入:172.25.254.133/admin
输入正确的帐号及密码,登录成功!输入错误的密码登录失败!
我们用php语言写一个文件,看能否通过网页执行。
vim /var/www/html/index.php
yum install php -y
systemctl restart httpd ##重启服务
测试:
在浏览器地址栏输入:172.25.254.133/index.php
对了,说个题外话,大家访问一次后,浏览器会缓存这次的结果,为了实验效果,建议做完实验后清理缓存,ctrl+shift+delete。选择Everything后,Clear Now。
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目录的安全上下文
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 ##给脚本执行权力
vim adefault.conf
Options +ExecCGI
AddHandler cgi-script .cgi ##cgi目录下,以.cgi结尾的都是cgi脚本
systemctl restart httpd
测试:
在浏览器地址栏输入:172.25.254.133/cgi/index.cgi
yum install mod_wsgi -y ##下载插件
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]
vim /etc/httpd/conf.d/adefault.conf
DocumentRoot "/var/www/html"
WSGIScriptAlias /WSGI /var/www/html/cgi/westos.wsgi ##wsgi不支持直接访问脚本,需要建立访问接口/WSGI
systemctl restart httpd
测试:
在浏览器地址栏输入:172.25.254.133/WSGI
HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer 或 Hypertext Transfer Protocol Secure,超文本传输安全协议),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
一种是建立一个信息安全通道,来保证数据传输的安全;
另一种就是确认网站的真实性,凡是使用了 https 的网站,都可以通过点击浏览器地址栏的锁头标志来查看网站认证之后的真实信息,也可以通过 CA 机构颁发的安全签章来查询
一、https协议需要到ca申请证书,一般免费证书很少,需要交费。
二、http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。
三、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
四、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
yum install mod_ssl -y ##下载软件
yum install crypto-utils -y
genkey www.westos.com
这里会提示钥匙和锁分别放在那个文件下面以及文件的绝对位置。点击Next
这里有五种加密选择,我们示例采用第二种,点击Next
等待完成!
在这个界面如果进度条暂停,可以在主机shell中敲击键盘或者移动鼠标。
这里会提示是否需要到CA申请证书,这里我们就不申请了,需要花费人民币的!
这里直接Next!
这里填入基本信息:国家、省份、城市、公司名称、部门、域名,完成后点击Next!
完成后shell界面会提示钥匙放在那个文件!
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
systemctl restart httpd
在浏览器地址栏输入:
https://172.25.254.133
这里我们看到网站的左边有一个小锁子,点击
可以看到证书的一些信息,详细信息可以查看More Information
我们登录一些比如腾讯、百度的网站会发现直接输入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
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
设定完成,开始测试:
在浏览器地址输入栏输入:login.westos.com。
网页自动重写到https://login.westos.com