HTTP-超文本传输协议(HyperText Transfer Protocal)
HTTP:超文本传输协议
HTTP服务:超文本传输协议(HyperText Transfer Protocal),是互联网上最广泛的一种网络协议,所有的WWW文件都必须遵守这个标准。
一、WEB服务器
WEB服务器:指网站服务器,是指驻留与因特网上某种类型计算机的程序,可以向浏览器等WEB客户端提供文档,也可以放置网站文件,让全世界浏览;可以放置数据文件,让全世界下载。
目前最主流的三个WEB服务区是Apache和Microsoft和Internet-信息服务器(Internet Information Services,IIS)unix nginx。
WEB服务器也称为WWW服务器(world wide web),主要功能是提供网上信息浏览服务。WEB服务器是可以向发出请求的浏览器提供文档的程序。
- 服务器是一种被动程序:只有当Internet上运行其他计算机中的浏览器发出的请求时,服务器才会响应。
- Internet上的服务器也成为WEB服务器,是一台在Internet上具有独立的IP地址的计算机,可以向Internet上的客户机提供WWW、Email和FTP等各种Internet服务。
- 当WEB浏览器(客户端)连接到服务器上并请求文件时,服务器将处理该请求并将文件反馈到该浏览器上,附带的信息会告诉浏览器如何查看该文件(即文件类型)。服务器使用HTTP与客户机浏览器进行信息交流,这就是人们常把他们称为HTTP服务器的原因。
WEB服务器不仅能够存储信息,还能在用户通过WEB浏览器提供的信息的基础上运行脚本和程序。
而Linux下的WEB服务器软件使用的是apache,开放源代码的apache服务器起初由Illinois大学Urbana-Champaign的国家高级计算程序中心开发,后来Apache被开放源代码团体的成员不断地发展和加强。逐渐,它开始在功能和速度上超越其他Web服务器。
LAMP:即Linux+Apache+Mysql+Perl/PHP/Python一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台。随着开源潮流的蓬勃发展,开放源代码的LAMP已经与J2EE和.Net商业软件形成三足鼎立之势,并且该软件开发的项目在软件方面的投资成本较低,因此受到整个IT界的关注。从网站的流量上来说,70%以上的访问流量是LAMP来提供的,LAMP是最强大的网站解决方案.
二、HTTP服务介绍
(1)访问格式:
1、http://域名/资源
2、http://IP地址:端口号
(2)HTTP的协议端口号为80、8080;
HTTPS(加密的HTTP服务)的协议端口号为443。
(3)HTTP是应用层协议
(4)HTML(标准通用标记语言下的一个应用)文档格式
(5)URL(浏览器统一资源定位器)
1、HTTP的运行原理
①用户输入URL
http://www.joes-hardware.com:80/tools.html
②获取主机名
www.joes-hardware.com
③获取端口号
80
④连接到161.58.228.45(服务器)的端口号80
⑤客户机发送一条HTTP GET请求
⑥客户机从服务器读取HTTP服务
2、HTTP的连接过程
(1)Web浏览器使用HTTP命令向一个特定的服务器发出Web页面请求。
(2)若该服务器在特定端口(通常是TCP 80端口)处接收到Web页面请求后,就发送一个应答并在客户和服务器之间建立连接。
(3)服务器Web查找客户端所需文档,若Web服务器查找到所请求的文档,就会将所请求的文档传送给Web浏览器。若该文档不存在,则服务器会发送一个相应的错误提示文档给客户端。
(4)Web浏览器接收到文档后,就将它显示出来。
(5)当客户端浏览完成后,就断开与服务器的连接。
HTTP响应:通过报文返回一个状态码
–200 正常,请求成功
–401 静止访问,未授权(没有登录或者登陆失败)
–403 禁止访问,通常代表已认证通过,但没有访问权限
–404 未找到资源
–500 服务器内部错误(服务器内部出现问题,服务器内部故障,或者访问过多没有显示就可能会出现500错误)
代理服务器:S和C之间的访问实体
缓存服务器:特殊的代理服务器
网关服务器:一个http/FTP网关服务器C—http – 8080 (FTP<–>HTTP )-----S FTP
<源ip地址><源端口号> <目标ip地址><端口>
3、在Linux中的相关配置
(1)首先挂载光盘sr0并且配置yum文件:
[[email protected] httpd]# mount /dev/sr0 /mnt(挂载光盘sr0)
[[email protected] httpd]# vim /etc/yum.repos.d/base.repo(配置yum文件)
[base] (源)
name=base (源名称)
baseurl=file:///mnt (本地连接)
gpgcheck=0
[[email protected] httpd]# yum install -y httpd
[[email protected] httpd]# systemctl start httpd (系统服务的操作)
- Start---开始
- Restart---重启
- Stop---停止
[[email protected] httpd]# Systemctl stop firewalld(关闭防火墙)
[[email protected] httpd]# Setenforce 0 (停止ICE linux)
(2)在搭建HTTP服务:
[[email protected] httpd]# yum install httpd -y
启动脚本:/usr/lib/systemd/system/httpd.service
所需RPM包:httpd-2.4.6-17.el7.x86_64.rpm
主配置目录:/etc/httpd/conf
子配置目录:/etc/httpd/conf.d(apache是一个模块化的一个配置服务,所以我们可以根据每个模块进行一些配置,不仅对程序本身进行模块化配置对配置文件也进行了模块化配置)
默认网站存放路径:/var/www/html/
4、主配置文件的介绍:
打开主配置文件:
[[email protected] ~]# vim /etc/httpd/conf/httpd.conf
下面为主配置文件的一些内容与解析:
ServerRoot "/etc/httpd" (服务配置文件的根)
Listen 80
Include conf.modules.d/*.conf
User apache (进程属主)
Group apache
ServerAdmin [email protected] (服务管理员邮箱)
ServerName 0.0.0.0:80
<Directory /> (目录标签)
AllowOverride none (可以覆盖前面的配置)
Require all denied (禁止访问根)
</Directory>
DocumentRoot "/var/www/html"
<Directory "/var/www">
AllowOverride None
Require all granted
</Directory>
<Directory "/var/www/html">
Options Indexes FollowSymLinks (选项索引跟踪软连接)
AllowOverride None
Require all granted
</Directory>
<IfModule dir_module>
DirectoryIndex index.html (索引目录为index.html)
</IfModule>
<Files ".ht*"> (安全策略控制文件都是以.ht开头)
Require all denied
</Files>
ErrorLog "logs/error_log" (链接到日志的文件)
LogLevel warn
<IfModule log_config_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
%h---客户端IP
%l---使用identd时才会有信息,一般情况下都是-
%u---远程用户(从验证获取到的)
%t---收到请求时的时间
%r---请求的首行
%s---服务器端返回的状态码
%b---除HTTP头以外的返回的字节数
%{Referer}i---从那个页面链接跳转到的此页面
%{User-agent}i---用户的User-Agent
LogFormat "%h %l %u %t \"%r\" %>s %b" common
<IfModule logio_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
</IfModule>
CustomLog "logs/access_log" combined
</IfModule>
<IfModule alias_module>
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
</IfModule>
<Directory "/var/www/cgi-bin">
AllowOverride None
Options None
Require all granted
</Directory>
<IfModule mime_module>
TypesConfig /etc/mime.types
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
</IfModule>
AddDefaultCharset UTF-8
<IfModule mime_magic_module>
MIMEMagicFile conf/magic
</IfModule>
EnableSendfile on (支持发送文件)
IncludeOptional conf.d/*.conf
5、配置HTTP的基本功能:
(1)下面是apache的所有配置文件存放的目录:
[[email protected] ~]# ll /etc/httpd/
total 4
drwxr-xr-x. 2 root root 35 Oct 27 11:53 conf
drwxr-xr-x. 2 root root 93 Oct 8 10:20 conf.d
drwxr-xr-x. 2 root root 4096 Oct 8 10:20 conf.modules.d
lrwxrwxrwx. 1 root root 19 Oct 8 10:14 logs -> ../../var/log/httpd
lrwxrwxrwx. 1 root root 29 Oct 8 10:14 modules -> ../../usr/lib64/httpd/modules
lrwxrwxrwx. 1 root root 10 Oct 8 10:14 run -> /run/httpd
(2)网页默认的存放路径:
[[email protected] ~]# ll /var/www/
total 0
drwxr-xr-x. 2 root root 6 Sep 17 2015 cgi-bin
drwxr-xr-x. 5 root root 76 Dec 29 2013 html
cgi-bin是一种特殊的目录,在进行交互式的www访问(如填写在线表格)时,需要对服务器上有相应程序对访问这输入的信息进行处理,这写程序就是就是cgi程序。而这些程序只能放在cgi-bin这个目录。
(3)apache的主配置文件:
[[email protected] ~]# vim /etc/httpd/conf/httpd.conf
6、HTTP的其它配置
(1)默认的访问界面:
启动HTTP服务
[[email protected] ~]# systemctl restart httpd.service
然后打开浏览器,输入IP地址就会看到下面的apache界面,表示你的HTTP服务启动成功。
(2)访问静态界面:
[[email protected] ~]# vim /var/www/html/index.html
Nihao~
刷新浏览器界面,即可看到效果。
(3)基于IP地址对WEB服务器的访问–域名+IP+端口号:
实例:新建一个192.168.253.150的网站,文件存放在/www/150,内容显示为this is 192.168.253.150
[[email protected] ~]# nmcli connection modify eno16777736 +ipv4.addresses 192.168.253.150
给eno16777736网卡加上一个192.168.253.150的IPV4地址
[[email protected] ~]# vim /etc/httpd/conf.d/vhost.conf
<directory "/www">
AllowOverride None
options none
require all granted
</directory>
<virtualhost 192.168.253.150:80>
documentroot "/www/150"
servername 192.168.253.150
</virtualhost>
(使用wq!进行强制保存)
[[email protected] ~]# cd /etc/httpd/conf.d/
[[email protected] conf.d]# mkdir /www/150 -pv
mkdir: created directory ‘/www’
mkdir: created directory ‘/www/150’
[[email protected] conf.d]# echo this is 150 > /www/150/index.html
[[email protected] conf.d]# systemctl restart httpd.service
实验查看:
(4)基于不同的端口对WEB服务器的访问:
新建一个网站,文件存放在/www/10000,内容显示为this is 10000。
[[email protected] conf.d]# vim /etc/httpd/conf.d/vhost.conf
</virtualhost>
LISTEN 10000
<virtualhost 192.168.253.150:10000>
servername 192.168.253.150:10000
documentroot "/www/10000"
</virtualhost>
(使用wq!进行强制保存)
[ro[email protected] conf.d]# mkdir /www/10000 -pv
mkdir: created directory ‘/www/10000’
[[email protected] conf.d]# echo this is 10000 > /www/10000/index.html
[[email protected] conf.d]# systemctl restart httpd.service
实验查看:
(5)基于域名对WEB服务器的访问:
新建一个网站,域名为www.haha.com,同时也可以使用www1.haha.com访问,文件存放在/www/hahai目录,网页内容为This is haha。
[[email protected] conf.d]# vim /etc/httpd/conf.d/vhost.conf
<virtualhost 192.168.253.150:80>
documentroot "/www/haha"
servername www.haha.com
serveralias www1.haha.com
</virtualhost>
(使用wq!进行强制保存)
[[email protected] conf.d]# mkdir /www/haha -pv
mkdir: created directory ‘/www/haha’
[[email protected] conf.d]# echo this is haha > /www/haha/index.html
[[email protected] conf.d]# systemctl restart httpd.service
Hosts是一个没有扩展名的系统文件,其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联"数据库",当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应网页,如果没有找到,则系统会再将网址提交DNS域名解析服务器进行IP地址的解析。
创作者:Eric· Charles