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服务器是可以向发出请求的浏览器提供文档的程序。

  1. 服务器是一种被动程序:只有当Internet上运行其他计算机中的浏览器发出的请求时,服务器才会响应。
  2. Internet上的服务器也成为WEB服务器,是一台在Internet上具有独立的IP地址的计算机,可以向Internet上的客户机提供WWW、Email和FTP等各种Internet服务。
  3. 当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-超文本传输协议(HyperText Transfer Protocal)

二、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错误)
HTTP-超文本传输协议(HyperText Transfer Protocal)
代理服务器: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服务启动成功。
HTTP-超文本传输协议(HyperText Transfer Protocal)

(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.150IPV4地址
[[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

实验查看:
HTTP-超文本传输协议(HyperText Transfer Protocal)
(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 

实验查看:
HTTP-超文本传输协议(HyperText Transfer Protocal)
(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