1.Apache配置文件
Apache用户通过编辑Apache的主配置文件/etc/httpd/conf/httpd.conf来配置Apache的运行参数。httpd.conf配置文件包含各种影响服务器运行的配置选项,只有对这些配置选项有所理解,才能真正掌握Apache服务器的配置。
主配置文件可包含类似/etc/httpd/conf.d/*.conf格式的配置文件,通过指令Include /IncludeOptional定义包含的配置文件。
配置文件的格式需参照如下语法:
每一行包含一个指令,在行尾使用反斜杠”\”可以表示续行。
配置文件中的指令不区分大小写,但是指令的参数 (argument) 通常区分大小写。
以 “#“开头的行被视为注解并在读取时被忽略。注解不能出现在指令的后边。
空白行和指令前的空白字符将在读取时被忽略,因此可以采用缩进以保持配置层次的清晰。
Apache的安装还可采用编译安装。编译安装分为静态编译和动态编译两种方式。静态编译可将核心模块和所需要的模块一次性编译,运行速度快,但是如果要增加或删除模块必须重新编译整个Apache。动态编译只编译核心模块和DSO(动态共享对象)模块—mod.so,各模块可独立编译,并可随时用 LoadModule 指令加载,用于特定模块的指令可以用 <IfModule> 指令包含起来,使之有条件地生效,但是运行速度稍慢。
可通过如下命令查看Apache的编译参数。
httpd.conf配置文件主要由全局环境、主服务器配置和虚拟主机三个部分组成,每个部分都有相应的配置语句,该文件所有配置语句都以“配置参数名称 参数值”的形式存在,配置语句可放在文件中的任何位置。
(1)全局环境配置命令
ServerRoot:用于设置服务器的根目录
Listen:服务器监听的端口号。
(2)主服务器配置命令
ServerName:设置主机名称。
DocumentRoot:用于设置Apache默认站点根目录。
UserDir public_html:用户可以在自己的目录下建立public_html目录来放置网页。
DirectoryIndex:用来设定主页,可以设置多个页面,前面的页面优先级高。
httpd.conf中被注释掉的配置参数,用户可根据自己需要将已注释掉的配置语句取消注释(删除注释符号即可)。
下面对配置文件中的一些比较重要的选项和参数进行讲解:
ServerTokens OS
告知客户端Web服务器的版本与操作系统
ServerRoot /etc/httpd
用于指定Apache服务器的根目录,即守护进程httpd的运行目录。默认指定/etc/httpd目录为Apache服务器的根目录。
Timeout 120
定义客户程序和服务器连接的超时间隔,超过这个时间间隔(秒)后服务器将断开与客户机的连接,默认为120秒。
KeepAlive Off
用于设置是否保持活跃的连接,即如果将KeepAlive设置为On,那么来自同一客户端的请求就不需要再一次连接,避免每次请求都要新建一个连接而加重服务器的负担。默认设置为Off。
MaxKeepAliveRequests 100
保持连接状态时,每次连接最多请求文件数,默认为100。
KeepAliveTimeout 15
用于KeepAlive的条件下,则该次联机在最后一次传输后等待延迟的秒数,默认为15秒,当超过15秒则该联机将中断。如果该选项的设置时间过短,例如设置为1秒,那么Apache服务器就频繁建立新连接,这样会造成服务器资源的耗费;如果该选项的设置时间过长,例如设置为600秒,则Apache会有很多无用的连接占用服务器的资源。所以,KeepAliveTimeout值的设置需要根据网站的流量、服务器的配置设定。
<IfModule prefork.c> \\设置使用perfork MPM运行方式的参数
StartServers 8 \\服务器启动时,执行8个httpd进程
MinSpareServers 5 \\最小的备用程序数量为5
MaxSpareServers 20 \\最大的备用程序数量为20
ServerLimit 256 \\服务器允许的进程数上限为256
MaxClients 256 \\服务器允许启动的最大进程数为256
MaxRequestsPerChild 4000 \\服务进程允许的最大请求数为4000
</IfModule>
<IfModule worker.c>
StartServers 2 \\服务器启动的服务进程数量为2
MaxClients 150 \\服务器允许启动的最大进程数为150
MinSpareThreads 25 \\保有的最小工作线程数目为25
MaxSpareThreads 75 \\允许保有的最大工作线程数目为75
ThreadsPerChild 25 \\每个服务进程中的工作线程常数为25
MaxRequestsPerChild 0 \\服务进程允许的最大请求数不限
</IfModule>
Listen 80:用于设置服务器的监听端口,默认设置监听80端口,可以根据需要绑定Apache服务器到特定的IP地址或端口。
LoadModule authe_basic_module modules/mod_auth_basic.so:在配置文件中,用户会看到许多这样的配置选项,这些选项是加载模块的配置选项,默认Apache已加载了许多模块。
Include conf.d/*.conf
用于设置从哪些配置目录中加载配置文件。
ServerAdmin root@localhost
用于设置服务器管理员的邮箱账号,默认设置为root@localhost。当服务器发生问题时,Apache服务器会将错误消息邮件发送到用户所设置的服务器管理员邮箱内。
#ServerName www.example.com:80
用于设置访问的主机名和端口号,也可以设置为主机的IP地址。“#”表示关闭此功能,默认指定主机名为www.example.com,端口号为80。
DocumentRoot "/var/www/html"
指定Apache服务器默认存放网页文件的目录位置,这个值可以根据自己的需要进行更改,默认设置为/var/www/html目录。
<Directory /> \\设置根目录的访问权限
Options FollowSymLinks \\用来设置区块的功能,此处是允许符号链接的文件
AllowOverride None \\决定是否可取消以前设置的访问权限,此处禁止读取“. htaccess”文件中的内容
</Director>
<Directory "/var/www/html">
Options Indexes FollowSymLinks \\Options选项有两个值,Indexes为当在目录中找不到 DirectoryIndex列表中指定的文件就生成当前目录的文件列表;FollowSymLinks为允许符号链接跟随,访问不在本目录下的文件
AllowOverride None \\禁止读取".htaccess"配置文件的内容
Order allow,deny \\指定先执行Allow(允许访问)规则,再执行Deny(拒绝访问)规则
Allow from all \\设置Allow访问规则,允许所有连接
</Directory>
DirectoryIndex index.html index.html.var
设置每个目录中默认文档的文件名称,其先后顺序具有优先性。一般来说是以index.*为文档名开头。
AccessFileName .htaccess
用于指定保护目录设置文件的文件名称,默认为.htaccess
ErrorLog
用于记录浏览器加载网页时发生的错误,以及关闭或启动httpd服务的信息,如果用户没有在<VirtualHost>标记块内定义ErrorLog选项,这个虚拟主机的错误信息将记录在这里。如果用户在那儿定义了ErrorLog,这些错误信息将记录在用户所定义的文件里,而不是这里定义的文件,默认指定为logs/error_log目录。
LogLevel
用于记录在错误日志文件error_log中的消息等级。可能的值包括:debug、info、notice、warn、error、alert、emerg、crit。默认日志消息等级为warn(logLevel)。
CustomLog logs/access_log combined
用于设置访问控制日志的路径。
ServerSignature On
服务器会在自行生成的网页中加上服务器的版本与主机名称,若为Off时则不加,当为E-mail时,则不仅会加上版本与主机名,还会再加上ServerAdmin配置选项中设置的邮件地址。该选项默认为On。
Alias /icons/ "/var/www/icons/"
该配置选项中是为某一目录建立别名,其格式为“Alias 别名 真实名”。该配置选项默认为/var/www/icons/设置别名为/icons/。
httpd.conf配置文件中对虚拟主机的配置参考如下,用户可以通过设置虚拟主机以便在一个主机上保存多个域名/主机名,文件中的大多数配置信息只使用基于名称的虚拟主机,因此不必担心IP地址的问题。虚拟主机标记块模板如下所示:
其中<Virtualhost*:80>中的*符号代表虚拟机的IP地址,80代表的是端口号。虚拟标记块中的ServerAdmin配置选项指定管理员邮箱地址;Document-Root配置选项用来指定存放网页的目录路径;ServerName配置选项用来设置虚拟主机的名称;Errorlog配置选项指定保存错误信息的日志文件路径;CustomLog配置选项指定访问日志文件路径。
2.配置和管理虚拟主机
虚拟主机是现在很常用的技术,一个服务器如果只放一个公司的网页将存在资源的浪费,所以一般一个服务器上都存放了几个公司的网站,但是服务器怎么区分用户访问哪个网站呢?这时可通过虚拟主机技术访问不同的网站。虚拟机主机有基于域名和基于IP两种方法,一般使用基于域名的虚拟主机技术,因为现在IPV4的公网IP很珍贵,如果一个网站占用一个IP,那么就会浪费很多IP,如果使用基于域名的虚拟主机就可以避免这种浪费。
虚拟主机的优点:
①节约成本
利用虚拟主机技术可在一台计算机中建立多个虚拟主机,都分别提供Web服务,这样不必购买多台计算机,也不必另外安装线路,更不需要增加管理人员,所以就大大地节省了人力和物力。
②稳定的性能
普通的企业级网站往往只能通过某一家ISP接入,如果这家ISP供应商有故障时,则用户就会受到影响,若采取“虚拟主机”技术,则可以借助服务器的多路由获得稳定的性能,因为大多数的虚拟主机服务商所依赖的主干网一般不止一条,这就可以保证系统不受某一家ISP供应商的影响了。
(1)基于IP的虚拟主机
基于IP地址的虚拟主机在服务器里绑定了多个IP,然后配置Apache服务器,将多个网站绑定在不同的IP地址上,访问服务器上的不同IP地址,就可以进入到不同的网站。
建立基于IP的虚拟主机,除了物理网卡上已经配置ip地址之外,首先需要添加一个虚拟网卡,并给这个虚拟网卡配置一个IP地址。如下所示,添加一个虚拟网卡eth0:0,并配置IP地址为192.168.0.6。
例如:建立/var/www/bj、/var/www/sh目录,分别用于存放bj.sdflc.com、sh.sdflc.com这两个网站,对应的IP地址分别192.168.0.4和192.168.0.6。管理员邮箱都设置为root@sdflc.com。bj.sdflc.com网站的ErrorLog位于根目录/etc/httpd下的子目录 logs中,命名为bj-error_log;CustomLog位于根目录/etc/httpd下的子目录 logs中,命名为bj-access_log。sh.sdflc.com网站的ErrorLog位于根目录/etc/httpd下的子目录 logs中,命名为sh-error_log;CustomLog在根目录/etc/httpd下的子目录 logs中,命名为sh-access_log。
修改Apache服务器的主配置文件httpd.conf,设置基于ip地址的虚拟主机。这里配置两个基于IP地址的虚拟主机,如下所示:
配置文件修改完毕后,保存退出。建立两个网站对应的目录/var/www/bj及/var/www/sj,并在目录中建立网页测试文件。由于在本机测试,可在/etc/hosts文件中加入域名与ip地址之间的对应关系,如下所示:
重新启动Apache服务器,进行测试:
通过Mozilla Firefox来访问网页,如下所示:
图10-1 访问bj.amy.com的主页
图10-2 访问sh.amy.com的主页