【我的技术我做主】Apache Httpd Web服务器详解

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

一.简介

Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。Apache HTTP服务器是一个模块化的服务器,源于NCSAhttpd服务器.Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。

Apache官网:http://apache.org/

Apache Httpd网站:http://httpd.apache.org/

Apache httpd Web服务器特性

    1.事先创建进程

    2.模块多元化,各种功能模块的添加

    3.可以支持SSL技术

    4.支持多种方式的虚拟主机配置

            虚拟主机常用配置主要分为:

                    基于IP的虚拟主机

                    基于端口的虚拟主机

                    基于域名的虚拟主机

    5.支持多种方式的HTTP认证

    6.支持URL重写;等多种特性

二.httpd安装方式

            主要安装方式分为两种:一种为rpm包安装;另一种为源码包安装

            安装httpd软件包时,请现将SELinux处于permssive或disabled,否则可能某些服务无法启动

            修改SELinux配置文件/etc/selinux/config,修改“SELINUX=permssive”

            wKioL1XDZM6wuj-MAAFWDV_4AFo800.jpg

httpd软件包安装:yum -y install httpd   (yum的搭建不多说了,可以查看本博客yum源的搭建)

三.Httpd端口,目录介绍   

    httpd默认端口为tcp/80端口;ssl 协议端口为443/tcp端口

    httpd工作的默认根目录为/etc/httpd

    http的配置文件目录为/etc/httpd/conf

            httpd主配置文件为httpd.conf文件

           以 /etc/httpd/conf.d/*.conf结尾的配置文件均为httpd.conf的主配置文件的组成部分

    Apache Httpd模块化目录为/etc/httpd/modules

    Apache Httpd日志目录为/etc/httpd/logs -->/var/log/httpd  指向/var/log/httpd目录文件

            日志文件分为:访问日志access_log;错误日志err_log 两种

    Apache Httpd网页目录为/var/www目录 

            /var/www目录下分为html目录和cgi-bin目录:html目录为静态网页目录如html语言开发的;

                    cgi-bin目录为动态网页目录如asp,php,jsp,Java等开发的网站程序。

     CGI简介:               

     Common Gateway Interface,简称CGI。在物理上是一段程序,运行在服务器上,提供同客户端HTML页面的接口。cgi是外部应用程序(CGI程序)与Web服务器之间通信的接口,CGI规范允许Web服务器执行外部程序,并将它们的输出发送给Web浏览器,CGI将Web的一组简单的静态超媒体文档变成一个完整的新的交互式媒体。

四.httpd主配置文件/etc/httpd/conf/httpd.conf 详解

### Section 1: Global Environment  全局配置
        ServerRoot "/etc/httpd"  httpd服务器根目录

        PidFile run/httpd.pid       httpd服务进程pid,保存在httpd.pid文件中
        KeepAlive Off                  是否启用长链接【on  or off】使用长连接可以有效的提高性能

        MaxKeepAliveRequests 100       在启用长连接后用户最多一次请求的资源数,0表示无限制请求

        KeepAliveTimeout 15      长连接的断开时常

 # prefork MPM 多处理模块

        mpm_winnt  windows下多线程处理机制;

        prefork Linux下预先生成进程处理机制,一个请求用一个进程进行响应;

        worker多个线程处理,一个请求一个线程响应;

        event一个进程处理多个请求

     可以使用httpd -l命令查看当前Linux所支持那些mpm处理模块
     httpd服务器默认使用worker处理模块,如果更改其他处理模块可修改httpd启动脚本来实现,httpd启动脚本配置文件为/etc/sysconfig/httpd,修改配置文件中#HTTPD=/usr/sbin/httpd.worker

       <IfModule prefork.c>
        StartServers       8                  服务器启动时启动8个空闲进程
        MinSpareServers    5             最少空闲5个进程接受用户请求
        MaxSpareServers   20           最大空闲进程
        ServerLimit      256                为MaxClients指定最大上限,修改时当前服务器必须关闭服务器kill所有进程,在重新启动
        MaxClients       256               最大客户端数,最多只允许256个客户端同时请求,不能超过Serverlimit限定数  
        MaxRequestsPerChild  4000 一个进程最多响应4000次的用户请求            
        </IfModule>
        <IfModule worker.c>
        StartServers         4                 服务器启动时启动4个进程
        MaxClients         300              最大客户端数,最多只允许300个客户端同时请求
        MinSpareThreads     25          最小空闲线程
        MaxSpareThreads     75         最大空闲线程
        ThreadsPerChild     25            每 一个进程生成25个线程
        MaxRequestsPerChild  0         不做限定的用户请求
        </IfModule>

        #Listen 12.34.56.78:80

        Listen 80  Httpd服务器默认监听端口80,可以同时监听多个端口
        Listen 8080    或  127.0.0.1:8080

 ### Section 2: 'Main' server configuration  server主配置       

         ServerAdmin root@localhost               服务器管理员

         ServerName www.example.com:80      服务器Name

         DocumentRoot "/var/www/html"         网站文档根目录,可直接修改目录路径

        如要修改默认www文档根目录,必须要定义<Directory />Apache服务和功能是否被允许和访问

        也可修改相应的配置文件中<Directory "/var/www/html"> 中的目录即可。

        自定义<Directory />,格式如下
                <Directory />
                Options FollowSymLinks
                AllowOverride None
                </Directory>

 Options选项参数

# Possible values for the Options directive are "None", "All",
# or any combination of:
#   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important.  Please see
# http://httpd.apache.org/docs/2.2/mod/core.html#options
# for more information.
#
    Options Indexes FollowSymLinks

                  Indexes  索引网站目录,在网站安全中Indexes不可启用

                  None      不支持任何选项

                  FollowSymLinks      允许符号链接所指向的源文件

                  Includes    允许执行服务端包含SSI

                  ExecCGI     允许运行

                  MultiViews   多视图模式,耗费资源

                  ALL                支持所有选项

AllowOverride参数

# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#   Options FileInfo AuthConfig Limit

                AllowOverride None  允许覆盖服务器控制访问列表

                                        AuthConfig 用户认证,提供用户帐号密码提供登录

                        Order:用于定义基于主机的访问功能的Ip,网络地址或主机定义访问控制

                列子:如有一网站不想被192.168.100.1 和192.168.100.4 两个Ip地址访问如何配置Order?

                            AllowOverride None
                            Order deny,allow
                            Deny from 192.168.100.1 192.168.100.4

  httpd -t 检测配置文件语法是否正确 

 纯文本浏览器   elinks 127.0.0.1

                        elinks -dump 127.0.0.1  打开网站后直接退出

                         elinks -source 127.0.0.1 显示网站源码

列子:基于用户认证,本地有baishouqijia 、白手起家、zhang,3个用户在访问网站时必须输入帐号密码进行访问,否则无法访问,该如何做?配置文件如下

                    wKiom1XGIWaA5AwPAAK6Zy5A5Os699.jpg

      创建htpasswd中的用户帐号密码

        [root@localhost httpd]# htpasswd -c -m /etc/httpd/htpasswd baishouqijia
       [root@localhost httpd]# htpasswd -m /etc/httpd/htpasswd 白手起家
      [root@localhost httpd]# htpasswd -m /etc/httpd/htpasswd zhang
     [root@localhost httpd]# httpd -t
    [root@localhost httpd]# /etc/init.d/httpd restart
   [root@localhost httpd]#
   -m选项md5加密方式

   -c选项创建htpasswd文件,创建第一个用户时使用,第二个用户则无效加-c,否则重新创建htpasswd文件并替换第一次添加用户时所创建的文件

测试:

   开始登录提示输入帐号密码 

wKiom1XGI7uzUHR8AAG9p9YukHY116.jpg

输入帐号密码后

wKiom1XGI7ySIrlFAADKv3RgUzw002.jpg

      

删除用户 htpasswd -D

        DirectoryIndex index.html index.html.var   首页索引文件,如果一个网站程序中都包含,自左往右开始索引

        ErrorLog logs/error_log  错误日志目录
        LogLevel warn                日志级别

        LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
        LogFormat "%h %l %u %t \"%r\" %>s %b" common
        LogFormat "%{Referer}i -> %U" referer
        LogFormat "%{User-agent}i" agent
                %h    客户端地址

                %l     远程主机登录名称

                %u    登录网站时登录的用户名称

                %t     日志产生的时间

                %r     请求报文的第一行

                %>s   最后一次的请求的状态码

                %b     响应报文的大小

                %{Referer}i  网站来源

                %{User-Agent}i  客户端浏览器的类型

        Alias /icons/ "/var/www/icons/"  路径别名

   列子:在/mnt/www/bbs下创建index.html 并使用别名/bbs访问

    wKioL1XGOHGSnCMAAALATHahEZA549.jpg

测试:

wKioL1XGOOyTY7hSAADBPKTRYLE704.jpg

四、创建添加虚拟主机

1
2
3
4
5
6
7
8
9
10
11
12
13
  [root@localhost conf] # vim /etc/httpd/conf/httpd.conf
### Section 2: 'Main' server configuration
#DocumentRoot "/var/www/html"        注释掉
### Section 3: Virtual Hosts         添加以下部分
NameVirtualHost *:80
<V<VirtualHost *:80>
         ServerName www.a.net
         DocumentRoot  "/var/www/html/a.net"
< /VirtualHost >
<VirtualHost *:80>
         ServerName www.b.com
         DocumentRoot  "/var/www/html/b.com"
< /VirtualHost >


51cto十周年博客活动正在进行,你也来参加吧

   活动地址http://51ctoblog.blog.51cto.com/26414/1679643


本文转自 zhangguangyi 51CTO博客,原文链接:http://blog.51cto.com/bosszhang/1683080


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
3天前
|
缓存 NoSQL 数据库
高性能Web服务器架构设计
【8月更文第28天】在当今互联网时代,网站的响应速度直接影响用户体验和业务成功率。因此,构建一个高性能的Web服务器架构至关重要。本文将从硬件配置、软件架构以及网络设置三个方面探讨如何提高Web服务器的性能,并提供一些实际的代码示例。
16 0
|
3天前
|
前端开发 开发者 容器
探索现代Web开发中的CSS Grid布局技术
【8月更文挑战第29天】在数字时代的浪潮中,网页设计不断进化以适应日新月异的用户需求。CSS Grid布局技术作为一项革新性的前端工具,为设计师和开发者提供了前所未有的布局能力。本文旨在通过深入浅出的方式介绍CSS Grid的核心概念、基本用法以及在实际项目中的应用,帮助读者快速掌握这一强大的网页布局工具。
21 3
|
3天前
|
负载均衡 算法 应用服务中间件
负载均衡技术在Web服务器集群中的应用
【8月更文第28天】随着互联网的发展和用户对Web服务需求的增长,单台服务器很难满足大规模访问的需求。为了提高系统的稳定性和扩展性,通常会采用Web服务器集群的方式。在这种架构中,负载均衡器扮演着至关重要的角色,它能够合理地分配客户端请求到不同的后端服务器上,从而实现资源的最优利用。
16 2
|
6天前
|
前端开发 JavaScript 开发者
震惊!Web 前端 href 与 src 竟有如此差异,快来一探究竟,掌握热门技术核心要点
【8月更文挑战第26天】在Web前端开发中,`href`与`src`是两个常用属性,但其差异常被忽视。`href`(超文本引用)用于创建文档间的链接关系,如链接至外部网页或引入CSS文件;`src`(来源)则用于在文档内嵌入资源,如图片或JavaScript文件。两者在使用场景及加载机制上有所不同:`href`支持并行下载且不阻塞渲染,适合非关键资源加载;而`src`加载时会暂停页面渲染直至资源加载完成,适用于如图片和脚本这类对页面显示至关重要的资源。因此,正确理解并运用这两个属性对于保障网页性能和用户体验至关重要。
28 3
|
6天前
|
存储 移动开发 前端开发
HTML5时代来临,这些新特性你掌握了吗?一篇文章带你玩转Web前端技术潮流!
【8月更文挑战第26天】HTML5(简称H5)作为新一代Web标准,相比HTML4带来了诸多增强功能。
19 2
|
1天前
|
JavaScript 前端开发 UED
服务器端渲染新浪潮:用Vue.js和Nuxt.js构建高性能Web应用
【8月更文挑战第30天】在现代Web开发中,提升应用性能和SEO友好性是前端开发者面临的挑战。服务器端渲染(SSR)能加快页面加载速度并改善搜索引擎优化。Vue.js结合Nuxt.js提供了一个高效框架来创建SSR应用。通过安装`create-nuxt-app`,可以轻松创建新的Nuxt.js项目,并利用其自动路由功能简化页面管理。Nuxt.js默认采用SSR模式,并支持通过`asyncData`方法预取数据,同时提供了静态站点生成和服务器端渲染的部署选项,显著提升用户体验。
|
2天前
|
数据可视化 Python
通过python建立一个web服务查看服务器上的文本、图片、视频等文件
通过python建立一个web服务查看服务器上的文本、图片、视频等文件
6 0
|
3天前
|
前端开发 JavaScript API
Web服务器与前端技术的集成
【8月更文第28天】随着Web开发技术的发展,现代前端框架如React、Vue.js等已经成为构建复杂Web应用的标准工具。为了提供更好的用户体验,这些前端应用通常需要与后端Web服务器进行紧密集成。本文将详细介绍如何将React和Vue.js与后端Web服务器无缝集成,以创建高性能且用户友好的Web应用。
12 0
|
7天前
|
缓存 运维 网络协议
一台新PC进行Web页面请求的历程:技术深度剖析
【8月更文挑战第24天】在当今数字化时代,当我们轻轻点击浏览器上的一个链接,背后其实经历了一场复杂而精妙的交互过程。本文将带您深入探索,从一台全新PC的角度出发,揭秘Web页面请求的全过程,展现这背后隐藏的技术奥秘。
17 0
|
8天前
|
安全 网络安全 PHP
云计算与网络安全:技术融合下的新挑战PHP 在现代Web开发中的角色和挑战
【8月更文挑战第23天】随着云计算技术的飞速发展,企业和个人越来越依赖云服务来处理和存储数据。然而,这种便利性也带来了前所未有的网络安全风险。本文将探讨云计算环境中的网络安全挑战,分析信息安全的关键问题,并提出相应的防护措施。我们将深入讨论如何通过策略和技术的结合来增强云安全,确保数据的安全和隐私保护。

推荐镜像

更多
下一篇
云函数