整合Apache和Tomcat构建Web服务器(3)

配置主服务器
User nobody
Group nobody
这里是设定执行httpd的用户和组,默认是nobody用户启动apache,这里将组也设置为nobody。
ServerAdmin you@example.com
这里指定的是网站管理员的邮件地址,如果apache出现问题,会发信到这个邮箱。
ServerName :80
这里是指定系统的主机名,如果没有指定,会以系统的hostname为依据。特别注意,这里设定的主机名一定要能找到对应的IP地址(主机名和IP的对应关系可以在/etc/hosts设置)。
UseCanonicalName Off
设定是否使用标准的主机名,如果设置为On,则以ServerName指定的主机名为主。如果web主机有多个主机名,请设置为Off。
DocumentRoot "/usr/local/apache2/htdocs"
此指令非常重要,是用来放置网页的路径,apache会默认到这个路径下寻找网页,并显示在浏览器上。
<Directory />
#这里的“/”是相对路径,表示DocumentRoot指定的目录。
 Options FollowSymLinks
 AllowOverride None
</Directory>
<Directory "/usr/local/apache2/htdocs">
Options Indexes FollowSymLinks
Order allow,deny
Allow from all
</Directory>
上面这段信息是对DocumentRoot指定目录的权限设定,有3个必须知道的参数:
Options 表示在这个目录内能够执行的操作,主要有5个可设定的值:
? Indexes:此参数表示,如果在DocumentRoot指定目录下找不到以index打头的文件时,就将此目录下所有文件列出来,很不安全,不建议使用这个参数。
? FollowSymLinks:表示在DocumentRoot指定目录下允许符号链接到其它目录。
? ExecCGI:表示允许在DocumentRoot指定的目录下执行cgi操作。
? Includes:准许SSI(Server-side Includes)操作。
? MultiViews:不常用,根据语言的不同显示不通的信息提示。
AllowOverride 通过设定的值决定是否读取目录中的.htaccess文件,来改变原来所设置的权限,其实完全可以在httpd.conf中设置所有的权限,但是这样对apache使用者的其它用户如果要修改一些权限的话,就比较麻烦了,因此apache预设可以让用户以自己目录下的. htaccess文件复写权限,常用的选项有两个:
? All:表示可以读取.htaccess文件的内容,修改原来的访问权限。
? None:表示不读取.htaccess文件,权限统一控制。
Order 用来控制目录和文件的访问授权,常用的组合有2个:
? Deny,Allow:表示先检查禁止的设定,没有禁止的全部允许。
? Allow,Deny:表示先检查允许的设定,没有允许的全部禁止。
DirectoryIndex index.html index.htm index.jsp index.html.var
这里是对apache打开网站默认首页的设定,apache在打开网站首页时一般会查找index.*之类的网页文件,DirectoryIndex指令就是设置apache依次寻找能打开网站首页的顺序,例如我们要打开网站,apache会首先在DocumentRoot指定的目录下寻找index.html,也就是,如果没有找到index.html网页,那么apache会接着查找index.htm,如果找到就执行打开首页,以此类推。
UserDir public_html
UserDir用于设定用户个人主页存放的目录,默认为“public_html”目录,例如有个用户为ixdba,如果他的根目录为/home/ixdba,那么他的默认主页存放路径为/home/ixdba/public_html。
AccessFileName .htaccess
定义每个用户目录下的访问控制文件的文件名,默认为.htaccess,
TypesConfig conf/mime.types
TypesConfig用来定义在哪里查询mime.types文件
HostnameLookups Off
用来指定apache在日志中记录访问端地址是ip还是域名,如果为Off,则记录IP地址,如果是On,记录域名信息,建议设置为Off。
ErrorLog logs/error_log
指定错误日志文件的位置
CustomLog logs/access_log common
指定apache访问日志文件的位置和记录日志的模式。
ServerTokens Full
这个指令定义包含在HTTP回应头中的信息类型,默认为“Full”,表示在回应头中将包含操作系统类型和编译信息,可以设为Full|OS|Minor|Minimal|Major|Prod列各值中的一个,Full包含的信息最多,而Prod最少。
ServerSignature On
此指令有3个选项,On、Off和Email,On选项表示在apache的出错页面会显示apache版本以及加载的模块信息,Email选项与On相同,但是还会多出一个包含管理员邮件地址的mailto连接。Off表示不显示任何上面信息。
Alias /icons/ "/usr/local/apache2/icons/"
<Directory "/usr/local/apache2/icons">
    Options Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>
上面这段信息是apache中对别名的设定,当访问或域名/icons时,由于Alias的原因,apache不会去DocumentRoot指定的目录查找文件,而是直接访问/usr/local/apache2/icons 目录下对应的文件信息。而<Directory>标签就是对这个目录权限的设定。
ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/"
<Directory "/usr/local/apache2/cgi-bin">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
</Directory>
这段信息和上面的Alias设定类似,只不过这个是设置cgi脚本的执行权限而已,apache默认在/usr/local/apache2/cgi-bin目录下具有cgi脚本执行权限。
JkWorkersFile /usr/local/apache2/conf/workers.properties
JkMountFile   /usr/local/apache2/conf/uriworkermap.properties
JkLogFile /usr/local/apache2/logs/mod_jk.log
JkLogLevel info
JkLogStampformat "[%a %b %d %H:%M:%S %Y]"
上面这5行是对JK连接器属性的设定,第一、二行指定Tomcat workers配置文件以及对网页的过滤规则,第三行指定JK模块的日志输出文件,第四行指定日志输出级别,最后一行指定日志输出格式。
虚拟主机的设定
NameVirtualHost *
表示启用虚拟主机,如果开启虚拟主机,上面DocumentRoot指令指定的配置将失效,以虚拟主机中指定的DocumentRoot为主。
<VirtualHost *>
    ServerAdmin webmaster@ixdba.net
    DocumentRoot /webdata/www
    ServerName 192.168.60.198
    ErrorLog logs/error_log
    CustomLog logs/access_log common
 JkMountFile  conf/uriworkermap.properties
</VirtualHost>
上面这段是添加一个虚拟主机,其实虚拟主机是通过不同的ServerName 来区分的,这里为了演示方便,使用IP代替域名。我们经常看到在一个web服务器上有很多个网站,并且每个站点都不相同,这就是通过虚拟主机技术实现的。
每个虚拟主机用<VirtualHost>标签设定,各个字段含义如下:
ServerAdmin:表示虚拟主机的管理员邮件地址。
DocumentRoot:指定虚拟主机站点文件路径。
ServerName:虚拟主机的站点域名
ErrorLog:指定虚拟主机站点错误日志输出文件。
CustomLog:指定虚拟主机站点访问日志输出文件。
JkMountFile:指定对此虚拟主机的URL映射文件。
例如,我们要在一个服务器上建立3个网站,只需配置下面3个虚拟主机即可:
<VirtualHost *:80>
    ServerAdmin webmaster_www@ixdba.net
    DocumentRoot /webdata/html
    ServerName
    ErrorLog logs/www.error_log
    CustomLog logs/www.access_log common
</VirtualHost>
<VirtualHost *:80>
    ServerAdmin webmaster_bbs@ixdba.net
    DocumentRoot /webdata/bbs
    ServerName bbs.ixdba.net
    ErrorLog logs/bbs.error_log
    CustomLog logs/bbs.access_log common
</VirtualHost>
<VirtualHost *:80>
    ServerAdmin webmaster_mail@ixdba.net
    DocumentRoot /webdata/mail
    ServerName mail.ixdba.net
    ErrorLog logs/mail.error_log
    CustomLog logs/mail.access_log common
</VirtualHost>
这样,就建立了3个虚拟主机,对应的站点域名分别是、bbs.ixdba.net、mail.ixdba.net,接下来的工作就是将这3个站点域名对应的IP全部解析到一台web服务器即可。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wywjjz.html