Linux下 httpd.conf 配置详解

Linux下 httpd.conf 配置详解
Linux下 httpd.conf 配置详解

Linux下httpd.conf 配置详解

1. 关于本文

本文将以Apache 2.2为例,以rhel5为平台,讲述Apache服务器的安装和设置。

2. 关于Apache

Apache 是一款功能强大、稳定、可支撑关键任务的Web服务器

Apache具有如下特性:

1) 几乎可以运行在所有的计算机平台上.

2) 支持最新的HTTP/1.1协议

3) 简单而且强有力的基于文件的配置(HTTPD.CONF).

4) 支持通用网关接口(CGI)

5) 支持虚拟主机.

6) 支持HTTP认证.

7) 集成PERL.

8) 集成的代理服务器

9) 可以通过WEB浏览器监视服务器的状态, 可以自定义日志.

10) 支持服务器端包含命令(SSI).

11) 支持安全SOCKET层(SSL).

12) 具有用户会话过程的跟踪能力.

13) 支持FASTCGI

14) 支持JAVA SERVLETS.

……

更多信息请参阅Apache网站:https://www.360docs.net/doc/8113551691.html,

3. Apache的安装

Apache的安装无外两种方式:源码包安装和二进制包安装。这两种方式各有特色,二位制包安装不需编译,针对不同的平台有经过优化编译的不同的二进制文件以及包格式,安装简单方便,源码包则必须先配置编译再安装,可以根据你所用的主机环境进行优化、选择你所用的模块,安装定制更灵活。下面分别介绍这两种安装方式。

3.1 以源码包方式安装

3.1.1 下载最新版本的apache软件

访问apahce网站https://www.360docs.net/doc/8113551691.html,/download.cgi下载最新版本的Apache源码包。本文使用的是2.2.6版本,在linux系统下用下面的命令下载:

wget https://www.360docs.net/doc/8113551691.html,/httpd/httpd-2.2.6.tar.gz

3.1.2 解压缩下载的源码包

首先建立一个工作目录( 笔者建议的目录为/usr/local/src/apache ) :

mkdir -p /usr/local/src/apache

将下载的源码包移至工作目录:

mv httpd-2.2.6.tar.gz /usr/local/src/apache

进入工作目录并用tar命令解压源码包:

cd /usr/local/src/apache

tar zxvf httpd-2.2.6.tar.gz

命令执行结束后,当前工作目录下将生成一个新的子目录httpd-2.2.6,此目录下即为Apache的源码文件。

3.1.3 配置Makefile文件

进入Apache源码目录

cd httpd-2.2.6

执行下面的命令可查看可配置选项和可用模块:

./configure --help

配置命令常用格式如下:

CC=gcc CFLAGS="-O3" CXX=gcc CXXFLAGS="-O3 -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix= --enable-[=ARG]

--disable- --enable-modules= --enable-so

--enable-mods-shared= --with-mpm=

其中:

CC:C编译器的名称(用于运行configure),本文示例为gcc

CFLAGS:C编译器的标志(用于运行configure),本文示例为-O3,指定优化级别为3

CXX:C++编译器的名称(用于运行configure),本文示例为gcc

CXXFLAGS:C++编译器的标志(用于运行configure)

--prefix= 指明编译后的二进制文件安装到目录,用实际安装路径替换,如--prefix=/usr/local/apache-2.2.6 ,如果省略此配置参数,默认安装到

/usr/local/apache2目录。为了提高性能、方便系统升级、备份和恢复,笔者建议不要将apache与操作系统安装在同一物理磁盘或分区上,并且安装路径中要包括程序版本号。

--enable-[=ARG] 明确指明静态编译某一属性或模块到httpd二进制文件,如果[=ARG]不明确指出,默认为=yes;如果指定[=ARG]为=no,则效果等同于下面的

--disable-;如果指定[=ARG] 为=share,则单独编译为动态加载模块(DSO),需要通过--enable-so选项打开DSO支持。用实际的属性或模块名来替换< FEATURE>,如--enable-rewrite,--enable-rewrite=no,--enable-rewrite=share

--disable- 明确指明不静态编译某一属性或模块到httpd二进制文件,用实际的属性或模块名来替换,如--disable-status

--enable-modules= 明确指明要静态编译到httpd二进制文件的模块,

为空格分隔的模块名列表、all或者most,all表示包含所有模块,most表示包含大部分模块,如--enable-modules="rewrite deflate",--enable-modules=most,效果等同于多个

--enable-

--enable-so 指明编译动态加载模块(DSO)支持到httpd二进制文件,此模块使得Apache的各功能模块可以与核心分开编译、运行时动态加载。有了DSO支持,升级和增加模块时只需编译相关的模块即可,不必重新编译整个系统。最新版本的Apache缺省编译此模块到httpd二进制文件,如果你在使用早期版本的apache并且需要DSO支持,可能要明确指出此选项。

--enable-mods-shared= 明确指明要以DSO方式编译的模块,

为空格分隔的模块名列表、all或者most,all表示包含所有模块,most表示包含大部分模块,如--enable-mods-share="rewrite deflate",--enable-mods-share=most,效果等同于多个--enable-=share

--with-mpm= 先择Apache多路处理模块,

={beos|event|worker|prefork|mpmt_os2},prefork为Unix系统下默认处理模块,它将运行一个非线程型的、预派生的Web服务器,适合于没有线程安全库,需要避免线程兼容性问题的系统,它是要求将每个请求相互独立的情况下最好的MPM,这样若一个请求出现问题就不会影响到其他请求。worker为支持混合的多线程多进程的多路处理模块,由于使用线程来处理请求,所以可以处理海量请求,而系统资源的开销小于基于进程的MPM,同时,它也使用了多进程,每个进程又有多个线程,以获得基于

进程的MPM的稳定性。如果你的系统是基于线程安全的,那么笔者建议使用worker替代prefork,它将使得你的系统得到实际的性能改善。

如果执行不带任何选项的configure命令,将采用prefork多路处理模块,以默认方式安装Apache2.2到/usr/local /apache2目录,并以静态方式编译以下模块:authn_file、authn_default、authz_host、authz_groupfile、authz_user、authz_default、auth_basic、include、filter、log_config、env、setenvif、mime、status、autoindex、asis、cgi、negotiation、dir、actions、userdir、alias、so

安装后可以在apache安装目录下执行下面的命令得知以静态方式编译的模块列表以及正在以哪种多路处理模块运行:

./bin/httpd -l

可根据服务器的具体用途选择不同的配置选项,笔者建议采用worker多路处理模块,以动态加载模块(DSO)的方式来编译大部分模块。配置命令如下所示:

./configure --prefix=/usr/local/apache-2.2.6 --enable-so --enable-mods-shared=most --with-mpm=worker

如果你打算完全使用静态方式编译,那么笔者建议编译时增加以下模块:rewrite、deflate、expires、headers、cache、file-cache、disk-cache、mem-cache,禁用以下模块autoindex、asis、cgi、actions、include,各模块作用将在Apache配置一节详细介绍。配置命令如下所示:./configure --prefix=/usr/local/apache-2.2.6 --enable-rewrite --enable-deflate

--enable-expires --enable-cache --enable-file-cache --enable-disk-cache

--enable-mem-cache --disable-autoindex --disable-asis --disable-cgi --disable-actions

--disable-include --with-mpm=worker

或者:

./configure --prefix=/usr/local/apache-2.2.6 --enable-modules="rewrite deflate expires cache file-cache disk-cache mem-cache" --disable-autoindex --disable-asis

--disable-cgi --disable-actions --disable-include --with-mpm=worker

本文使用下面的配置命令,能满足大部分应用环境:

CC=gcc CFLAGS="-O3" CXX=gcc CXXFLAGS="-O3 -felide-constructors

-fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/apache-2.2.6

--enable-modules="rewrite deflate expires cache file-cache disk-cache mem-cache proxy proxy-connect proxy-ftp proxy-http proxy-ajp proxy-balancer" --enable-so

--enable-mods-shared=most --with-mpm=worker

3.1.4 编译源代码

执行下面的命令编译源代码:

make

3.1.5 安装

执行下面的命令安装apache到目标路径:

make install

3.1.6 设置开机自启动服务控制脚本

Apache安装后可通过其安装路径的bin目录下的apachectl脚本控制服务的启动和停止。本例中apache安装在/usr/local/apache-2.2.6,服务控制脚本为:

/usr/local/apache-2.2.6/bin/apachectl

执行下面的命令启动Apache服务:

/usr/local/apache-2.2.6/bin/apachectl start

执行下面的命令停止Apache服务:

/usr/local/apache-2.2.6/bin/apachectl stop

可以简单地把Apache启动命令加到/etc/rc.local文件,让Apache随系统启动而自动启动:echo "/usr/local/apache-2.2.6/bin/apachectl start" >> /etc/rc.local 下面介绍如何把Apache加入到系统服务,用service命令来控制Apache的启动和停止。

首先以apachectl脚本为模板生成Apache服务控制脚本:

grep -v "#" /usr/local/apache-2.2.6/bin/apachectl > /etc/init.d/apache 用vi编辑Apache服务控制脚本/etc/init.d/apache:

vi /etc/init.d/apache

在文件最前面插入下面的行,使其支持chkconfig命令:

#!/bin/sh

# chkconfig: 2345 85 15

# description: Apache is a World Wide Web server.

保存后退出vi编辑器,执行下面的命令增加Apache服务控制脚本执行权限:

chmod +x /etc/init.d/apache

执行下面的命令将Apache服务加入到系统服务:

chkconfig --add apache

执行下面的命令检查Apache服务是否已经生效:

chkconfig --list apache

命令输出类似下面的结果:

apache 0:off 1:off 2:on 3:on 4:on 5:on 6:off

表明apache服务已经生效,在2、3、4、5运行级别随系统启动而自动启动,以后可以使用service 命令控制Apache的启动和停止。

启动Apache服务:

service apache start

停止Apache服务:

service apache stop

执行下面的命令关闭开机自启动:

chkconfig apache off

执行下面的命令改变开机自启动的运行级别为3、5:

chkconfig --level 35 apache on

3.2 二进制包方式安装

3.2.1 从安装媒体安装

Apache二进制包已经包含在CentOS 5的安装媒体中,可以直接从安装媒体中安装下面三个rpm 包:

httpd-2.2.3-6.el5.centos.1.i386.rpm

httpd-devel-2.2.3-6.el5.centos.1.i386.rpm

mod_ssl-2.2.3-6.el5.centos.1.i386.rpm

不同的版本文件名可能有所不同,请注意区分。

执行下面的命令安装:

rpm -iUvh httpd-2.2.3-6.el5.centos.1.i386.rpm

rpm -iUvh httpd-devel-2.2.3-6.el5.centos.1.i386.rpm

rpm -iUvh mod_ssl-2.2.3-6.el5.centos.1.i386.rpm

3.2.2 通过yum安装

如果你安装的机器此时可以连接到互联网,笔者建议使用yum命令来简化安装过程:yum install httpd httpd-devel mod_ssl

yum将自动从centos的镜像站点查找你指明的软件的最新二进制包,并检查软件包依赖关系,安装软件的同时自动安装其依赖的软件包。

3.2.3 选择多路处理模块(MPM)

二进制方式安装时,unix系统下默认使用prefork多路处理模块,如果想使用worker多路处理模块,需要在/etc/sysconfig/httpd文件中增加下面的行:

HTTPD=/usr/sbin/httpd.worker

可以执行下面的命令来完成:

echo "HTTPD=/usr/sbin/httpd.worker" >> /etc/sysconfig/httpd

3.2.4 设置开机自启动服务控制脚本

二进制方式安装不需要手动建立开机自启动服务控制脚本,安装过程将在/etc/init.d目录下自动建立名为httpd的服务控制脚本,并将其添加到系统服务,可以使用service命令控制Apache的启动与停止。

启动Apache服务:

service httpd start

停止Apache服务:

service httpd stop

执行下面的命令关闭开机自启动:

chkconfig httpd off

执行下面的命令改变开机自启动的运行级别为3、5:

chkconfig --level 35 httpd on

至此,Apache安装过程结束,接下来进入Apache配置过程。

4. Apache的配置

4.1 目录结构

4.1.1 源码包方式安装目录结构

源码包方式安装时通常是在3.1.3节中configure命令的--prefix选项指定的目录中建立如下的目录结构,特殊指定的目录除外:

./icons #Apache图标文件目录

./modules #动态加载模块目录

./lib #库文件目录

./logs #日志文件目录

./build #

./conf #主配置文件目录

./conf/extra #扩展及模块配置文件目录

./error #默认错误应答文件目录

./manual #Apache文档目录

./include #包含头文件目录

./htdocs #默认WEB文档根目录

./cgi-bin #默认cgi文件目录

./bin #Apache二进制程序及服务程序目录

./man #man帮助文件目录

4.1.2 二进制包方式安装目录结构

二进制包方式安装时使用系统软件默认目录结构:

/etc/httpd/conf #主配置文件目录

/etc/httpd/conf.d #扩展及模块配置文件目录

/etc/httpd/logs链接到/var/log/httpd #日志文件目录

/etc/httpd/modules链接到/usr/lib/httpd/modules #动态加载模块目录

/etc/httpd/run链接到/var/run #PID及锁文件目录

/etc/logrotate.d/httpd #日专轮循设置文件

/etc/rc.d/init.d/httpd #服务控制脚本

/etc/sysconfig/httpd #服务控制脚本附加参数设置文件

/usr/bin #Apache二进制软件目录

/usr/sbin/ #Apache服务程序目录

/usr/share/doc/httpd-* #Apache文档目录

/usr/share/man/ #Apache Man文档目录

/var/www/cgi-bin #默认CGI文件目录

/var/www/error #默认错误应答文件目录

/var/www/html #默认WEB文档根目录

/var/www/icons #Apache图标文件目录

4.2 配置文件

Apache的配置文件是包含若干指令的纯文本文件。

4.2.1 主配置文件

主配置文件通常叫httpd.conf ,其位置是编译时确定的,通常位于4.1目录结构小节中所示的主配置文件目录,但可以用命令行参数-f 来改变。另外,还可以用Include指令和通配符附加许多其他配置文件。任何配置文件都可以使用任何指令。只有在启动或重新启动Apache后,主配置文件的更改才会生效。

4.2.2 配置文件的语法

配置文件的每一行包含一个指令,在行尾使用反斜杠"\"可以表示续行,但是反斜杠与下一行之间不能有任何其他字符(包括空白字符)。

配置文件中的指令是不区分大小写的,但是指令的参数(argument)通常是大小写敏感的。以"#"开头的行被视为注解并被忽略。注解不能出现在指令的后边。空白行和指令前的空白字符将被忽略,因此可以采用缩进以保持配置层次的清晰。

4.2.3 模块

Apache是模块化的服务器,这意味着核心中只包含实现最基本功能的模块。扩展功能可以作为模块动态加载。默认情况下,只有base组的模块被编译进了服务器。如果服务器在编译时包含了DSO模块,那么各模块可以独立编译,并可随时用LoadModule指令加载;否则,要增加或删除模块必须重新编译整个Apache。用于特定模块的指令可以用指令包含起来,使之有条件地生效。

用命令行参数-l 可以查看已经编译到服务器中的模块,命令格式如下:

/apachectl -l

其中:

为4.1目录结构小节中所示的服务程序目录。

下面是命令行的例子:

/usr/local/apache-2.2.6/bin/apachectl -l

/usr/sbin/apachectl -l

4.2.4 指令的作用域

主配置文件中的指令对整个服务器都有效。

如果你只想改变某一部分的配置,你可以把指令嵌入到 配置段中,这样就可以限制指令的作用域为文件系统中的某些位置或特定的URL。这些配置段还可以进行嵌套,以进行更精细的配置。

Apache还具备同时支持多个站点的能力,称为虚拟主机。配置段中的指令仅对该段中的特定站点(虚拟主机)有效。

虽然大多数指令可以包含在任意的配置段中,但是某些指令仅在某些特定的范围内才有意义,请参阅Apache官方文档中指令说明的作用域项。

4.2.5 .htaccess文件

Apache可以使用分布在整个网站文件目录树结构中的特殊文件来进行分散配置,这些特殊的文件通常叫.htaccess ,但是也可以用AccessFileName指令来改变它的名字。.htaccess文件中指令的作用域是存放它的那个目录及其所有子目录。.htaccess文件的语法与主配置文件相同。由于对每次请求都会读取.htaccess文件,所以对这些文件的修改会立即生效。

要了解一个指令是否可以用在.htaccess文件中,可以查阅Apache官方文档中指令说明中该指令的作用域项。服务器管理员可以在主配置文件中使用AllowOverride指令来决定哪些指令可以

在.htaccess文件中生效。

有关.htaccess文件更详细的资料,可以查看.htaccess指南。

4.2.6 源码包方式安装与二进制包方式安装配置文件的区别

源码包方式安装最新版本的Apache时,主配置文件中只包含少量与服务自身相关的指令,通过include指令和通配符附加其他配置文件,默认不附加任何其它配置文件。附加的配置指令和模块的具体配置指令以单独的配置文件形式保存在4.1.1小节中所示的扩展及模块配置文件目录./conf/extra 中,可根据需要在主配置文件中附加。

二进制包安装Apache时,主配置文件中包含了大部分配置指令,默认通过include指令将

/etc/httpd/conf.d目录中的以.conf为扩展名的文件自动附加到主配置文件。

4.3 推荐配置

下面以源码包方式安装的Apache为例来说明笔者建议的配置,如果你正在使用二进制包方式安装的Apache,文中的所有配置指令都可以在/etc/httpd/conf/httpd.conf主配置文件中使用。

本文所使用的示例主机中Apache安装在/usr/local/apache-2.2.6目录,请使用你实际的安装目录替换。

Apache配置文件可使用你熟悉的任何文本编辑器编辑,笔者使用vi 。

4.3.1常用配置指令说明

下面介绍本文中将会用到的一些常用配置指令,全部指令及其详细用法请参见Apache2.2官方文档。

另外需要注意,当在非UNIX平台上输入文件路径的时候,要特别注意即使平台本身是使用反斜杠(\)来分隔路径的,在这里也只能使用正斜杠(/)。通常在配置文件里只用正斜杠(/)来分隔路径总是不会错的。

ServerRoot:服务器的基础目录,一般来说它将包含conf/和logs/子目录,其它配置文件的相对路径即基于此目录。默认为安装目录,不需更改。

语法:ServerRoot directory-path

如:ServerRoot "/usr/local/apache-2.2.6"

注意,此指令中的路径最后不要加/ 。

Listen:指定服务器监听的IP和端口。默认情况下Apache会在所有IP地址上监听。Listen是

Apache2.0以后版本必须设置的指令,如果在配置文件中找不到这个指令,服务器将无法启动。

语法:Listen [IP-address:]portnumber [protocol]

Listen指令指定服务器在那个端口或地址和端口的组合上监听接入请求。如果只指定一个端口,服务器将在所有地址上监听该端口。如果指定了地址和端口的组合,服务器将在指定地址的指定端口上监听。可选的protocol参数在大多数情况下并不需要,若未指定该参数,则将为443端口使用默认的https 协议,为其它端口使用http协议。

使用多个Listen指令可以指定多个不同的监听端口和/或地址端口组合。

默认为:Listen 80

如果让服务器接受80和8080端口上请求,可以这样设置:

Listen 80

Listen 8080

如果让服务器在两个确定的地址端口组合上接受请求,可以这样设置:

Listen 192.168.2.1:80

Listen 192.168.2.2:8080

如果使用IPV6地址,必须用方括号把IPV6地址括起来:

Listen [2001:db8::a00:20ff:fea7:ccea]:80

LoadModule:加载特定的DSO模块。Apache默认将已编译的DSO模块存放于4.1目录结构小节中所示的动态加载模块目录中。

语法:LoadModule module filename

如:LoadModule rewrite_module modules/mod_rewrite.so

如果filename使用相对路径,则路径是相对于ServerRoot所指示的相对路径。

Apache配置文件默认加载所有已编译的DSO模块,笔者建议只加载如下模块:authn_file、authn_default、authz_host、authz_user、authz_default、auth_basic、dir、alias、filter、speling、log_config、env、vhost_alias、setenvif、mime、negotiation、rewrite、deflate、expires、headers、cache、file-cache、disk-cache、mem-cache。

User:设置实际提供服务的子进程的用户。为了使用这个指令,服务器必须以root身份启动和初始化。如果你以非root身份启动服务器,子进程将不能够切换至非特权用户,并继续以启动服务器的原始用户身份运行。如果确实以root用户启动了服务器,那么父进程将仍然以root身份运行。

语法:User Unix-userid

Unix-userid是下列值之一:

一个用户名,通过用户名引用用户

"#"号后面跟一个用户编号(UID),通过用户编号引用用户

用于运行子进程的用户必须是一个没有特权的用户,这样才能保证子进程无权访问那些不想为外界所知的文件,同样的,该用户亦需没有执行那些不应当被外界执行的程序的权限。强烈建议专门为Apache子进程建立一个单独的用户和组。一些管理员使用nobody用户,但是这并不能总是符合要求,因为可能有其他程序也在使用这个用户。

例:User daemon

Group:设置提供服务的Apache子进程运行时的用户组。为了使用这个指令,Apache必须以root初始化启动,否则在切换用户组时会失败,并继续以初始化启动时的用户组运行。

语法:Group Unix-Group

Unix-group可以是下列之一:

用户组的名称,通过名称引用组

"#"号后跟一个组编号(GID) ,通过编号引用组。

例:Group daemon

ServerAdmin:设置在所有返回给客户端的错误信息中包含的管理员邮件地址。

语法:ServerAdmin email-address|URL

如果httpd不能将提供的参数识别为URL,它就会假定它是一个email-address ,并在超连接中用在mailto:后面。推荐使用一个Email地址,因为许多CGI脚本是这样认为的。如果你确实想使用URL,一定要保证指向一个你能够控制的服务器,否则用户将无法确保一定可以和你取得联系。

例:ServerAdminwebmaster@https://www.360docs.net/doc/8113551691.html,

ServerName:设置服务器用于辨识自己的主机名和端口号。

语法:ServerName [scheme://]fully-qualified-domain-name[:port]

可选的'scheme://'前缀仅在2.2.3以后的版本中可用,用于在代理之后或离线设备上也能正确的检测规范化的服务器URL。

当没有指定ServerName时,服务器会尝试对IP地址进行反向查询来推断主机名。如果在ServerName中没有指定端口号,服务器会使用接受请求的那个端口。

为了加强可靠性和可预测性,建议使用ServerName显式的指定一个主机名和端口号。

如果使用的是基于域名的虚拟主机,在段中的ServerName将是为了匹配这个虚拟主机,在"Host:"请求头中必须出现的主机名。

DocumentRoot:设置Web文档根目录。

语法:DocumentRoot directory-path

在没有使用类似Alias这样的指令的情况下,服务器会将请求中的URL附加到DocumentRoot 后面以构成指向文档的路径。

如果directory-path不是绝对路径,则被假定为是相对于ServerRoot的路径。

指定DocumentRoot时不应包括最后的"/"。

用于封装一组指令,使之仅对某个目录及其子目录生效。

语法: ...

Directory-path可以是一个目录的完整路径,或是包含了Unix shell匹配语法的通配符字符串。在通配符字符串中,"?"匹配任何单个的字符,"*"匹配任何字符序列。也可以使用"[]"来确定字符范围。在"~" 字符之后也可以使用正则表达式。

如果有多个(非正则表达式)配置段符合包含某文档的目录(或其父目录),那么指令将以短目录优先的规则进行应用,并包含.htaccess文件中的指令。

正则表达式将在所有普通配置段之后予以考虑。所有的正则表达式将根据它们出现在配置文件中的顺序进行应用。

指令不可被嵌套使用,也不能出现在配置段中。

:提供基于文件名的访问控制,类似于指令。

语法: ...

filename参数应当是一个文件名或是一个包含通配符的字符串,其中"?"匹配任何单个字符,"*"匹配任何字符串序列。在"~"字符之后可以使用正则表达式。

在此配置段中定义的指令将作用于其基本名称(不是完整的路径)与指定的文件名相符的对象。

段将根据它们在配置文件中出现的顺序被处理:在段和.htaccess文件被处理之后,但在段之前。能嵌入到段中以限制它们作用的文件系统范围,也可用于.htaccess文件当中,以允许用户在文件层面上控制对它们自己文件的访问。

:提供基于文件名的访问控制。与指令不同在于只能用正则表达式进行文件匹配。

语法: ...

:封装根据指定的模块是否启用而决定是否生效的指令。

语法: ...

module-file是指编译模块时的文件名,比如mod_rewrite.c。

module-identifier是指模块的标识符,比如mod_rewrite。

配置段中的指令仅当测试结果为真的时候才进行处理,否则所有其间的指令都将被忽略。

Options:控制在特定目录中将使用哪些服务器特性。

语法:Options [+|-]option [[+|-]option] ...

option可以为None,不启用任何额外特性,或者下面选项中的一个或多个:

All 除MultiViews之外的所有特性,这是默认设置。

ExecCGI 允许使用mod_cgi执行CGI脚本。

FollowSymLinks 服务器允许在此目录中使用符号连接,如果此配置位于配置段中,则会被忽略。

Includes 允许使用mod_include提供的服务器端包含。

IncludesNOEXEC 允许服务器端包含,但禁用"#exec cmd"和"#exec cgi",但仍可以从ScriptAlias目录使用"#include virtual"虚拟CGI脚本。

Indexes 如果一个映射到目录的URL被请求,而此目录中又没有DirectoryIndex(例如:index.html),那么服务器会返回由mod_autoindex生成的一个格式化后的目录列表。

MultiViews 允许使用mod_negotiation提供内容协商的"多重视图"(MultiViews)。

SymLinksIfOwnerMatch 服务器仅在符号连接与其目的目录或文件的拥有者具有相同的uid时才使用它。如果此配置出现在配置段中,则将被忽略。

一般来说,如果一个目录被多次设置了Options ,则最特殊的一个会被完全接受(其它的被忽略),而各个可选项的设定彼此并不融合。然而,如果所有作用于Options指令的可选项前都加有"+" 或"-"符号,此可选项将被合并。所有前面加有"+"号的可选项将强制覆盖当前的可选项设置,而所有前面有"-"号的可选项将强制从当前可选项设置中去除。

AllowOverride:确定允许存在于.htaccess文件中的指令类型。

语法:AllowOverride All|None|directive-type [directive-type] ...

如果此指令被设置为None ,那么.htaccess文件将被完全忽略。事实上,服务器根本不会读

取.htaccess文件。

当此指令设置为All时,所有具有".htaccess"作用域的指令都允许出现在.htaccess文件中。

directive-type可以是下列各组指令之一:

AuthConfig 允许使用与认证授权相关的指令

FileInfo 允许使用控制文档类型的指令、控制文档元数据的指令、mod_rewrite中的指令、mod_actions中的Action指令

Indexes 允许使用控制目录索引的指令

Limit 允许使用控制主机访问的指令

Options[=Option,...] 允许使用控制指定目录功能的指令(Options和XBitHack)。可以在等号后面附加一个逗号分隔的(无空格的)Options选项列表,用来控制允许Options指令使用哪些选项。

AllowOverride仅在不包含正则表达式的配置段中才是有效的。在,

, 配置段中都是无效的。

Order:控制默认的访问状态与Allow和Deny指令生效的顺序。

语法:Order Ordering

Ordering取值范围是以下几种范例之一:

Deny,Allow Deny指令在Allow指令之前被评估。默认允许所有访问。任何不匹配Deny 指令或者匹配Allow指令的客户都被允许访问。

Allow,Deny Allow指令在Deny指令之前被评估。默认拒绝所有访问。任何不匹配Allow指令或者匹配Deny指令的客户都将被禁止访问。

Mutual-failure 只有出现在Allow列表并且不出现在Deny列表中的主机才被允许访问。这种顺序与"Order Allow,Deny"具有同样效果,不赞成使用。

关键字只能用逗号分隔,它们之间不能有空格,在所有情况下每个Allow和Deny指令语句都将被评估。

Allow:控制哪些主机可以访问服务器的该区域。可以根据主机名、IP地址、IP地址范围或其他环境变量中捕获的客户端请求特性进行控制。

语法:Allow from all|host|env=env-variable [host|env=env-variable] ...

这个指令的第一个参数总是"from",随后的参数可以有三种不同形式:如果指定"Allow from all",则允许所有主机访问,按照下述Deny和Order指令的配置;若要只允许特定的主机或主机群访问服务器,host可以用下面任何一种格式来指定:一个(部分)域名、完整的IP地址、部分IP地址、网络/掩码、网络/nnn无类别域间路由规格;第三种参数格式允许对服务器的访问由环境变量的一个扩展指定,指定"Allow from env=env-variable"时,如果环境变量env-variable存在则访问被允许,使用由

mod_setenvif提供的指令,服务器用一种基于客户端请求的弹性方式提供了设置环境变量的能力。因此,这条指令可以用于允许基于像User-Agent(浏览器类型)、Referer或其他HTTP请求头字段的访问。

Deny:控制哪些主机被禁止访问服务器的该区域。可以根据主机名、IP地址、IP地址范围或其他环境变量中捕获的客户端请求特性进行控制。

语法:Deny from all|host|env=env-variable [host|env=env-variable] ...

此指令的参数设置和Allow指令完全相同。

DirectoryIndex:当客户端请求一个目录时寻找的资源列表。

语法:DirectoryIndex Local-url [Local-url] ...

Local-url(%已解码的)是一个相对于被请求目录的文档的URL(通常是那个目录中的一个文件)。可以指定多个URL,服务器将返回最先找到的那一个,比如:

DirectoryIndex index.html index.php

ErrorLog:指定当服务器遇到错误时记录错误日志的文件。

语法:ErrorLog file-path|syslog[:facility]

如果file-path不是一个以斜杠(/)开头的绝对路径,那么将被认为是一个相对于ServerRoot的相对路径;如果file-path以一个管道符号(|)开头,那么会为它指定一个命令来处理错误日志,如ErrorLog "|/usr/local/sbin/cronolog /var/log/httpd/%w/errors_log"。

如果系统支持,使用"syslog"替代文件名将通过syslogd(8)来记载日志。默认将使用系统日志机制local7 ,但您可以用"syslog:facility"语法来覆盖这个设置,其中,facility的取值为syslog(1)中记载的任何一个名字。

LogLevel:用于调整记录在错误日志中的信息的详细程度。

语法:LogLevel level

可以选择下列level,依照重要性降序排列:

emerg 紧急(系统无法使用)

alert 必须立即采取措施

crit 致命情况

error 错误情况

warn 警告情况

notice 一般重要情况

info 普通信息

debug 调试信息

当指定了某个级别时,所有级别高于它的信息也会被同时记录。比如,指定LogLevel info ,则所有notice和warn级别的信息也会被记录。建议至少使用crit级别。

当错误日志是一个单独分开的正式文件的时候,notice级别的消息总是会被记录下来,而不能被屏蔽。但是,当使用syslog来记录时就没有这个问题。

LogFormat:定义访问日志的记录格式。

语法:LogFormat format|nickname [nickname]

LogFormat指令可以使用两种定义格式中的一种。

在第一种格式中,指令只带一个参数,以定义后续的TransferLog指令定义的日志格式。另外它也可以通过下述的方法使用nickname来引用某个之前的LogFormat定义的日志格式。

第二种定义LogFormat指令的格式中,将一个直接的format和一个nickname联系起来。这样在后续的LogFormat或CustomLog指令中,就不用一再重复整个冗长的格式串。定义别名的LogFormat指令仅仅用来定义一个nickname ,而不做其它任何事情,也就是说,它只是定义了这个别名,它既没有实际应用这个别名,也不是把它设为默认的格式。因此,它不会影响后续的TransferLog

指令。另外,LogFormat不能用一个别名来定义另一个别名。nickname不能包含百分号(%)。

关于format的格式,请参见Apache2.2官方文档中的自定义日志格式小节。

CustomLog:设定日志的文件名和格式。

语法:CustomLog file|pipe format|nickname [env=[!]environment-variable]

第一个参数指定了日志记录的位置,可以使用以下两种方式来设定:

file 相对于ServerRoot的日志文件名。

pipe 管道符"|"后面紧跟着一个把日志输出当作标准输入的处理程序路径。

第二个参数指定了写入日志文件的内容。它既可以是由前面的LogFormat指令定义的nickname ,也可以是直接按Apache2.2官方文档中的自定义日志格式小节所描述的规则定义的format字符串。

第三个参数是可选的,它根据服务器上特定的环境变量是否被设置来决定是否对某一特定的请求进行日志记录。如果这个特定的环境变量被设置(或者在"env=!name"的情况下未被设置),那么这个请求将被记录。可以使用mod_setenvif和/或mod_rewrite模块来为每个请求设置环境变量。

TransferLog:指定日志文件的位置。

语法:TransferLog file|pipe

本指令除不允许直接定义日志格式或根据条件进行日志记录外,与CustomLog指令有完全相同的参数和功能。实际应用中,日志的格式是由最近的非别名定义的LogFormat指令指定。如果没有定义任何日志格式,则使用通用日志格式。

Alias:映射URL到文件系统的特定区域。

语法:Alias URL-path file-path|directory-path

Alias指令使文档可以被存储在DocumentRoot以外的本地文件系统中。以(%已解码的)url-path 路径开头的URL可以被映射到以directory-path开头的本地文件。

如果对在DocumentRoot之外的某个目录建立了一个Alias ,则可能需要通过段明确的对目标目录设定访问权限。

ScriptAlias:映射一个URL到文件系统并视之为CGI脚本目录。

语法:ScriptAlias URL-path file-path|directory-path

ScriptAlias指令的行为与Alias指令相同,但同时它又标明此目录中含有应该由cgi-script处理器处理的CGI脚本。以URL-path开头的(%已解码的)的URL会被映射到由第二个参数指定的具有完整路径名的本地文件系统中的脚本。

ScriptSock:在以线程式MPM(worker)运行的Apache中设置用来与CGI守护进程通信的套接字文件名前缀(其后附加父进程PID组成完整的文件名)。这个套接字将会用启动Apache服务器的父进程

用户权限(通常是root)打开。为了维护与CGI脚本通讯的安全性,不允许其他用户拥有写入套接字所在目录的权限是很重要的。

DefaultType:在服务器无法由其他方法确定内容类型时,发送的默认MIME内容类型。

语法:DefaultType MIME-type

默认:DefaultType text/plain

AddType:在给定的文件扩展名与特定的内容类型之间建立映射关系。

语法:AddType MIME-type extension [extension] ...

MIME-type指明了包含extension扩展名的文件的媒体类型。这个映射关系会添加在所有有效的映射关系上,并覆盖所有相同的extension扩展名映射。

extension参数是不区分大小的,并且可以带或不带前导点。

ErrorDocument:批示当遇到错误的时候服务器将给客户端什么样的应答。

语法:ErrorDocument error-code document

error-code 服务器返回的错误代码

document 可以由一个斜杠(/)开头来指示一个本地URL(相对于DocumentRoot),或是提供一个能被客户端解释的完整的URL。此外还能提供一个可以被浏览器显示的消息。比如:ErrorDocument 500https://www.360docs.net/doc/8113551691.html,/err500.html

ErrorDocument 404 /errors/bad_urls.html

ErrorDocument 403 "Sorry can't allow you access today"

EnableMMAP:指示httpd在递送中如果需要读取一个文件的内容,它是否可以使用内存映射。

语法:EnableMMAP On|Off

当处理一个需要访问文件中的数据的请求时,比如说当递送一个使用mod_include进行服务器端分析的文件时,如果操作系统支持,Apache将默认使用内存映射。

这种内存映射有时会带来性能的提高,但在某些情况下,您可能会需要禁用内存映射以避免一些操作系统的问题:

在一些多处理器的系统上,内存映射会减低一些httpd的性能;

在挂载了NFS的DocumentRoot上,若已经将一个文件进行了内存映射,则删除或截断这个文件会造成httpd因为分段故障而崩溃。

在可能遇到这些问题的服务器配置过程中,应当使用下面的命令来禁用内存映射:

EnableMMAP Off

对于挂载了NFS的文件夹,可以单独在段中指定禁用内存映射:

EnableMMAP Off

EnableSendfile:控制httpd是否可以使用操作系统内核的sendfile支持来将文件发送到客户端。

默认情况下,当处理一个请求并不需要访问文件内部的数据时(比如发送一个静态的文件内容),如果操作系统支持,Apache将使用sendfile将文件内容直接发送到客户端而并不读取文件。

这个sendfile机制避免了分开的读和写操作以及缓冲区分配,但是在一些平台或者一些文件系统上,最好禁止这个特性来避免一些问题:

一些平台可能会有编译系统检测不到的有缺陷的sendfile支持,特别是将在其他平台上使用交叉编译得到的二进制文件运行于当前对sendfile支持有缺陷的平台时;

在Linux上启用IPv6时,使用sendfile将会触发某些网卡上的TCP校验和卸载bug;

当Linux运行在Itanium处理器上的时候,sendfile可能无法处理大于2GB的文件;

对于一个通过网络挂载了NFS文件系统的DocumentRoot (比如:NFS或SMB),内核可能无法可靠的通过自己的缓冲区服务于网络文件。

如果出现以上情况,你应当禁用sendfile :

EnableSendfile Off

针对NFS或SMB,可以单独在段中指定禁用:

EnableSendfile Off

include:在服务器配置文件中包含其它配置文件。

语法:Include file-path|directory-path

Shell风格(fnmatch())的通配符可以用于按照字母顺序一次包含多个文件。另外,如果Include 指向了一个目录而不是一个文件,Apache将读入该目录及其子目录下的所有文件,并依照字母顺序将这些文件作为配置文件进行解析。但是并不推荐这么做,因为偶尔会有临时文件在这个目录中生成,从而导致httpd启动失败。

文件的路径可以是一个完整的绝对路径(以一个斜杠开头),或是相对于ServerRoot目录的相对路径。

4.3.2 配置主配置文件

用vi或其它文件编辑器编辑主配置文件httpd.conf :

vi /usr/local/apache-2.2.6/conf/httpd.conf

按下面提示进行修改:

###=========httpd.conf begin===================

##Apache主配置文件

##设置服务器的基础目录,默认为Apache安装目录

ServerRoot "/usr/local/apache-2.2.6"

##设置服务器监听的IP和端口

Listen 80

##设置管理员邮件地址

ServerAdminwebmaster@https://www.360docs.net/doc/8113551691.html,

##设置服务器用于辨识自己的主机名和端口号

https://www.360docs.net/doc/8113551691.html,:80

###设置动态加载的DSO模块

##如果需要提供基于文本文件的认证,加载此模块,否则注释掉

LoadModule authn_file_module modules/mod_authn_file.so

##如果需要提供基于DBM文件的认证,加载此模块,否则注释掉

#LoadModule authn_dbm_module modules/mod_authn_dbm.so

##如果需要提供匿名用户认证,加载此模块,否则注释掉

#LoadModule authn_anon_module modules/mod_authn_anon.so

##如果需要提供基于SQL数据库的认证,加载此模块,否则注释掉

#LoadModule authn_dbd_module modules/mod_authn_dbd.so

##如果需要在未正确配置认证模块的情况下简单拒绝一切认证信息,加载此模块,否则注释掉LoadModule authn_default_module modules/mod_authn_default.so

##此模块提供基于主机名、IP地址、请求特征的访问控制,Allow、Deny指令需要,推荐加载。LoadModule authz_host_module modules/mod_authz_host.so

##如果需要使用纯文本文件为组提供授权支持,加载此模块,否则注释掉

#LoadModule authz_groupfile_module modules/mod_authz_groupfile.so

##如果需要提供基于每个用户的授权支持,加载此模块,否则注释掉

LoadModule authz_user_module modules/mod_authz_user.so

##如果需要使用DBM文件为组提供授权支持,加载此模块,否则注释掉

#LoadModule authz_dbm_module modules/mod_authz_dbm.so

##如果需要基于文件的所有者进行授权,加载此模块,否则注释掉

#LoadModule authz_owner_module modules/mod_authz_owner.so

##如果需要在未正确配置授权支持模块的情况下简单拒绝一切授权请求,加载此模块,否则注释掉LoadModule authz_default_module modules/mod_authz_default.so

##如果需要提供基本的HTTP认证,加载此模块,否则注释掉,此模块至少需要同时加载一个认证支持模块和一个授权支持模块

LoadModule auth_basic_module modules/mod_auth_basic.so

##如果需要提供HTTP MD5摘要认证,加载此模块,否则注释掉,此模块至少需要同时加载一个认证支持模块和一个授权支持模块

#LoadModule auth_digest_module modules/mod_auth_digest.so

##此模块提供文件描述符缓存支持,从而提高Apache性能,推荐加载,但请小心使用

LoadModule file_cache_module modules/mod_file_cache.so

##此模块提供基于URI键的内容动态缓存(内存或磁盘),从而提高Apache性能,必须与

mod_disk_cache/mod_mem_cache同时使用,推荐加载

LoadModule cache_module modules/mod_cache.so

##此模块为mod_cache提供基于磁盘的缓存管理,推荐加载

LoadModule disk_cache_module modules/mod_disk_cache.so

##此模块为mod_cache提供基于内存的缓存管理,推荐加载

LoadModule mem_cache_module modules/mod_mem_cache.so

##如果需要管理SQL数据库连接,为需要数据库功能的模块提供支持,加载此模块,否则注释掉(推荐) #LoadModule dbd_module modules/mod_dbd.so

##此模块将所有I/O操作转储到错误日志中,会导致在日志中写入及其海量的数据,只建议在发现问题并进行调试的时候使用

#LoadModule dumpio_module modules/mod_dumpio.so

##如果需要使用外部程序作为过滤器,加载此模块(不推荐),否则注释掉

#LoadModule ext_filter_module modules/mod_ext_filter.so

##如果需要实现服务端包含文档(SSI)处理,加载此模块(不推荐),否则注释掉

#LoadModule include_module modules/mod_include.so

##如果需要根据上下文实际情况对输出过滤器进行动态配置,加载此模块,否则注释掉

LoadModule filter_module modules/mod_filter.so

##如果需要服务器在将输出内容发送到客户端以前进行压缩以节约带宽,加载此模块(推荐),否则注释掉LoadModule deflate_module modules/mod_deflate.so

##如果需要记录日志和定制日志文件格式,加载此模块(推荐),否则注释掉

LoadModule log_config_module modules/mod_log_config.so

##如果需要对每个请求的输入/输出字节数以及HTTP头进行日志记录,加载此模块,否则注释掉

#LoadModule logio_module modules/mod_logio.so

##如果允许Apache修改或清除传送到CGI脚本和SSI页面的环境变量,加载此模块,否则注释掉LoadModule env_module modules/mod_env.so

##如果允许通过配置文件控制HTTP的"Expires:"和"Cache-Control:"头内容,加载此模块(推荐),否则

注释掉

LoadModule expires_module modules/mod_expires.so

##如果允许通过配置文件控制任意的HTTP请求和应答头信息,加载此模块,否则注释掉

LoadModule headers_module modules/mod_headers.so

##如果需要实现RFC1413规定的ident查找,加载此模块(不推荐),否则注释掉

#LoadModule ident_module modules/mod_ident.so

##如果需要根据客户端请求头字段设置环境变量,加载此模块,否则注释掉

LoadModule setenvif_module modules/mod_setenvif.so

##此模块是mod_proxy的扩展,提供Apache JServ Protocol支持,只在必要时加载

#LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

##此模块是mod_proxy的扩展,提供负载均衡支持,只在必要时加载

#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so

##如果需要根据文件扩展名决定应答的行为(处理器/过滤器)和内容(MIME类型/语言/字符集/编码),加载此模块,否则注释掉

LoadModule mime_module modules/mod_mime.so

##如果允许Apache提供DAV协议支持,加载此模块,否则注释掉

#LoadModule dav_module modules/mod_dav.so

##此模块生成描述服务器状态的Web页面,只建议在追踪服务器性能和问题时加载

#LoadModule status_module modules/mod_status.so

##如果需要自动对目录中的内容生成列表(类似于"ls"或"dir"命令),加载此模块(会带来安全问题,不推荐),否则注释掉

#LoadModule autoindex_module modules/mod_autoindex.so

##如果需要服务器发送自己包含HTTP头内容的文件,加载此模块,否则注释掉

#LoadModule asis_module modules/mod_asis.so

##如果需要生成Apache配置情况的Web页面,加载此模块(会带来安全问题,不推荐),否则注释掉

#LoadModule info_module modules/mod_info.so

##如果需要在非线程型MPM(prefork)上提供对CGI脚本执行的支持,加载此模块,否则注释掉

#LoadModule cgi_module modules/mod_cgi.so

##此模块在线程型MPM(worker)上用一个外部CGI守护进程执行CGI脚本,如果正在多线程模式下使用CGI程序,推荐替换mod_cgi加载,否则注释掉

#LoadModule cgid_module modules/mod_cgid.so

##此模块为mod_dav访问服务器上的文件系统提供支持,如果加载mod_dav,则也应加载此模块,否则注释掉

#LoadModule dav_fs_module modules/mod_dav_fs.so

##如果需要提供大批量虚拟主机的动态配置支持,加载此模块,否则注释掉

#LoadModule vhost_alias_module modules/mod_vhost_alias.so

##如果需要提供内容协商支持(从几个有效文档中选择一个最匹配客户端要求的文档),加载此模块(推荐),否则注释掉

LoadModule negotiation_module modules/mod_negotiation.so

##如果需要指定目录索引文件以及为目录提供"尾斜杠"重定向,加载此模块(推荐),否则注释掉LoadModule dir_module modules/mod_dir.so

##如果需要处理服务器端图像映射,加载此模块,否则注释掉

#LoadModule imagemap_module modules/mod_imagemap.so

##如果需要针对特定的媒体类型或请求方法执行CGI脚本,加载此模块,否则注释掉

#LoadModule actions_module modules/mod_actions.so

##如果希望服务器自动纠正URL中的拼写错误,加载此模块(推荐),否则注释掉

LoadModule speling_module modules/mod_speling.so

##如果允许在URL中通过"/~username"形式从用户自己的主目录中提供页面,加载此模块,否则注释掉#LoadModule userdir_module modules/mod_userdir.so

##此模块提供从文件系统的不同部分到文档树的映射和URL重定向,推荐加载

LoadModule alias_module modules/mod_alias.so

##如果需要基于一定规则实时重写URL请求,加载此模块(推荐),否则注释掉

LoadModule rewrite_module modules/mod_rewrite.so

##设置子进程的用户和组

User daemon

Group daemon

##设置默认WEB文档根目录

DocumentRoot "/usr/local/apache-2.2.6/htdocs"

##设置WEB文档根目录的默认属性

Options FollowSymLinks

AllowOverride None

Order deny,allow

Deny from all

##设置DocumentRoot指定目录的属性

Options FollowSymLinks

AllowOverride None

Order allow,deny

Allow from all

##设置默认目录资源列表文件

DirectoryIndex index.html

##拒绝对.ht开头文件的访问,以保护.htaccess文件

Order allow,deny

Deny from all

Satisfy All

##指定错误日志文件

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 "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\"

\"%{User-Agent}i\" %I %O" combinedio

##指定访问日志及使用的格式

CustomLog logs/access_log combined

##设定默认CGI脚本目录及别名

ScriptAlias /cgi-bin/ "/usr/local/apache-2.2.6/cgi-bin/"

##在以线程式MPM(worker)运行的Apache中设置用来与CGI守护进程通信的套接字文件名前缀

Scriptsock logs/cgisock

##设定默认CGI脚本目录的属性

AllowOverride None

Options None

Order allow,deny

Allow from all

##设定默认MIME内容类型

DefaultType text/plain

##指定MIME类型映射文件

TypesConfig conf/mime.types

##增加.Z .tgz的类型映射

AddType application/x-compress .Z

AddType application/x-gzip .gz .tgz

##启用内存映射

EnableMMAP on

##使用操作系统内核的sendfile支持来将文件发送到客户端

EnableSendfile on

##指定多路处理模块(MPM)配置文件并将其附加到主配置文件

Include conf/extra/httpd-mpm.conf

##指定多语言错误应答配置文件并将其附加到主配置文件

Include conf/extra/httpd-multilang-errordoc.conf

##指定目录列表配置文件并将其附加到主配置文件

#Include conf/extra/httpd-autoindex.conf

##指定语言配置文件并将其附加到主配置文件

Include conf/extra/httpd-languages.conf

##指定用户主目录配置文件并将其附加到主配置文件

#Include conf/extra/httpd-userdir.conf

##指定用于服务器信息和状态显示的配置文件并将其附加到主配置文件

#Include conf/extra/httpd-info.conf

##指定提供Apache文档访问的配置文件并将其附加到配置文件

#Include conf/extra/httpd-manual.conf

##指定DAV配置文件并将其附加到主配置文件

#Include conf/extra/httpd-dav.conf

##指定与Apache服务自身相关的配置文件并将其附加到主配置文件

Include conf/extra/httpd-default.conf

##指定mod_deflate压缩模块配置文件并将其附加到主配置文件

Include conf/extra/httpd-deflate.conf

##指定mod_expires模块配置文件并将其附加到主配置文件

Include conf/extra/httpd-expires.conf

##指定虚拟主机配置文件并将其附加到主配置文件

#Include conf/extra/httpd-vhosts.conf

##指定SSL配置文件并将其附加到主配置文件

Include conf/extra/httpd-ssl.conf

##SSL默认配置

SSLRandomSeed startup builtin

SSLRandomSeed connect builtin

###==========httpd.conf end===================

4.3.3 配置多路处理模块(MPM)

编辑多路处理模块配置文件:

vi /usr/local/apache-2.2.6/conf/extra/httpd-mpm.conf

如果使用prefork多路处理模块,按下面的提示修改:

###=============httpd-mpm.conf prefork begin=================== ##设置prefork多路处理模块

StartServers 5

MinSpareServers 5

MaxSpareServers 10

ServerLimit4000

MaxClients 4000

MaxRequestsPerChild 0

###=============httpd-mpm.conf prefork end=================== 指令说明:

StartServers:设置服务器启动时建立的子进程数量。因为子进程数量动态的取决于负载的轻重,所有一般没有必要调整这个参数。

MinSpareServers:设置空闲子进程的最小数量。所谓空闲子进程是指没有正在处理请求的子进程。如果当前空闲子进程数少于MinSpareServers ,那么Apache将以最大每秒一个的速度产生新的子进程。只有在非常繁忙机器上才需要调整这个参数。将此参数设的太大通常是一个坏主意。

MaxSpareServers:设置空闲子进程的最大数量。如果当前有超过MaxSpareServers数量的空闲子进程,那么父进程将杀死多余的子进程。只有在非常繁忙机器上才需要调整这个参数。将此参数设的太大通常是一个坏主意。如果你将该指令的值设置为比MinSpareServers 小,Apache将会自动将其修改成"MinSpareServers+1"。

ServerLimit:服务器允许配置的进程数上限。只有在你需要将MaxClients设置成高于默认值256的时候才需要使用。要将此指令的值保持和MaxClients一样。修改此指令的值必须完全停止服务后再启动才能生效,以restart方式重启动将不会生效。

MaxClients:用于伺服客户端请求的最大请求数量(最大子进程数),任何超过MaxClients限制的请求都将进入等候队列。默认值是256,如果要提高这个值必须同时提高ServerLimit的值。笔者建议将初始值设为(以Mb为单位的最大物理内存/2),然后根据负载情况进行动态调整。比如一台4G内存的机器,那么初始值就是4000/2=2000。

MaxRequestsPerChild:设置每个子进程在其生存期内允许伺服的最大请求数量。到达MaxRequestsPerChild的限制后,子进程将会结束。如果MaxRequestsPerChild为"0",子进程将永远不会结束。将MaxRequestsPerChild设置成非零值有两个好处:可以防止(偶然的)内存泄漏无限进行而耗尽内存;

给进程一个有限寿命,从而有助于当服务器负载减轻的时候减少活动进程的数量。

如果设置为非零值,笔者建议设为10000-30000之间的一个值。

公式:

MaxClients<=ServerLimit

如果使用worker多路处理模块,按下面的提示修改:

###=============httpd-mpm.conf worker begin===================

##设置worker多路处理模块

StartServers 5

ServerLimit 20

ThreadLimit 200

MaxClients 4000

MinSpareThreads 25

MaxSpareThreads 250

ThreadsPerChild 200

MaxRequestsPerChild 0

###=============httpd-mpm.conf worker end=================== 指令说明:

StartServers:设置服务器启动时建立的子进程数量。因为子进程数量动态的取决于负载的轻重,所有一般没有必要调整这个参数。

ServerLimit:服务器允许配置的进程数上限。只有在你需要将MaxClients和ThreadsPerChild 设置成需要超过默认值16个子进程的时候才需要使用这个指令。不要将该指令的值设置的比MaxClients

Linux内核修改与编译图文教程

Linux 内核修改与编译图文教程 1

1、实验目的 针对Ubuntu10.04中,通过下载新的内核版本,并且修改新版本内核中的系统调用看,然后,在其系统中编译,加载新内核。 2、任务概述 2.1 下载新内核 https://www.360docs.net/doc/8113551691.html,/ 2.2 修改新内核系统调用 添加新的系统调用函数,用来判断输入数据的奇偶性。 2.3 进行新内核编译 通过修改新版内核后,进行加载编译。最后通过编写测试程序进行测试 3、实验步骤 3.1 准备工作 查看系统先前内核版本: (终端下)使用命令:uname -r 2

3.2 下载最新内核 我这里使用的内核版本是 3.3 解压新版内核 将新版内核复制到“/usr/src”目录下 在终端下用命令:cd /usr/src进入到该文件目录 解压内核:linux-2.6.36.tar.bz2,在终端进入cd /usr/src目录输入一下命令: bzip2 -d linux-2.6.36.tar.bz2 tar -xvf linux-2.6.36.tar 文件将解压到/usr/src/linux目录中 3

使用命令: ln -s linux-2.6.36 linux 在终端下输入一下命令: sudo apt-get install build-essential kernel-package libncurses5-dev fakeroot sudo aptitude install libqt3-headers libqt3-mt-dev libqt3-compat-headers libqt3-mt 4

Linux操作系统网络配置命令

vi /etc/sysconfig/network-scripts/ifcfg-eth0 命令配置IP vi进入后,按i变成编辑模式,屏幕下方有个INSERT字样,这时跟windows 的记事本一样了,改吧。内容见下 改完后按ESC键,再输入冒号x——:x保存退出。 service network restart 你的IP就出来了。 DEVICE=eth0 BOOTPROTO=none IPADDR=192.168.0.1 GATEWAY=192.168.0.254 ONBOOT=yes TYPE=Ethernet 1、ifconfig 可以使用ifconfig命令来配置并查看网络接口的配置情况。 例如: (1)配置eth0的IP地址,同时激活该设备。 #ifconfig eth0 192.168.1.10 netmask 255.255.255.0 up (2)配置eth0别名设备eth0:1的IP地址,并添加路由。 #ifconfig eth0 192.168.1.3 #route add –host 192.168.1.3 dev eth0:1 (3)激活设备。 #ifconfig eth0 up (4)禁用设备。 #ifconfig eth0 down (5)查看指定的网络接口的配置。 #ifconfig eth0 (6)查看所有的网络接口配置。

#ifconfig 2、route 可以使用route命令来配置并查看内核路由表的配置情况。 例如: (1)添加到主机的路由。 #route add –host 192.168.1.2 dev eth0:0 #route add –host 10.20.30.148 gw 10.20.30.40 (2)添加到网络的路由。 #route add –net 10.20.30.40 netmask 255.255.255.248 eth0 #route add –net 10.20.30.48 netmask 255.255.255.248 gw 10.20.30.41 #route add –net 192.168.1.0/24 eth1 (3)添加默认网关。 #route add default gw 192.168.1.1 (4)查看内核路由表的配置。 #route (5)删除路由。 #route del –host 192.168.1.2 dev eth0:0 #route del –host 10.20.30.148 gw 10.20.30.40 #route del –net 10.20.30.40 netmask 255.255.255.248 eth0 #route del –net 10.20.30.48 netmask 255.255.255.248 gw 10.20.30.41 #route del –net 192.168.1.0/24 eth1

linux内核的网络配置

文章来源 https://www.360docs.net/doc/8113551691.html,/p/2088592067 第9节, Networking support 关于网络支持 上图 讲解; RF switch subsystem support 这个一般是要的,因为有些无线和蓝牙放在一张卡上 选m,wireless(无线)里面的一些选项随之会自动选m,上图 注意: cfg80211 wireless extensions compatibility 这个兼容选项要选择,3.7默认是没有选择

如果没有选择,iwconfig会报告没有扩展 Bluetooth subsystem support 蓝牙,可以自己选择,如果有m就行 还有子选项自己看下 如果还有红外线,无线电,对应选择,这个设备应该是很少networking option最上面的,全局网络选项,上图

Packet socket和Unix domain sockets 备必,而且不能成模块,不然udev会报一段信息给你 Transformation user configuration interface 选m,其实也很少用,像ipsec,下面的ipsec也可以选成模块 TCP/IP networking 要的,要的,子选项大部分不用,你也可以选上 IP: multicasting 多播 IP: advanced router 高级路由 你需要选上 IP: TCP syncookie support ~~sync flooding,同时还必须。。。个人没什么意义Large Receive Offload提高网络的东西,这个Y,如果你觉得现在不用,先m TCP: advanced congestion control这个你也可以Y The IPv6 protocol 很多要用到,虽然在兲现在没用,像systemd就要了 Security Marking和Network packet filtering framework (Netfilter) 个人没什么意义,你可以试下

理解linux的配置文件

本文说明了 Linux 系统的配置文件,在多用户、多任务环境中,配置文件控制用户权限、系统应用程序、守护进程、服务和其它管理任务。这些任务包括管理用户帐号、分配磁盘配额、管理电子邮件和新闻组,以及配置内核参数。本文还根据配置文件的使用和其所影响的服务的情况对目前 Red Hat Linux 系统中的配置文件进行了分类。 介绍 每个 Linux 程序都是一个可执行文件,它含有操作码列表,CPU 将执行这些操作码来完成特定的操作。例如,ls 命令是由 /bin/ls 文件提供的,该文件含有机器指令的列表,在屏幕上显示当前目录中文件的列表时需要使用这些机器指令。几乎每个程序的行为都可以通过修改其配置文件来按照您的偏好或需要去定制。 Linux 中有没有一个标准的配置文件格式? 一句话,没有。不熟悉 Linux 的用户(一定)会感到沮丧,因为每个配置文件看起来都象是一个要迎接的新挑战。在 Linux 中,每个程序员都可以自由选择他或她喜欢的配置文件格式。可以选择的格式很多,从 /etc/shells 文件(它包含被一个换行符分开的 shell 的列表),到 Apache 的复杂的 /etc/httpd.conf 文件。 什么是系统配置文件? 内核本身也可以看成是一个“程序”。为什么内核需要配置文件?内核需要了解系统中用户和组的列表,进而管理文件权限(即根据权限判定特定用户(UNIX_USERS)是否可以打开某个文件)。注意,这些文件不是明确地由程序读取的,而是由系统库所提供的一个函数读取,并被内核使用。例如,程序需要某个用户的(加密过的)密码时不应该打开 /etc/passwd 文件。相反,程序应该调用系统库的 getpw() 函数。这种函数也被称为系统调用。打开 /etc/passwd 文件和之后查找那个被请求的用户的密码都是由内核(通过系统库)决定的。除非另行指定,Red Hat Linux 系统中大多数配置文件都在 /etc 目录中。配置文件可以大致分为下面几类:访问文件 /etc/host.conf 告诉网络域名服务器如何查找主机名。(通常是 /etc/hosts,然后就是名称服务器;可通过netconf 对其进行更改) /etc/hosts 包含(本地网络中)已知主机的一个列表。如果系统的 IP 不是动态生成,就可以使用它。对于简单的主机名解析(点分表示法),在请求 DNS 或 NIS 网络名称服务器之前,/etc/hosts.conf 通常会告诉解析程序先查看这里。 /etc/hosts.allow 请参阅 hosts_access 的联机帮助页。至少由 tcpd 读取。 /etc/hosts.deny 请参阅 hosts_access 的联机帮助页。至少由 tcpd 读取。 引导和登录/注销 /etc/issue & /etc/https://www.360docs.net/doc/8113551691.html, 这些文件由 mingetty(和类似的程序)读取,用来向从终端(issue)或通过telnet 会话(https://www.360docs.net/doc/8113551691.html,)连接的用户显示一个“welcome”字符串。它们包括几行声明 Red Hat 版本号、名称和内核 ID 的信息。它们由 rc.local 使用。 /etc/redhat-release 包括一行声明 Red Hat 版本号和名称的信息。由 rc.local 使用。 /etc/rc.d/rc 通常在所有运行级别运行,级别作为参数传送。例如,要以图形(Graphics)模式(X-Server)引导机器,请在命令行运行下面的命令: init 5 。运行级别 5 表示以图形模式引导系统。 /etc/rc.d/rc.local 非正式的。可以从 rc、rc.sysinit 或 /etc/inittab 调用。 /etc/rc.d/rc.sysinit 通常是所有运行级别的第一个脚本。 /etc/rc.d/rc/rcX.d 从 rc 运行的脚本( X 表示 1 到 5 之间的任意数字)。这些目录是特定“运行级别”的目录。当系统启动时,它会识别要启动的运行级别,然后调用该运行级别的特定目录中存在的所有启动脚本。例如,

如何安装Linux内核源代码

如何获取Linux内核源代码 下载Linux内核当然要去官方网站了,网站提供了两种文件下载,一种是完整的Linux 内核,另一种是内核增量补丁,它们都是tar归档压缩包。除非你有特别的原因需要使用旧版本的Linux内核,否则你应该总是升级到最新版本。 使用Git 由Linus领头的内核开发队伍从几年前就开始使用Git版本控制系统管理Linux内核了(参考阅读:什么是Git?),而Git项目本身也是由Linus创建的,它和传统的CVS不一样,Git是分布式的,因此它的用法和工作流程很多开发人员可能会感到很陌生,但我强烈建议使用Git下载和管理Linux内核源代码。 你可以使用下面的Git命令获取Linus内核代码树的最新“推送”版本: $ git clone git://https://www.360docs.net/doc/8113551691.html,/pub/scm/linux/kernel/git/torvalds/linux-2.6.git 然后使用下面的命令将你的代码树与Linus的代码树最新状态同步: $ git pull 安装内核源代码 内核包有GNU zip(gzip)和bzip2格式。Bzip2是默认和首选格式,因为它的压缩比通常比gzip更好,bzip2格式的Linux内核包一般采用linux-x.y.z.tar.bz2形式的文件名,这里的x.y.z是内核源代码的具体版本号,下载到源代码包后,解压和抽取就很简单了,如果你下载的是bzip2包,运行: $ tar xvjf linux-x.y.z.tar.bz2 如果你下载的是gzip包,则运行: $ tar xvzf linux-x.y.z.tar.gz 无论执行上面哪一个命令,最后都会将源代码解压和抽取到linux-x.y.z目录下,如果你使用Git下载和管理内核源代码,你不需要下载tar包,只需要运行git clone命令,它就会自动下载和解压。 内核源代码通常都会安装到/usr/src/linux下,但在开发的时候最好不要使用这个源代码树,因为针对你的C库编译的内核版本通常也链接到这里的。 应用补丁

Linux设置内核参数的方法

Linux设置内核参数的方法 1内核参数的查看方法 使用“sysctl -a”命令可以查看所有正在使用的内核参数。内核参数比较多(一般多达500项),按照前缀主要分为以下几大类:net.ipv4、net.ipv6、net.core、vm、fs、dev.parport、dev.cdrom 、dev.raid、kernel等等。相同的linux,安装的组件和使用的方式不一样,正在使用的内核参数是不一样的。 所有的内核参数的说明文档是放到/usr/src/linux/Documentation/sysctl中的,如果想知道对内核参数的说明,可以到该目录下查看相应的说明文档。 2内核参数的的设置方法 由于Linux的内核参数信息都存在内存中,因此可以通过命令直接修改,并且修改后直接生效。也可以通过文件的方式进行设置。下面就介绍这两种修改方法。 2.1命令设置的方式 可以用两种方法实现。 1、使用“sysctl -w 参数名=值”的方式 假设我们把net.ipv4.ip_forward的值修改为1,使用命令“sysctl -w net.ipv4.ip_forward=1”。 2、修改内核参数对应的proc文件 内核参数位于/proc/sys/之下,参数名称是以文件所在的路径,并将“/”以“.”来取代。举例来说,/proc/sys/net/ip_forward的参数名称为net.ipv4.ip_forward。 同样把net.ipv4.ip_forward的值修改为1,使用命令“echo “1”> /proc/sys/net/ipv4/ip_forward”。 注意,这里proc文件跟普通的文件不一样。一般一个文件用echo写入内容之后,会变成一个文本文件,但echo修改proc文件之后还是个空文件。 2.2文件设置的方式 更改的内核参数默认保存在/etc/sysctl.conf文件中。修改的时候可以直接用vi编辑sysctl.conf文件,增加要修改的内核参数内容,修改的格式为:参数名=值。例如,把net.ipv4.ip_forward的值修改为1,在sysctl.conf中增加下面这行内容:net.ipv4.ip_forward=1 文件修改好后,进行保存。然后使用“sysctl -p 配置文件名”来使配置生效,如果配置文件是默认的,可以不用输配置文件名,即使用“sysctl -p”。 通过文件设置的方式修改的内核参数是在系统重启后将失效(我之前认为修改后的内核参数放在文件中,系统启动的时候会读这个文件,重启后设置应该不会失效。但经过验证,一般会失效,但如果把将默认的boot.sysctl服务打开,所以系统启动时就会执行这个文件的设置)。把我们修改参数的命令写入启动执行脚本文件里/etc/rc.local,这样系统重启后配置就不会失效。 文件方式的好处是内核参数设置的值可以用文件保留下来,调用“sysctl -p”可以使文

Linux 主配置文件httpd.conf

Linux 主配置文件httpd.conf httpd.conf是最核心的配置文件,位于/etc/httpd/目录下。像大多数的服务一样,几乎绝大部分的设置都需要通过修改该配置文件来完成。Apache的主配置文件的内容有900多行,不过不用担心,因为绝大部分的内容是注释信息,而且注释内容相当丰富,用户完全可以通过注释来了解Apache的功能、语法以及使用。 对Apache服务器的配置,主要方式就是对httpd.conf配置文件的修改。该文件是Apache服务器主要配置文件,包含各种影响服务器运行的配置选项,只有对这些配置信息进行理解,才能真正的掌握Apache服务器的配置。 用户可以在终端中,输入vi /etc/httpd/conf/httpd.conf命令,并按,打开该配置文件,如图38所示。 图38 主配置文件注释内容 该主配置文件的注释内容,告诉用户一些基本信息,用户可以通过https://www.360docs.net/doc/8113551691.html,/docs/2.2/网站来查看该配置文件的更多细节。该配置文件主要有3个基本的配置项:第一个是Global Environment(全局环境配置),第二个是Main server configuration(主服务配置),第三个是Virtual Hosts(虚拟主机配置)。 每部分都有相应的配置选项,该文件所有配置选项的语法为“配置选项名称参数值”的形式,配置选项可以放在文件中的任何地方,但为了增强文件的可读性,最好将配置语句放在相应的部分。 httpd.conf中每行包含一条语句,行末使用反斜杠“\”可以换行,但是反斜杠与下一行中间不能有任何其他字符(包括空白)。httpd.conf的配置语句除了选项的参数值以外,所有选项指令均不区分大小写,可以在每一行前用“#”号,表示注释。 Global Environment(全局环境配置)该配置段中的各配置选项用于控制Apache服务器作为一个服务器作为一个整体来运行。

linux所有配置文件详解

/etc/resolv.conf 文件功能:DNS客户机配置文件,设置DNS服务器的IP地址及DNS域名 /etc/resolv.conf的一个示例: domain https://www.360docs.net/doc/8113551691.html, search https://www.360docs.net/doc/8113551691.html, https://www.360docs.net/doc/8113551691.html, nameserver 202.96.128.86 nameserver 202.96.128.166 参数说明: nameserver表明DNS服务器的IP地址。可以有很多行的nameserver,每一个带一个IP地址。在查询时就按nameserver在本文件中的顺序进行,且只有当第一个nameserver没有反应时才查询下面的nameserver。 domain 声明主机的域名。很多程序用到它,如邮件系统;当为没有域名的主机进行DNS查询时,也要用到。如果没有域名,主机名将被使用,删除所有在第一个点( .)前面的内容。 search它的多个参数指明域名查询顺序。当要查询没有域名的主机,主机将在由search声明的域中分别查找。domain和search不能共存;如果同时存在,后面出现的将会被使用。 Sortlist 允许将得到域名结果进行特定的排序。它的参数为网络/掩码对,允许任意的排列顺序。 最主要是nameserver关键字,如果没指定nameserver就找不到DNS服务器,其它关键字是可选的。 host.conf 功能:解析器查询顺序配置文件 /etc/host.conf”示例: order bind,hosts,nis multi on nospoof on 参数说明: 1)order 指定主机名查询顺序, 分别代表DNS、/etc/hosts 和NIS 2)multi 指定是否"/etc/hosts"文件中指定的主机可以有多个地址,值为on 表示允许,拥有多个IP 地址的主机一般称为具有多个网络界面。 3)nospoof 指是否允许对该服务器进行IP 地址欺骗值,为on 表示不允许,IP 欺骗是一种攻击系统安全的手段,通过把IP 地址伪装成别的计算机,来取得其它计算机的信任。 4)"alert" 当nospoof 指令为on 时,alert 控制欺骗的企图是否用syslog 工具进行记录,值为on 表示使用,缺省值为off。 5)rccorder" 如果被设置为on,所有的查询将被重新排序,所以在同一子网中的主机将首选被返回,缺省值为off。

实验六 Linux软件包管理与基本网络配置

实验六Linux软件包管理与基本网络配置 一. 一.实验目的: 1.1.学会find命令的使用方法; 2.2.学习利用rpm和tar命令实现软件包的管理; 3.3.掌握如何在Linux下的TCP/IP网络的设置; 4.4.学会使用命令检测网络配置; 5.5.学会启用和禁用系统服务。 二. 二.实验内容: 1.1.利用find命令查找满足条件的文件; 2.2.利用rpm和tar命令管理软件包; 3.3.使用ifconfig命令配置网络接口; 4.4.使用route命令加默认网关; 5.5.使用hostname命令设置主机名; 6.6.修改/etc/hosts实现Linux的静态地址解析; 7.7.修改/etc/resolv.conf配置Linux的DNS客户端; 8.8.使用ping、netstat命令检测配置; 9.9.设置系统启动时自动配置网络参数; 10.10.用service命令和ntsysv命令控制守护进程。 三. 三.实验练习: 任务一 rpm软件包的管理 本部分实验内容按照课本P171-P178页的各个小的实验内容进行练习。 任务二 find命令的使用 1.1.在/var/lib目录下查找所有文件其所有者是games用户的文件。 $ find /var/lib –user games 2> /dev/null 2.2.在/var目录下查找所有文件其所有者是root用户的文件。 $ find /var –user root –group mail 2>/dev/mull 3.3.查找所有文件其所有者不是root,bin和student用户并用长格式显示(如ls –l 的显示结果)。$ find / -not –user root –not –user bin –not –user student –ls 2> /dev/null or $find / ! –user root ! –user bin ! –user student –exec ls –ld {} \; 2> /dev/null 4.4.查找/usr/bin目录下所有大小超过一百万byte的文件并用长格式显示(如ls –l 的显示结果)。$ find /usr/bin –size +1000000c –ls 2> /dev/null 5.5.对/etc/mail目录下的所有文件使用file命令。 $find /etc/maill –exec file {} \; 2 > /dev/null

史上最全linux内核配置详解

对于每一个配置选项,用户可以回答"y"、"m"或"n"。其中"y"表示将相应特性的支持或设备驱动程序编译进内核;"m"表示将相应特性的支持或设备驱动程序编译成可加载模块,在需要时,可由系统或用户自行加入到内核中去;"n"表示内核不提供相应特性或驱动程序的支持。只有<>才能选择M 1. General setup(通用选项) [*]Prompt for development and/or incomplete code/drivers,设置界面中显示还在开发或者还没有完成的代码与驱动,最好选上,许多设备都需要它才能配置。 [ ]Cross-compiler tool prefix,交叉编译工具前缀,如果你要使用交叉编译工具的话输入相关前缀。默认不使用。嵌入式linux更不需要。 [ ]Local version - append to kernel release,自定义版本,也就是uname -r可以看到的版本,可以自行修改,没多大意义。 [ ]Automatically append version information to the version string,自动生成版本信息。这个选项会自动探测你的内核并且生成相应的版本,使之不会和原先的重复。这需要Perl的支持。由于在编译的命令make-kpkg 中我们会加入- –append-to-version 选项来生成自定义版本,所以这里选N。 Kernel compression mode (LZMA),选择压缩方式。 [ ]Support for paging of anonymous memory (swap),交换分区支持,也就是虚拟内存支持,嵌入式不需要。 [*]System V IPC,为进程提供通信机制,这将使系统中各进程间有交换信息与保持同步的能力。有些程序只有在选Y的情况下才能运行,所以不用考虑,这里一定要选。 [*]POSIX Message Queues,这是POSIX的消息队列,它同样是一种IPC(进程间通讯)。建议你最好将它选上。 [*]BSD Process Accounting,允许进程访问内核,将账户信息写入文件中,主要包括进程的创建时间/创建者/内存占用等信息。可以选上,无所谓。 [*]BSD Process Accounting version 3 file format,选用的话统计信息将会以新的格式(V3)写入,注意这个格式和以前的v0/v1/v2 格式不兼容,选不选无所谓。 [ ]Export task/process statistics through netlink (EXPERIMENTAL),通过通用的网络输出工作/进程的相应数据,和BSD不同的是,这些数据在进程运行的时候就可以通过相关命令访问。和BSD类似,数据将在进程结束时送入用户空间。如果不清楚,选N(实验阶段功能,下同)。 [ ]Auditing support,审计功能,某些内核模块需要它(SELINUX),如果不知道,不用选。 [ ]RCU Subsystem,一个高性能的锁机制RCU 子系统,不懂不了解,按默认就行。 [ ]Kernel .config support,将.config配置信息保存在内核中,选上它及它的子项使得其它用户能从/proc/ config.gz中得到内核的配置,选上,重新配置内核时可以利用已有配置Enable access to .config through /proc/config.gz,上一项的子项,可以通过/proc/ config.gz访问.config配置,上一个选的话,建议选上。 (16)Kernel log buffer size (16 => 64KB, 17 => 128KB) ,内核日志缓存的大小,使用默认值即可。12 => 4 KB,13 => 8 KB,14 => 16 KB单处理器,15 => 32 KB多处理器,16 => 64 KB,17 => 128 KB。 [ ]Control Group support(有子项),使用默认即可,不清楚可以不选。 Example debug cgroup subsystem,cgroup子系统调试例子 Namespace cgroup subsystem,cgroup子系统命名空间 Device controller for cgroups,cgroups设备控制器

LINUX下MYSQL配置文件详解

linux下mysql配置文件https://www.360docs.net/doc/8113551691.html,f详解【转】 basedir=path使用给定目录作为根目录(安装目录)。character-sets-dir=path给出存放着字符集的目录。 datadir=path从给定目录读取数据库文件。 pid-file=filename 为mysqld程序指定一个存放进程ID的文件(仅适用于UNIX/Linux系统);Init-V脚本需要使用这个文件里的进程ID 结束mysqld进程。 socket=filename 为MySQL客户程序与服务器之间的本地通信指定一个套接字文件(仅适用于UNIX/Linux系统;默认设置一般是 /var/lib/mysql/mysql.sock文件)。在Windows环境下,如果MySQL客户与服务器是通过命名管道进行通信的,–sock选项给出的将是该命名管道的名字(默认设置是MySQL)。 lower_case_table_name =1/0新目录和数据表的名字是否只允许使用小写字母;这个选项在Windows环境下的默认设置是1(只允许使用小写字母)。 mysqld程序:语言设置 character-sets-server= name 新数据库或数据表的默认字符集。为了与MySQL的早期版本保持兼容,这个字符集也可以用–default-character-set选项给出;但这个选项已经显得有点过时了。 collation-server=name新数据库或数据表的默认排序方式。lanuage=name用指定的语言显示出错信息。 mysqld程序:通信、网络、信息安全 enable-named-pipes 允许Windows2000/XP环境下的客户和服务器使用命名管道(named pipe)进行通信。这个命名管道的默认名字是MySQL,但可以用–socket选项来改变。 local-infile[=0]允许/禁止使用LOAD DATA LOCAL语句来处理本地文件。

linux常用服务器配置

Linux常用服务器配置 文件修改记录表 版权声明和保密须知 本文件中出现的任何文字叙述、文档格式、插图、照片、方法、过程等内容,除另有特别注明,版权均属江苏金智教育信息技术有限公司所有,受到有关产权及版权法保护。任何单位和个人未经江苏金智教育信息技术有限公司的书面授权许可,不得复制或引用本文件的任何片断,无论通过电子形式或非电子形式。 Copyright 2011 江苏金智教育信息技术有限公司版权所有

目录目录

说明 文档目的 为了能够让部门工程师在以后的部署实施过程中熟悉linux下常用的业务配置,遂整理此文档。 本文详细列出了在常见环境中Linux下常用业务配置;并对具体业务进行了分析和配置示例,希望大家在以后的部署中能够严格去执行此规范。 规范文档中,尚有欠妥之处。请各位实施部署工程师及时指正! 文档适用范围 本文档使用江苏金智教育信息技术有限公司所有项目范围(含北京分公司、上海分公司、福建区域) 文档约定 XXX字符标示着根据现场实际情况来填写 红色加粗标示着必须严格按照要求填写

1NFS服务的配置 1.1NFS服务的简介 NFS(Network File Service)的设计是为了在不同的unix系统间进行档案共享。当使用者想用远端档案时只要用“mount”就可把remote文件系统挂接在自己的文件系统之下,使得远端的文件使用上和local机器的档案没两样。其目的就是让不同unix操作系统之间可以彼此共享文件。 NFS服务器的常用功能:1、可以把服务器的文件象本地一样的操作,很方便;2、NFS 服务器对系统资源占用也少;3、NFS可以支持很多其他服务,比如kickstart(kickstart是无人值守,网络批量安装服务),NIS等等。 NFS服务建立在RPC(远程过程调用)协议上的服务,使用时需要先打开portmap(端口映射)服务进程。因为本身NFS服务的功能非常多,所以通常该服务开启的端口是随机的,当NFS需要使用某个功能时,我们通常是将开启的请求发送给RPC协议上的portmap 进程,做一个端口开启与映射工作。 作为一名运维工程师,对于NFS服务的配置一定要非常的熟悉。NFS服务也是类unix 平台下最基本的常用业务。 1.2NFS服务侧写 1)NFS 服务的进程通常有:nfsd,nfslockd,rpciod,,, 2)服务启动脚本:/etc/portmap, /etc/nfs 3)使用端口:111(portmap进程的端口,通常只有这一个是固定使用端口) 4)所需RPM包:nfs-utils 5)相关RPM包:portmap(必需) 6)配置文件:/etc/exports 1.3NFS服务端的配置 通常来说,NFS服务端的配置主要是基于/etc/exports文件的编辑。初始状态下,/etc/exports文件为空。文件中的每一行,表示一个开放的目录,并记录着它开放权限。每一行中都分为三列关系:第一列,写入你需要共享的目录路径;第二列写入客户端描述,也就是哪些客户端可以使用你的服务器共享的资源;第三列是紧挨着第二列的,内容是共享信息开放的权限。具体配置实例如下:

linux的网络接口以及详细配置讲解

Linux 网络接口2012-06-21 10:29:45 分类:LINUX 在 Linux 中,所有的网络通讯都发生在软件接口与物理网络设备之间。与网络接口配置相关的文件,以及控制网络接口状态的脚本文件,全都位于 /etc/sysconfig/netwrok-scripts/ 目录下。虽然在不同的系统之间,这些文件的类型和数量并不一定相同,但大致来讲,都包含以下几类与网络相关的配置文件: 1.网络接口配置文件 2.网络接口控制脚本 3.与网络相关的函数库文件(function files) 各种的网络设备都需要用到这些文件保证设备的正常动作 本章将深入探讨这些文件的用途,以及使用它们的方式。 Linux 网络接口 网络接口配置文件 在 Linux 中,网络接口配置文件用于控制系统中的软件网络接口,并通过接口实现对网络设备的控制。当系统启动时,系统通过这些接口配置文件决定启动哪些接口,以及如此对这些接口进行配置。 在 Linux 中,网络接口配置文件用于控制系统中的软件网络接口,并通过这些接口实现对网络设备的控制。当系统启动时,系统通过这些接口配置文件决定启动哪些接口,以及如何对这些接口进行配置。接口配置文件的名称通常类似于 ifcfg-,其中 与配置文件所控制的设备的名称相关。 在所有的网络接口中,我们日常中最常用到的接口类型就是以太网接口。

以太网接口 在所有的网络配置文件中,最常用的就是 ifcfg-eth0,因为它是系统中第一块网卡的配置文件。如果系统中有多块网卡,ifcfg-eth 后面的数字就会依次递增。正因为每个设备都有对应的一个配置文件,因此管理员也能够单独地控制每一个设备。 以下是一个 ifcfg-eth0 配置文件的示例,在配置中已经为网卡设置好了 IP 地址。 DEVICE=eth0 BOOTPROTO=none ONBOOT=yes NETWORK=10.0.1.0 NETMASK=255.255.255.0 IPADDR=10.0.1.27 USERCTL=no // 是否允许非root用户控制网卡 在接口配置文件中,选项之间存在着一些关联,如果不像上例中那样使用固定 IP,使用 DHCP 获取 IP 地址的配置文件又会不一样。以下就是将网卡配置成通过 DHCP 获取 IP 地址的配置: DEVICE=eth0 BOOTPROTO=dhcp ONBOOT=yes 使用网络管理工具(system-config-network) 对网络接口文件进行更改是比较方便的一种方式,但通过学习手动更改配置文件,能够更好的在各种 Linux 发行版中执行网络配置的工作。 有关网络管理工具的使用方法,可以参考下一章翻译文档 - 《Fedora/Linux 网络配置工具》 下面是以太网接口配置文件中常用的一些选项:

Linux内核中的Kconfig用法与说明

Linux内核中的Kconfig文件 本节不对内核的Kconfig文件进行深入展开,更多Kconfig语法和说明请阅读 。 内核源码树每个目录下都还包含一个Kconfig文件,用于描述所在目录源代码相关的内核配置菜单,各个目录的Kconfig文件构成了一个分布式的内核配置数据库。通过make menuconfig(make xconfig或者make gconfig)命令配置内核的时候,从Kconfig文件读取菜单,配置完毕保存到文件名为.config的内核配置文件中,供Makefile文件在编译内核时使用。 1.1.1 Kconfig基本语法 如程序清单0.1所示代码摘自文件,是一个比较典型的Kconfig 文件片段,包含了Kconfig的基本语法。 程序清单0.1drivers/char/Kconfig片段 menu "Character devices" source "drivers/tty/Kconfig" config DEVKMEM bool "/dev/kmem virtual device support" default y help Say Y here if you want to support the /dev/kmem device. The /dev/kmem device is rarely used, but can be used for certain kind of kernel debugging operations. When in doubt, say "N". …… endmenu 1.子菜单 通过menu和endmenu来定义一个子菜单,程序清单0.1所示代码定义了一个“Character devices”子菜单,子菜单在界面中用“--->”表示,如图0.1所示。 图0.1menu定义的子菜单 子菜单的菜单项则由config来定义,随后的“bool”、“default”、“help”等都是该菜单 项的属性:

Linux引导与配置文件加载过程

Linux引导及配置文件加载过程解读 文章分类:操作系统 ?? 本文包括3部分内容 1、 Linux的引导过程 2、 Linux 的运行级别 3、 /etc/inittab与/etc/rc.d/ 与/etc/rc.d/init.d的关系 关键词:Linux引导过程、运行级别、inittab与 init.d 与 rc.d 一、 Linux的引导过程 系统加电之后,首先进行的硬件自检,然后是bootloader对系统的初始化,加载内核。 内核被加载到内存中之后,就开始执行我们的系统设置了。一旦内核启动运行,对硬件的检测就会决定需要对哪些设备驱动程序进行初始化。从这里开始,内核就能够挂装根文件系统(这个过程类似于Windows识别并存取C盘的过程)。内核挂装了根文件系统,并已初始化所有的设备驱动程序和数据结构等之后,就通过启动一个叫init的用户级程序,完成引导进程。 二、运行级别(run level) Init进程是系统启动之后的第一个用户进程,所以它的pid(进程编号)始终为1。init 进程上来首先做的事是去读取/etc/目录下 inittab文件中initdefault id值,这个值称为运行级别(run-level)。它决定了系统启动之后运行于什么级别。运行级别决定了系统启动的绝大部分行为和目的。这个级别从0到 6 ,具有不同的功能。不同的运行级定义如下:# 0 - 停机(千万别把initdefault设置为0,否则系统永远无法启动) # 1 - 单用户模式 # 2 - 多用户,没有 NFS # 3 - 完全多用户模式(标准的运行级) # 4 –系统保留的 # 5 - X11 (x window) # 6 - 重新启动(千万不要把initdefault 设置为6,否则将一直在重启) 三、 /etc/rc.d/与/etc/rc.d/init.d的关系 先解释一下init.d。这个目录存放的是一些脚本,一般是linux以rpm包安装时设定的一些服务的启动脚本。系统在安装时装了好多rpm包,这里面就有很多对应的脚本。执行这些脚本可以用来启动、停止、重启这些服务。 /etc/rc.d/init.d这个目录下的脚本就类似与windows中的注册表,在系统启动的时候执行。程序运行到这里(init进程读取了运行级别),就开始有选择地启动服务了,这时刚才说的运行级别就起作用了。在决定了系统启动的run level之后,/etc/rc.d/rc这个脚本先执行。在RH9的源码中它都是一上来就check_runlevel(),知道了运行级别之后,对于每一个运行级别,在rc.d下都有一个子目录分别是rc0.d,rc1.d ….. rc6.d。每个目录下都是到init.d目录的一部分脚本一些链接。每个级别要执行哪些服务就在相对应的目录下,比如级别5要启动的服务就都放在rc5.d下,但是放在这个rc5.d下的都是一些链接文

Linux配置文件详解

Linux配置文件详解 本文说明了 Linux 系统的配置文件,在多用户、多任务环境中,配置文件控制用户权限、系统应用程序、守护进程、服务和其它管理任务。这些任务包括管理用户帐号、分配磁盘配额、管理电子邮件和新闻组,以及配置内核参数。本文还根据配置文件的使用和其所影响的服务的情况对目前Red Hat Linux 系统中的配置文件进行了分类。 介绍 每个 Linux 程序都是一个可执行文件,它含有操作码列表,CPU 将执行这些操作码来完成特定的操作。例如,ls 命令是由 /bin/ls 文件提供的,该文件含有机器指令的列表,在屏幕上显示当前目录中文件的列表时需要使用这些机器指令。几乎每个程序的行为都可以通过修改其配置文件来按照您的偏好或需要去定制。 Linux 中有没有一个标准的配置文件格式? 一句话,没有。不熟悉 Linux 的用户(一定)会感到沮丧,因为每个配置文件看起来都象是一个要迎接的新挑战。在 Linux 中,每个程序员都可以自由选择他或她喜欢的配置文件格式。可以选择的格式很多,从 /etc/shells 文件(它包含被一个换行符分开的 shell 的列表),到 Apache 的复杂的 /etc/httpd.conf 文件。 什么是系统配置文件? 内核本身也可以看成是一个“程序”。为什么内核需要配置文件?内核需要了解系统中用户和组的列表,进而管理文件权限(即根据权限判定特定用户(UNIX_USERS)是否可以打开某个文件)。注意,这些文件不是明确地由程序读取的,而是由系统库所提供的一个函数读取,并被内核使用。例如,程序需要某个用户的(加密过的)密码时不应该打开 /etc/passwd 文件。相反,程序应该调用系统库的 getpw() 函数。这种函数也被称为系统调用。打开 /etc/passwd 文件和之后查找那个被请求的用户的密码都是由内核(通过系统库)决定的。 除非另行指定,Red Hat Linux 系统中大多数配置文件都在 /etc 目录中。配置文件可以大致分为下面几类: 访问文件 /etc/host.conf 告诉网络域名服务器如何查找主机名。(通常是 /etc/hosts,然后就是名称服务器;可通过 netconf 对其进行更改) /etc/hosts 包含(本地网络中)已知主机的一个列表。如果系统的 IP 不是动态生成,就可以使用它。对于简单的主机名解析(点分表示法),在请求 DNS 或 NIS 网

相关文档
最新文档