Linux 服务篇之——httpd的配置(一)

Httpd(即Apache)作为当今最流行的的web server之一,在互联网中起着至关重要的作用,那么这么一个强大的工具是如何配置工作的呢,本节我就带大家了解实现一下httpd的基本配置。

在这里一些基本的httpd知识点我可能介绍的不是那么的详细,希望大家不是很懂的地方可以通过Google等方式进行查找了解。那么下面我们就开始吧。

实验运行环境:

Centos6.5x86_64

IP:172.16.249.57

Httpd的安装

Httpd的安装方式通常有两种,一直是直接利用rpm包进行直接安装,另一种是源码编译安装,这里我们先用rpm包直接安装就行了,至于源码编译安装的方式我会在后面进行介绍并实现。OK,那就开始安装了。

[[email protected] ~]# yum install httpd

安装好之后我们看下生成了哪些文件

[[email protected] ~]# rpm -ql httpd

下面是几个比较重要的文件

配置文件:

/etc/httpd/conf/httpd.conf

/etc/httpd/conf.d/*.conf

服务脚本:

/etc/rc.d/init.d/httpd

脚本配置文件:/etc/sysconfig/httpd

 

模块目录:

/etc/httpd/modules:          链接文件

/usr/lib64/httpd/modules

主程序:

/usr/sbin/httpd: prefork 

/usr/sbin/httpd.event: event

/usr/sbin/httpd.worker: worker

日志文件目录:

/var/log/httpd

access_log: 访问日志

error_log: 错误日志

好了下面我们就对主配置文件进行介绍了。

注意:由于该配置文件比较大,找配置的时候不好找,因此多多使用vim的查找功能。

[[email protected] ~]#vim /etc/httpd/conf/httpd.conf

持久连接(又称为长连接)

这里需要解释一下持久连接,持久连接即是在规定的一定时间或者规定的请求数内,客户端向服务器端请求资源时,不必每次都重新经过TCP三次握手建立连接,而是直接请求,这样就大大的节约了时间。但它并非适合所有请求者,对于一些只请求一次或者次数很少的用户,这就变成了占用资源,因此长连接直接影响到了服务器的性能。

Timeout 60

在客户端和服务器端TCP三次握手的时候,当客户端发起请求,服务器端响应请求之后,服务器端等待客户端确认的时间,如果客户端在时间内未确认,则服务器将关闭该次TCP握手。

KeepAlive {On|Off}

持久连接是否启用

MaxKeepAliveRequests 100

服务器单个持久连接最大的请求数,超过即断开

KeepAliveTimeout 15 

单个持久连接最大连接时长,超过即断开

MPM参数

这里定义的是httpd的工作模式(注意:只能使用其中一种)

httpd在linux下默认使用prefork, 当然这是我们可以自己定义的。

prefork : httpd使用进程来提供服务,每个进程在同一时间提供一次服务。  

worker : httpd在启动的时候,会由root进程派生出几个子进程,每个子进程中会有固定数量的线程,到时候提供服务的,就是这些线程,也就是说一个进程能够同时提供多次服务。  

注意,这里面的参数尤其关键,务必要搞清楚每个参数的意义。

<IfModule prefork.c>

StartServers       8          是httpd刚启动时,root进程创建的子进程数

MinSpareServers    5         最少的空闲子进程数

MaxSpareServers   20        最大的空闲子进程数

ServerLimit      256        服务器能接受的最大的并发请求数

MaxClients       256       客户端最大并发请求的数量   显然它必须小于serverlimit

MaxRequestsPerChild  4000   每个子进程最多可以接受的请求数,超过即KILL

</IfModule>

 

<IfModule worker.c>

StartServers         4         是httpd刚启动时,root进程创建的子进程数

MaxClients         300       客户端最大并发请求的数量

MinSpareThreads     25       最少的空闲线程数

MaxSpareThreads     75      最大的空闲进程数

ThreadsPerChild     25       每个子进程最多可以生成的线程数

MaxRequestsPerChild  0       每个子进程可接受的请求数,0表示任意个

</IfModule>

指定监听的地址和端口

格式:Listen [IP:]PORT     IP地址可以省略

端口是可以定义多个的,他并不是唯一的

一般httpd默认监听在80端口

DSO机制装载的模块

DSO即Dynamic Shared Object动态分享对象。

这里定义了系统装载的一些模块,如截图所示,其格式为

LoadModule  Module_Name(模块名称)       /path/to/Module_File

(模块路径,这里是相对路径,相对于前面定义的目录下,当然也可以使用绝对路径)

如果你想添加模块的话,直接按照格式写在配置文件中即可;

当然,你不想启用的话可以直接通过#进行注释即可,保存后即可生效。

你也可以通过命令查看装载的模块信息

# httpd -D DUMP_MODULES

指定站点根目录

如图,DocumentRoot定义了httpd服务器的站点根目录,你在互联网上访问该服务器时访问的都是该根目录下的内容;当然,路径也是可以自己定义的,默认一般都为/var/www/html

站点路径访问控制

这里的访问控制可以有2种方式:

基于本地文件系统路径:

格式

<Directory "/path/to/somewhere">

</Directory>

基于URL访问路径做访问控制

格式

<Location "/path/to/URL">

</Location>

 

如下图所示:

这是一个基于本地文件系统的访问控制:这里对里面的一些选项进行介绍

(1) Options

Indexes: 当访问的路径下无默认的主页面,将所有资源以列表形式呈现给用户;

这项比较危险,一般不建议启用;当然如果作为文件服务器让别人下载文件的话可以启用。

FollowSymlinks: 跳跃符号链接,直接相当于访问符号链接指向的文件。

(2) AllowOverride

支持在每个页面目录下创建.htaccess用于实现对此目录中资源访问时的访问控制功能。

(3)Order

Deny为拒绝,allow为允许。

这里可以对IP地址或网络进行控制。

注意:网络地址格式较为灵活:

172.16

172.16.0.0

172.16.0.0/16

172.16.0.0/255.255.0.0

可以通过deny和allow的先后顺序不同来定义白名单和黑名单

例如:

   order deny allow

deny  192.168.0.1

这样就定义了一个黑名单,除了192.168.0.1都可以访问

再如:

   order  allow deny

   allow  172.16.0.0/16   

这样就定义了个白名单,除了172.16.0.0网段的都不能访问

定义默认的主页面

DirectoryIndex可以定义服务器的默认主页面

这里需要解释的是:当通过互联网访问你的服务器时,访问的是某个路径,而非路径下的文件时,如果该路径下有对应的index.html或者index.html.var文件,则显示为该文件的内容,否则,则会根据站点访问控制里的options选项显示相应的内容。

配置日志功能

这里定义了错误日志以及访问日志,日志的等级,日志的格式等。

ErrorLog "/path/to/error_log"   错误日志路径

LogLevel {debug|info|notice|warn|error|crit|alert|emerg}   日志等级

 

LogFormat  日志格式

CustomLog "/path/to/access_log" LogFormat_Name 访问日志路径以及日志格式名称

下面是日志格式中一些选项的意义。

%h: 客户端地址

%l: 远程登录名,通常为-

%u: 认证时输入用户名,没有认证时为-

%t: 服务器收到 用户请求时的时间

%r:请求报名的起始行

%>s: 响应状态码

%b: 响应报文的长度,单位是字节

%{HEADER_NAME}i: 记录指定首部对应的值

路径别名

路径别名可以实现URL路径的映射,从而所访问的页面资源不再依赖于站点的根目录。

格式:

Alias /URL/ "/path/to/somewhere/"

设定默认字符集

这里默认的是UTF-8,即8-bit Unicode Transformation Format

CGI脚本

CGI脚本路径别名

脚本的默认存放位置:/var/www/cgi-bin/

在浏览器中的访问格式:http://server/cgi-bin/

虚拟主机

虚拟主机可以分成3类

1、基于端口

2、基于IP

3、基于主机名

注意,使用虚拟的前提:取消主服务器,即注释主服务器的站点根路径指定:DocumentRoot

定义虚拟主机

NameVirtualHost IP:PORT

 

<VirtualHost IP:PORT>

ServerName 

DocumentRoot 

ServerAlias

ErrorLog

CustomLog

</VirtualHost>

配置文件语法检查:

httpd -t

service httpd configtest

配置示例:

<VirtualHost 172.16.249.57:80>      第一个和第二个是基于主机名的,第三个是基于端口的
    ServerName www.a.org   
    DocumentRoot "/web/a"           需要声明的是这些目录都要先创建起来,并且每个根目录下
</VirtualHost>                      都有创建index.html文件,里面分别写上a,b,c
<VirtualHost 172.16.249.57:80>         
    ServerName www.b.net
    DocumentRoot "/web/b" 
</VirtualHost> 
<VirtualHost 172.16.249.57:8080>
    ServerName www.c.gov 
    DocumentRoot "/web/c" 
</VirtualHost>

测试:elinks

-dump: 获取到页面数据后直接退出进程;

测试结果如下

这节就先讲到这里,后边的配置下节继续讲,谢谢!

Linux 服务篇之——httpd的配置(一)

时间: 2024-08-24 10:15:52

Linux 服务篇之——httpd的配置(一)的相关文章

Linux服务篇之七:MySQL主从原理及架构配置

Linux服务篇之七:MySQL引擎了解.主从原理及架构配置 一.MySQL引擎了解 MyISAM引擎 默认表类型,它是基于传统的ISAM类型,ISAM是IndexedSequential Access Method (有索引的顺序访问方法) 的缩写,它是存储记录和文件的标准方法.不是事务安全的,而且不支持外键,如果执行大量的select, MyISAM比较适合. InnoDB引擎 支持事务安全的引擎,支持外键.行锁.事务是他的最大特点.Innodb最初是由innobase Oy公司开发,200

Linux服务篇之二、构建Vsftp文件服务器

Linux服务篇之二.构建Vsftp文件服务器 FTP是文件传输协议,正是由于这种协议使得主机间可以共享文件. FTP 使用TCP生成一个虚拟连接用于控制信息,然后再生成一个单独的 TCP 连接用于数据传输. vsftpd是一款在Linux发行版中最主流的FTP服务器程序:特点是小巧轻快,安全易用:能让其自身特点得发发挥和掌握. 一.第一种方法就是使用系统用户登录FTP,但是也是比较危险的,先测试系统用户登录FTP,在Linux系统上创建useradd  test 用户,并为其设置名,然后在xp

Linux服务篇之四:构建MySQL服务器

Linux服务篇之四:构建MySQL服务器  MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQL AB公司, 目前属于Oracle公司,MySQL被广泛地应用在Internet上的中小型网站中.由于其体积小.速度快.总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库. 对应目前主流的LAMP架构来说,Mysql更是得到各位IT运维.DBA的青睐,目前mysql已被orcacle收购,不过好消息是原来mysql创始

马哥2016全新Linux+Python高端运维班-Linux服务 DNS,httpd,加密通讯,vsftp,NFS,samba服务练习

本周作业内容: 1.详细描述一次加密通讯的过程,结合图示最佳. 一次加密通讯的过程: 首先Bob用单向加密的方法提取数据的特征码,用自己的私钥加密这段特征码,并附加到数据的后面. Bob用对称加密算法把数据及特征码整个进行加密. Bob用接收方的公钥加密对称密钥并附加到数据后面. Alice用私钥解密对称密钥. Alice用对称密钥解密出数据及加密的特征码. Alice用发送方的公钥解密特征码,并用相同的算法算出数据的特征码,比较两个特征码是否一致,若一致即可获得Bob的数据. 如图所示: 单向

Linux服务管理之httpd常用配置文件

一.何为httpd httpd是Apache超文本传输协议(HTTP)服务器的主程序.被设计为一个独立运行的后台进程,它会建立一个处理请求的子进程或线程的池. Apache是世界使用排名第一的Web服务器软件.它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一.它快速.可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中. 二.httpd的基本功能特征 ①.高度模块化设计,并且支持模块的动态装载(DSO机制),所

linux服务篇(九)Apache服务

HTTP概述 WWW的目的就是使信息更易于获取,而不管它们的地理位置在哪里.当使用超文本作为WWW文档的标准格式后,人们开发了可以快速获取这些超文本文档的协议-HTTP协议,即超文本传输协议. HTTP是应用级的协议,主要用于分布式.协作的信息系统.HTTP协议是通用的.无状态的,其系统的建设和传输与数据无关.HTTP也是面向对象的协议,可以用于各种任务,包括名字服务.分布式对象管理.请求方法的扩展.命令等. 在Internet上,HTTP通信往往发生在TCP/IP连接上,其默认的端口为80,也

Linux服务篇之十二:源码包构建LAMP服务器

实验环境:Apache服务器一台.Mysql服务器一台.PHP服务器一台 步骤一:安装Apache服务器 1.安装apr yum install gcc-c++ -y yum -y install epel-release tar zxf apr-1.5.2.tar.gz cd apr-1.5.2 ./configure --prefix=/usr/local/apr;echo $? make && make install;echo $? cd .. 2.安装apr-util yum -

Linux服务篇之三、构建Apache服务器

Apache是世界使用排名第一的Web服务器软件.它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一.Apache工作模式有多种,其中最常用的有两种: Prefork模式:Prefork MPM使用多个子进程,每个子进程只有一个线程.每个进程在某个确定的时间只能维持一个连接. 在大多数平台上,Prefork MPM在效率上要比Worker MPM要高,但是内存使用大得多.prefork的无线程设计在某些情况下将比worker更有优势:它可

Linux服务篇之一、构建NTP时间服务器

NTP服务介绍: NTP服务器是用于局域网服务器时间同步使用的,可以保证局域网所有的服务器与时间服务器的时间保持一致,某些应用对时间实时性要求高的必须统一时间. 准备2台虚拟机做测试: 一.修改客户端的时间 1.查看当前客户机的系统时间:发现时间不准确,需要进程调整: 2.同步时间的命令是:ntpdate 在网络上找一下可以同步的时间服务器,有很多: http://www.cnblogs.com/JemBai/archive/2012/04/15/2450045.html 3.同步时间,用一下复