Linux操作系统下的HTTP服务及简单的服务配置解析

这篇博客详细解析了Linux系统中Apache HTTP服务的工作原理和配置。内容涵盖Http协议、Web服务器概念、Apache服务器介绍、LAMP框架、HTTP请求方法、服务器响应状态码、代理与缓存服务器的角色,以及如何配置和测试基于IP、端口和域名的HTTP服务访问。此外,还提到了通过Hosts文件实现域名访问的机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.Http(HyperText Transfer Protocal):超文本传输协议,是互联网上最广泛的一种网络协议,所有的www文件都必须遵守这个标准。Http协议用于从www服务器上传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(例如:文本先于图形)等
2. 服务:是运行在操作系统后台的一个或多个程序,为用户或系统提供某项特定的服务。服务配置最多的是网络服务,网络服务通常就是为其他用户,其他计算机提供某项功能服务。
3. Web服务器:也称WWW(World wide Web)服务器,一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以向浏览器等Web客户端提供文档,也可以放置网站文件,让全世界浏览;可以放置数据文件,让全世界下载。目前最主流的三个Web服务器ApacheMicrosoft的Internet信息服务器(Internet Information Services,IIS)Unix的 nginx
Linux操作系统下的Web服务器使用的是Apache(阿帕奇)服务器,开放源代码的Apache服务器起初由Illinois大学Urbana-Champaign的国家高级计算程序中心开发,后来Apache被开放源代码团体的成员不断地发展和加强。逐渐,它开始在功能和速度上超越其他Web服务器。由于Apache服务器拥有牢靠可信的稳定性美誉,因此从1995年1月以来,Apache一直是Internet上最流行的Web服务器。
下面这张图便是Apache的标志:

在这里插入图片描述
4. 网站的框架LAMP:
在这里插入图片描述
Linux+Apache+Mysql+Perl/PHP/Python一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台。随着开源潮流的蓬勃发展,开放源代码的LAMP已经与J2EE和.Net商业软件形成三足鼎立之势,并且该软件开发的项目在软件方面的投资成本较低,因此受到整个IT界的关注。从网站的流量上来说,70%以上的访问流量是LAMP来提供的,LAMP是最强大的网站解决方案。
静态网页:html。
5. 访问标准:用户,计算机通过访问固定的ip地址或域名及端口号访问服务器的某项网络服务。
访问过程:
1)Web浏览器使用HTTP命令向一个特定的Web服务器发出Web页面请求。
2)若该服务器在特定端口(通常是TCP 80端口)处接收到Web页面请求后,就发送一个应答并在客户和服务器之间建立连接。
3)服务器Web查找客户端所需文档,若Web服务器查找到所请求的文档,就会将所请求的文档传送给Web浏览器。若该文档不存在,则服务器会发送一个相应的错误提示文档给客户端。
4)Web浏览器接收到文档后,就将它显示出来。
5)当客户端浏览完成后,就断开与服务器的连接。
6. 客户端的请求与服务端的响应:
在这里插入图片描述
HTTP/1.1定义的请求方法有8种:GET、POST、PUT、DELETE、PATCH、HEAD、OPTIONS、TRACE。最常的两种GET(从服务端向客户端发送命名资源,就是客户端仅请求服务器相应内容时用)和POST(将来自客户端的数据存储到一个命名的服务器资源中去,就是客户端向服务端提交数据时使用POST),如果是RESTful接口的话一般会用到GET、POST、DELETE、PUT。
服务端响应请求会通过报文返回一个状态码,这个我们必须得清楚,排查错误时作用可是很大的:

--200  正常,请求成功
--401  静止访问,未授权(没有登录或者登陆失败)
--403  禁止访问,通常代表已认证通过,但没有访问权限
--404  未找到资源
--500  服务器内部错误(服务器内部出现问题,服务器内部故障,或者访问过多没有显示就可能会出现500错误)

 状态代码一般是3位数字:
1xx:指示信息--表示请求已接收,继续处理。
2xx:成功--表示请求已被成功接收、理解、接受。
3xx:重定向--要完成请求必须进行更进一步的操作。
4xx:客户端错误--请求有语法错误或请求无法实现。
5xx:服务器端错误--服务器未能实现合法的请求。

7. 代理服务器、缓存服务器与网关服务器:

代理服务器: S和C之间的访问实体,举个简单的例子,百度服务器,全中国的人要是同时访问百度服务器,那么服务器肯定撑不住就崩溃了,所以百度就有很多的代理服务器,我们一般访问百度,就是就近访问百度的代理服务器。
缓存服务器: 特殊的代理服务器,举个简单的例子,当你第一次访问百度服务器,并得到响应,缓存服务器是会记录下来的,当你再次发起同样的请求,百度服务器会直接将请求转给缓存服务器来响应你。
网关服务器: 一个http/FTP网关服务器C—http – 8080 (FTP<–>HTTP )-----S FTP。
8. 网站的访问格式http://域名或ip:端口号(默认80端口)。
9. Http服务的相关配置内容及步骤:
9.1.首先我们先认识以下相应的配置目录、配置目录的内容以及网页的存放路径:

[root@localhost ~]# ll /etc/httpd/
总用量 8
drwxr-xr-x. 2 root root   35 1月  19 22:14 conf--------主配置目录(主配置文件建议不要动)
drwxr-xr-x. 2 root root 4096 1月  19 22:28 conf.d------辅助配置目录(可以自己手动配置完成相应需求)
drwxr-xr-x. 2 root root 4096 1月  19 11:56 conf.modules.d
lrwxrwxrwx. 1 root root   19 1月  19 11:56 logs -> ../../var/log/httpd---------日志信息(对于排错是很重要的)
lrwxrwxrwx. 1 root root   29 1月  19 11:56 modules -> ../../usr/lib64/httpd/modules
lrwxrwxrwx. 1 root root   10 1月  19 11:56 run -> /run/httpd

网页存放路径:

[root@localhost ~]# ll /var/www/
总用量 0
drwxr-xr-x. 2 root root  6 9月  17 2015 cgi-bin
drwxr-xr-x. 5 root root 93 1月  19 14:04 html----------网页页面
Cgi-bin 是一种特殊的目录,在进行交互式的www访问(如填写在线表格)时,需要对服务器上有相应程序对访问这输入的信息进行处理,这写程序就是就是cgi程序。而这些程序只能放在cgi-bin这个目录。

主配置文件介绍,主配置文件中的内容我们一定要搞清楚:

ServerRoot "/etc/httpd" ------服务配置文件的根设置apache安装的绝对路径
Listen 80------监听端口         
Include conf.modules.d/*.conf      
User apache------进程属主
Group apache
ServerAdmin root@localhost------服务管理员邮箱,出现错误会向此邮箱报告错误
ServerName 0.0.0.0:80------服务名
<Directory />------目录标签
    AllowOverride none------是否可以覆盖前面的配置信息
    Require all denied------禁止访问根
</Directory>                                  
DocumentRoot "/var/www/html"------文档根目录设置       
<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 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>
EnableSendfile on------支持发送文件
IncludeOptional conf.d/*.conf------包括选项子配置文件

9.2.定义虚拟主机访问的格式:

[root@localhost ~]# vim /usr/share/doc/httpd-2.4.6/httpd-vhosts.conf
<VirtualHost *:@@Port@@>                                          //虚拟主机的配置信息,ip、域名+端口
    ServerAdmin webmaster@dummy-host2.example.com                 //定义管理员用户的邮箱
    DocumentRoot "@@ServerRoot@@/docs/dummy-host2.example.com"    //文件的根目录
    ServerName dummy-host2.example.com                            //服务器的名称
    ErrorLog "/var/log/httpd/dummy-host2.example.com-error_log"   //错误日志信息
    CustomLog "/var/log/httpd/dummy-host2.example.com-access_log" common      //common是结束标记
</VirtualHost>

9.3.配置步骤:

1)[root@localhost ~]# mount /dev/sr0 /mnt/             //首先将光盘映像挂载到挂载点
2)[root@localhost ~]# vim /etc/yum.repos.d/hehe.repo   //配置yum仓库
[base]
name=base
baseurl=file:///mnt
gpgcheck=0
enable=1
3)[root@localhost ~]#yum install httpd –y              //安装http服务
4) [root@localhost ~]#systemctl restart httpd          //重启http服务
5)[root@localhost ~]#.systemctl stop firewalld         //关闭防火墙
6)[root@localhost ~]#setenforce 0                      //关闭selinux
7)[root@localhost ~]#vim /var/www/html/index.html      //编辑静态页面

10.Web服务器配置及测试:
10.1.基于IP地址访问静态界面:

 [root@localhost ~]# vim /etc/httpd/conf.d/vhost.conf
<Directory /haha>
        AllowOverride none                      //不允许覆盖前边的配置
        Require all granted                     //允许访问/haha目录
</Directory>
<VirtualHost 192.168.192.129>
        ServerAdmin root@localhost.localdomain
        DocumentRoot /haha                      //文档根目录为/haha目录,所以我们得创建/haha目录
        ServerName 192.168.192.129              
        ErrorLog /var/log/httpd/dummy-host2.example.com-error_log
        CustomLog /var/log/httpd/dummy-host2.example.com-access_log common
</VirtualHost>
[root@localhost ~]# echo i am ccnp > /haha/index.html        //输入测试内容

测试结果:
在这里插入图片描述
10.2.基于端口访问静态页面(主配置文件中设置的默认监听端口为80):

<Directory /haha>
AllowOverride none             //不允许覆盖前边的配置
        Require all granted    //允许访问/haha
</Directory>
Listen 8666
<VirtualHost 192.168.192.129:8666>
        ServerAdmin root@localhost.localdomain
        DocumentRoot /haha
        ServerName 192.168.192.129
        ErrorLog /var/log/httpd/dummy-host2.example.com-error_log
        CustomLog /var/log/httpd/dummy-host2.example.com-access_log common
</VirtualHost>

测试结果:
在这里插入图片描述
10.3.基于域名访问静态页面:

[root@localhost ~]# vim /etc/httpd/conf.d/zhang.conf
<Directory /xiaopang>
        AllowOverride none
        Require all granted
</Directory>
<VirtualHost 192.168.192.129>
        ServerAdmin root@localhost.localdomain
        DocumentRoot /xiaopang
        ServerName www.xiaopang.com
        ErrorLog /var/log/httpd/dummy-host2.example.com-error_log
        CustomLog /var/log/httpd/dummy_host2.example.com-access_log common
</VirtualHost>
<Directory /dapang>
        AllowOverride none
        Require all granted
</Directory>
<VirtualHost 192.168.192.129>
        ServerAdmin root@localhost.localdomain
        DocumentRoot /dapang
        ServerName www.dapang.com
        ErrorLog /var/log/httpd/dummy-host2.example.com-error_log
        CustomLog /var/log/httpd/dummy_host2.example.com-access_log common
</VirtualHost>

注意:基于域名访问页面是需要DNS服务器来对域名进行解析成相应的ip地址来完成访问的,这里我们做的是简单的测试,所以是通过编辑hosts文件来完成基于域名访问的,Hosts是一个没有扩展名的系统文件,其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联"数据库",当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应网页,如果没有找到,则系统会再将网址提交DNS域名解析服务器进行IP地址的解析。

[root@localhost ~]# vim /etc/hosts
192.168.192.129 www.dapang.com
192.168.192.129 www.xiaopang.com

测试结果:

在这里插入图片描述在这里插入图片描述
注意:
以上三个简单的案例均时利用Linux操作系统上的浏览器进行测试的,如果我们要用Windows上的浏览器来测试,一定要记着修改Windows系统的Hosts文件。

Linux操作系统下各项服务的解释 1、alsasound:Alsa声卡驱动程序支持。Alsa声卡驱动程序本来是为了一种声卡Gravis UltraSound(GUS)而写的,该程序被证 明很优秀,于是作者就开始为一般的声卡写驱动程序。Alsa和OSS/Free 及OSS/Linux兼容,但是有自己的接口,甚至比OSS优秀。   2、amd:运行automount精灵程序,该精灵在必要时自动安装一些本地设备和NFS文件系统。   3、apmd:apmd用来监视系统用电状态,并将相关信息通过syslogd 写入日志。也可以用来在电源不足时关机。   4、arpwatch:该程序主要用来维护以太网物理地址和IP地址的对应关系。   5、atalk:AppleTalk精灵程序。注意不要在后台运行该程序,该程序的数据结构必须在运行其他进程前先花一定时间初始化。   6、atd:运行用户用At命令调度的任务。也在系统负荷比较低时运行批处理任务。   7、autofs:当您需要时自动转载文件系统,而当您不需要时自动卸载。   8、bootparamd:该服务允许老的Sun工作站从Linux网络启动,它和rarp现在很少使用,基本上被bootp和dhcp取代了。   9、crond:cron是Unix下的一个传统程序,该程序周期地运行用户调度的任务。比起传统的Unix版本,Vixie版本添加了不少属性,而且更安全,配置简单。   10、dhcpd:该精灵提供了对动态主机控制协议(Dynamic Host Control Protocol)的访问支持。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值