| 9.3 WWW服务器的配置 上网,这实在是一个充满魔力的神奇的字眼。在设置好了域名系统和电子邮件系统以后,我们接下来就可以真正的考虑“上网”了:架设用户自己的Web服务器。 XteamLinux捆绑了著名的Apache(阿帕奇)万维网服务器。用户可以以根用户(root)的身份来执行命令: [root@xteam /root]# /usr/sbin/xteam-sysv 这样用户可以选择在整个系统启动时就启动Apache Web服务器(在XteamLinux缺省安装的情况下,Apache Web服务器进程httpd是自动启动的)。或者用户也可以选择每次手工启动Apache Web服务器。在XteamLinux下,手工启动/停止/重起Apache Web服务器后台守护进程httpd是通过在命令“/etc/rc.d/init.d/httpd”后加上参数“start/stop/restart”来进行的: [root@xteam /root]# /etc/rc.d/init.d/httpd start Starting httpd: httpd httpd: cannot determine local host name. Use the ServerName directive to set it manually. [root@xteam /root]# 上面我们看到的是一般新用户在第一次启动Apache Web服务器时经常遇到的一个问题,就是没有向Apache Web服务器说明“ServerName(httpd服务器所服务的主机名)”。Apache Web服务器启动时必须知道自己所服务的主机名,否则是不行的,而系统自己是没有办法猜测到用户的Web服务器所要服务的主机名的,所以用户必须主动的告诉Apache Web服务器它所要服务的主机名。这个小问题通过修改Apache Web服务器配置文件“/etc/httpd/conf/httpd.conf”中的“ServerName”一行就可以解决: 把: ... #ServerName new.host.name ... 改为: ... ServerName www.MyCompany.com ... 注意,顶头的“#”号被去掉了。然后我们再来启动Apache Web服务器进程httpd: [root@xteam /root]# /etc/rc.d/init.d/httpd start Starting httpd: httpd [root@xteam /root]# ps ax | grep httpd 470 ? S 0:00 httpd 472 ? S 0:00 httpd 473 ? S 0:00 httpd 474 ? S 0:00 httpd 475 ? S 0:00 httpd 476 ? S 0:00 httpd 477 ? S 0:00 httpd 478 ? S 0:00 httpd 479 ? S 0:00 httpd 480 ? S 0:00 httpd 481 ? S 0:00 httpd [root@xteam /root]# 上面我们通过“ps”命令(查看系统中正在运行的进程的命令)看出来Apache Web服务器进程httpd已经启动了。接下来,我们再用运行于命令行的浏览器lynx来确认一下: [root@xteam /root]# lynx xteam.xteamlinux.com.cn +--------------------------------------------------------------------| | XteamLinux WWW 服务器 | | Powered by XteamLinux XteamLinux 主页 | | Apache 主页 | | Apache 使用手册 | | | |Are you sure you want to quit? [N] | +-------------------------------------------------------------------- 完全正常,我们如所期望的那样看到了在lynx浏览器中显示出来的XteamLinux系统上缺省的主页。 Apache是目前互联网上使用最广泛的Web服务器,其市场占有份额远远超过包括Netscape Enterprise,Microsoft IIS等等在内的所有其它的Web服务器。微软公司的首席执行官鲍默尔最近在谈到微软的IIS Web服务器时对新闻界说:“Apache is simply better.”(阿帕奇确实更好),由此亦可见Apache的猛健。 在XteamLinux中,Apache的缺省安装路径是在“/home/httpd”下面。由于XteamLinux是基于RPM软件包管理系统的,用户可以使用命令: [root@xteam /root]# rpm -ql apache | less 来查看Apache的详细的安装路径所在。Apache Web服务器主要的配置文件是在“/etc/httpd/conf”目录下的几个文件: [root@xteam conf]# pwd /etc/httpd/conf [root@xteam conf]# ls -alF total 42 drwxr-xr-x 2 root root 1024 Jun 25 03:07 ./ drwxr-xr-x 3 root root 1024 Jun 25 03:07 ../ -rw-r--r-- 1 root root 2523 May 25 15:15 access.conf -rw-r--r-- 1 root root 12346 May 25 15:15 httpd.conf -rw-r--r-- 1 root root 12441 May 25 15:15 magic -rw-r--r-- 1 root root 8372 May 25 15:15 srm.conf [root@xteam conf]# 其中,“httpd.conf”文件是主要的服务器配置文件。我们来大致的浏览一下这个文件。 * httpd.conf: LoadModule env_module modules/mod_env.so LoadModule config_log_module modules/mod_log_config.so LoadModule agent_log_module modules/mod_log_agent.so ... 这最前面就是Apache的DSO(Dynamic Shared Objects,动态共享对象)的配置,这使得Apache可以在需要使用这些模块的时候,动态的装载这些模块,而在不需要使用这些模块的时候,又可以有效的减少内存的占用。在稍微下面一些,我们可以看到: #LoadModule php_module modules/mod_php.so #LoadModule php3_module modules/libphp3.so #LoadModule perl_module modules/libperl.so ... 顶头的“#”号表示这几行被注释掉了,如果要使用这几个DSO,我们可以把前面的“#”号去掉,然后重新启动Apache服务器即可(无需重启整个系统)。这里的“php3”和“mod_perl”,我们下面还要讲到,它们和Apache配合,提供了一个比一般的CGI更加高效率的动态页面解决方案。 ServerType standalone Port 80 ... 接下来的“ServerType”指令,说明的是Apache是以一个独立的(standalone)守护进程的身份运行于后台,还是由另外的后台守护进程(Inetd)在接到HTTP请求的时候来唤醒。对于正式的互联网站点来说,standalone可以提供比Inetd方式更快的客户端响应速度。“Port”指令说明了由Apache Web服务器所监听的端口号,端口80是由RFC所规定的标准的HTTP服务所驻留的端口,如果你有特殊的需要想让Apache监听其它的端口号,如8080等等,就可以在这里修改“Port”这一指令。 HostnameLookups off ... 接下来的这一指令“HostnameLookups”,指示Apache是记录浏览本网站的客户的IP地址(形如:202.102.13.141),还是记录DNS地址(形如:zw.xteam.com.cn)。一般来说,记录DNS地址可以使得Apache的Log文件更加可读,但是仅仅记录IP可以省略掉DNS查询的时间,获得更高的效率。 User nobody Group nobody ... 上面这两行指令指示Apache服务器的运行身份,以用户nobody.nobody的身份来运行,对于系统安全是最合适的。切忌以用户root的身份来运行Web服务器。 ServerAdmin zhaoway@xteamlinux.com.cn ServerRoot /etc/httpd ... “ServerAdmin”指令说明一个电子邮件地址。当Apache Web服务器在运行中遇到问题时,Apache会把这一电子邮件地址提供给客户浏览器,以方便客户浏览器提交错误报告或寻求解决问题的办法。“ServerRoot”指令指示了Apache的配置文件、错误记录文件以及Log文件等等在服务器上所在的位置。在XteamLinux中,这些文件缺省的驻留于路径“/etc/httpd”。 ErrorLog logs/error_log LogLevel warn ... “ErrorLog”指明相对于路径“ServerRoot”来说,Apache的错误记录文件所在的位置。“LogLevel”为“warn”一般来说是比较合适的,其它的“LogLevel”从简到繁还有“debug,info,notice,warn,error,crit,alert,emerg”等等。 LogFormat "%h %l %u %t "%r" %>s %b" common LogFormat "%{Referer}i -> %U" referer LogFormat "%{User-agent}i" agent CustomLog logs/access_log common CustomLog logs/referer_log referer CustomLog logs/agent_log agent ... 上面的指令“LogFormat”每一个都申明一种记录文件的格式,这些格式都很方便用一些程序脚本来处理,这就使得服务器管理员可以方便的分析网站各个方面的情况,获得远比一个计数器所提供的要多的多的信息。接下来呢,“CustomLog”指令指示某一种格式的记录文件的所在路径(相对于“ServerRoot”)。这里为了减小篇幅,我们就不再重复Apache手册里关于记录文件格式的说明了,由兴趣的朋友可以自己去查阅一下。相关的网址在“httpd://www.apache.org” 接下来的一个指令是: #ServerName new.host.name ... 这一行在XteamLinux的发行版中,缺省情况下是被注释掉了。用户可以在这里填写上自己的域名(主机名),以启动Apache Web服务器。 这之后的“httpd.conf”配置文件中的指令一般是划归两个主题:性能调优以及虚拟主机的配置。由于这两个主题有其本身的逻辑结构,我们将在以后详述。下面,我们同样的来大致浏览一下Apache Web服务器三个主要的配置文件当中的第二个文件:srm.conf: * srm.conf DocumentRoot /home/httpd/html UserDir public_html DirectoryIndex index.html index.shtml index.cgi FancyIndexing on ... “DocumentRoot”指令说明所有的那些HTML文件存放在服务器上的地点。在XteamLinux中,存放这些HTML文件的缺省路径是在“/home/httpd/html”目录下。以后用户自己的Web主页文件等等也存放在“DocumentRoot”指令所指示的这个目录下面。 “UserDir”指令说明个人主页存放路径。个人主页通过URL://xteam.xteamlinux.com.cn/~zhaoway,即用户名前加上波浪号“~”的方式来访问。上面的例子中,用户的个人主页文件就存放在用户主目录(一般如:“/home/zhaoway”)下的“public_html”目录中。简单说来,即当客户浏览器试图访问“//xteam.xteamlinux.com.cn/~zhaoway”时,Apache Web服务器将调出“xteam.xteamlinux.com.cn”这台主机上的“/home/zhaoway/public_html”目录下的文件。 紧接着的问题就是,当客户端浏览器试图访问诸如“//www.xteamlinux.com.cn”这样的URL时,并没有给出具体的文件名,那么服务器端实际上给出的到底是哪一个具体的HTML文件呢?这由指令“DirectoryIndex”解决,上面的例子中,Apache Web服务器将首先试图给出index.html,如果不存在这个文件,就接着寻找index.shtml,如果还是找不到,就找index.cgi,那么,如果还是找不到怎么办呢? 接下来的指令“FacnyIndexing”如果被设置成为“on”,Apache Web服务器将把相对应于被要求的URL的目录下的所有文件的列表以HTML超链接的格式给出;如果“FancyIndexing”被设置成为“off”,那么,相应的,将禁止这种行为。(如果对应于一个URL,Apache Web服务器无法给出一个HTML文件,酋长会勃然大怒的:) AccessFileName .htaccess ... “AccessFileName”指令提供了以目录为单位的访问控制。在上面的例子中,当Apache试图读取某一目录下的文件时,它将先查阅“.htaccess”文件中所列的访问控制指令,并执行相应的操作。有关用户访问控制的细节,我们将在后面详述。 Alias /icons/ /home/httpd/icons/ ScriptAlias /cgi-bin/ /home/httpd/cgi-bin/ ... 这里的两个指令也是有关于URL到文件系统上的路径的映射的,上面的例子,“//xteam.xteamlinux.com.cn/icons/”被映射为XteamLinux文件系统上的路径“/home/httpd/icons/”;“ScriptAlias”把CGI脚本程序的路径映射为“/home/httpd/cgi-bin/”,用户可以把自己的CGI执行文件放在这个路径下。 同样的,“srm.conf”文件当中还有许多的细节微调及高级配置问题,我们将在以后详述。接下来,我们来大致地看看三个配置文件当中的最后一个:“access.conf”,访问控制配置文件。 * access.conf <Directory /> Options None AllowOverride None </Directory> ... 上面的例子其实就是设置一下缺省的访问控制,可以看出这是一个很严格的访问控制,这对于系统安全是有益的。关于访问控制这方面的细节问题,我们后面再详述。 上面我们把Apache Web服务器三个主要的配置文件大致的浏览了一下,用户在修改了Apache Web服务器的配置文件以适应自己特定的需要以后,需要重新启动Apach,以使新的配置文件生效。在XteamLinux中以用户root的身份执行下面的命令: [root@xteam conf]# /etc/rc.d/init.d/httpd restart  谈谈您的看法
|