Web服务器——Apache相关内容详解
1.相关名词介绍
1)什么是Web服务器?
Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以向浏览器等Web客户端提供文档, 也可以放置网站文件,让全世界浏览;可以放置数据文件,让全世界下载。目前最主流的三个Web服务器是Apache 、Nginx、 IIS。
2)什么是Apache?
Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它可以运行在几乎所有广泛使用的计算机平台上。
3)Apache与Httpd的区别是什么?
httpd是Apache超文本传输协议(HTTP)服务器的主程序。在早期的http server就叫做apache,到了http server 2.0以后就改名为httpd了。
4)WWW、HTTP、HTTPS、HTML分别是什么?
WWW:WWW是环球信息网的缩写,(亦作“Web”、“WWW”、“‘W3’”,英文全称为“World Wide Web”),中文名字为“万维网”,"环球网"等,常简称为Web。 分为Web客户端和Web服务器程序。 WWW可以让Web客户端(常用浏览器)访问浏览Web服务器上的页面。 是一个由许多互相链接的超文本组成的系统,通过互联网访问。在这个系统中,每个有用的事物,称为一样“资源”;并且由一个全局“统一资源标识符”(URI)标识;这些资源通过超文本传输协议(Hypertext Transfer Protocol)传送给用户,而后者通过点击链接来获得资源。
HTTP:超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。1960年美国人Ted Nelson构思了一种通过计算机处理文本信息的方法,并称之为超文本(hypertext),这成为了HTTP超文本传输协议标准架构的发展根基。
HTTPS:HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer 或 Hypertext Transfer Protocol Secure,超文本传输安全协议),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。
HTML:超文本标记语言(HyperText Markup Language )。网页的本质就是超级文本标记语言,通过结合使用其他的Web技术(如:脚本语言、公共网关接口、组件等),可以创造出功能强大的网页。因而,超级文本标记语言是万维网(Web)编程的基础,也就是说万维网是建立在超文本基础之上的。超级文本标记语言之所以称为超文本标记语言,是因为文本中包含了所谓“超级链接”点。
5)http与https的区别是什么?
超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息。HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此HTTP协议不适合传输一些敏感信息,比如信用卡号、密码等。
为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS。为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。
HTTPS和HTTP的区别主要为以下四点:
一、https协议需要到ca申请证书,一般免费证书很少,需要交费。
二、http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。
三、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
四、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
2.apache的安装部署
1)安装
yum install httpd -y ##apache软件
yum install httpd-manual ##apache的手册
systemctl start httpd ##开启http服务
systemctl enable httpd ##开机自启http服务
firewall-cmd --permanent --add-service=http ##永久允许http
firewall-cmd --reload ##火墙重新加载策略
firewall-cmd --list-all ##列出火墙信息
测试:
打开网页输入本机IP/manual,如:172.25.6.106/manual
3.Apache服务器基础信息
1)
基础配置信息 | |
---|---|
主配置目录 | /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.conf |
程序开启默认用户 | apache |
apache日志 | /etc/httpd/logs/ ##access_log访问目录,error_log报错日志 |
2)修改默认端口
vim /etc/httpd/conf/httpd.conf
Listen 8080 ##默认修改端口为8080
systemctl restart httpd ##重启服务
firewall-cmd --permanent --add-port=8080/tcp ##在火墙开启端口
firewall-cmd --reload
测试:
cd /var/www/html/
vim index.html ##默认发布文件的文件名唯一,只能这么写;自定义的发布文件名称可以随便写
systemctl restart httpd.service
恢复默认端口
【ctrl+shift+delete】清理浏览器缓存,刷新
3)修改默认发布文件——此时端口为默认端口80
随意书写一个要在网页上发布的文件:
cd /var/www/html
vim snow
书写内容的格式这里不做过的探究,这属于Web前端开发的知识,作者目前只研究了linux运维方面的技术
测试:
显示为默认发布文件【index.html】内容
修改方式
vim /etc/httpd/conf/httpd.conf
DirectoryIndex snow index.html ##修改默认发布文件,先读取文件snow
systemctl restart httpd ##重启服务
4)修改默认发布目录
<1>建立目录
mkdir /westos/html -p
cd /westos/html/
vim index.html ##建立发布文件
<2>修改主配置文件
vim /etc/httpd/conf/httpd.conf ##121行到123行是自行添加的
systemctl restart httpd
<3>如果此时SElinux的状态为【Enforcing】,需要修改目录的安全上下文
semanage fcontext -a -t httpd_sys_content_t '/westos/html(/.*)?'##加入安全上下文列表,否则selinux影响将无法发布
restorecon -FvvR /westos/html/ ##刷新列表
systemctl restart httpd
测试:打开网页输入本机IP
实验完成后恢复环境
4.apached的虚拟发布
1)建立虚拟发布目录
mkdir /var/www/virtual/westos.com/news -p ##建立虚拟发布目录
mkdir /var/www/virtual/westos.com/music -p
ls -Zd /var/www/virtual/westos.com/news ##查看安全上下文是否一致
2)书写发布文件
vim /var/www/virtual/westos.com/news/index.html
vim /var/www/virtual/westos.com/music/index.html
3)修改子配置目录内容
cd /etc/httpd/conf.d
vim adefault.conf
<VirtualHost _default_:80> ##默认站点发布端口
DocumentRoot "/var/www/html" ##默认站点发布目录
</VirtualHost>
vim news.conf ##编写指定站点发布配置文件
<VirtualHost *:80> ##发布端口
ServerName "news.westos.com" ##指定站点名称
Customlog logs/news log.combined ##站点日志combined混合日志
DocumentRoot "/var/www/virtual/westos.com/news" ##默认发布目录
</VirtualHost>
<Directory "/var/www/virtual/westos.com/news">
Require all granted ##授权
</Directory>
vim music.conf
<VirtualHost *:80>
ServerName "music.westos.com"
Customlog logs/news log.combined
DocumentRoot "/var/www/virtual/westos.com/music"
</VirtualHost>
<Directory "/var/www/virtual/westos.com/music">
Require all granted
</Directory>
systemctl restart httpd.service ##重启服务
4)选另一台主机作为客户端,并对客户端的主机进行本地解析
vim /etc/hosts
5)测试:在客户端的浏览器中分别输入上面的网址
5.apache内部的访问控制
1)针对与主机的访问控制(基于ip)
在/var/www/html/下建立新文件text,自定义内容:
vim /etc/httpd/conf.d/adefault.conf
列表读取顺序——后读取的列表会覆盖先读取内容的重复部分
2)在IP为172.25.6.106与172.25.6.250的主机上进行测试,测试前先清除浏览器的缓存
在172.25.6.106上测试结果如下:
在172.25.6.250上测试结果如下:
2)用户的访问控制(基于用户)
建立用户及**,-c:创建密码文件(如果文件已经存在了,那么-c会清空原始文件,然后重新创建),-m:用md5加密数据
htpasswd -cm /etc/httpd/userpass admin
htpasswd -m /etc/httpd/userpass admin1
vim /etc/httpd/conf.d/adefault.conf
测试:
在另一台主机的浏览器中访问:172.25.6.106/text
6.apache支持的语言
1)html
html:超文本标记语言(HyperText Markup Language )。我们在上面做实验用到的就是html(如:默认发布文件名为index.html)
2)php
yum install php -y
systemctl restart httpd
vim /var/www/html/index.php
<?php
phpinfo();
?>
测试:
3)cgi
mkdir -p /var/www/html/cgi
semanage fcontext -a -t httpd_sys_script_exec_t '/var/www/html/cgi(/.*)?' ##设置安全上下文
restorecon -RvvF /var/www/html/cgi
vim /var/www/html/cgi/index.cgi
chmod +x /var/www/html/cgi/index.cgi ##给脚本加上可执行的权限
./index.cgi ##执行脚本
vim /etc/httpd/conf.d/adefault.conf
<Directory "/var/www/html/cgi">
Options +ExecCGI
AddHandler cgi-script .cgi ##cgi的文件格式
</Directory>
systemctl restart httpd
测试:
4)wcgi
yum install mod_wsgi -y
vim /var/www/html/cgi/test.wsgi
chmod +x /var/www/html/cgi/test.wsgi
vim /etc/httpd/conf.d/adefault.conf
systemctl restart httpd
测试: