apache为网络管理员提供了丰富多彩的功能,包括目录索引、目录别名、内容协商、可配置的http错误报告、cgi程序的setuid执行、子进程资源管理、服务器端图象映射、重写url、url拼写检查以及联机手册man等。也就是说,如果您在linux server上成功安装配置了apache之后,您的计算机也将随着apache的生效而摇身一变,成为一台名副其实的web server,这种变化的确是激动人心的。
在internet时代,外部主页的发布已经成为树立公司形象的一个重要手段,而内部主页也成为公司管理的主要方式。但是,要想实现这些功能,首先应该把我们的linux server配置成为一台强大的web server。本章将详细介绍如何配置apache服务器。希望各位同仁能够通过阅读本片文章达到理论实践双丰收的目的,在很短的时间里迅速成为一名出色的网络管理员。
1.2 所需资源
1.2.1 所需包
redhat6.2 服务器安装
1.2.2 所需配置文件
/etc/httpd/conf/httpd.conf 系统自带,管理员配置
/etc/httpd/conf/access.conf 系统自带,不需要修改
/etc/httpd/conf/srm.conf 系统自带,不需要修改
1.3 配置方案
/etc/httpd/conf/httpd.conf
说明:apache主配置文件
源文件:
servertype standalone
#定义webserver的启动方式为standalone,以增强其对大量访问的及时响应性
serverroot “/etc/httpd”
#指定包含httpd服务器文件的目录
lockfile /var/lock/httpd.lock
pidfile /var/run/httpd.pid
scoreboardfile /var/run/httpd.scoreboard
timeout 300
#响应超时量,单位为秒
keepalive on
#允许用户建立永久连接
maxkeepaliverequests 100
keepalivetimeout 15
minspareservers 5
#要保留的空闲服务器进程的最小值
maxspareservers 20
#要保留的空闲服务器进程的最大值
startservers 8
#系统启动时的守护进程数
maxclients 150
#所能提供服务的最大客户端编号,大于它的部分被放入请求队列
maxrequestsperchild 100
loadmodule vhost_alias_module modules/mod_vhost_alias.so
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
loadmodule referer_log_module modules/mod_log_referer.so
loadmodule mime_module modules/mod_mime.so
loadmodule negotiation_module modules/mod_negotiation.so
loadmodule status_module modules/mod_status.so
loadmodule info_module modules/mod_info.so
loadmodule includes_module modules/mod_include.so
loadmodule autoindex_module modules/mod_autoindex.so
loadmodule dir_module modules/mod_dir.so
loadmodule cgi_module modules/mod_cgi.so
loadmodule asis_module modules/mod_asis.so
loadmodule imap_module modules/mod_imap.so
loadmodule action_module modules/mod_actions.so
loadmodule userdir_module modules/mod_userdir.so
loadmodule alias_module modules/mod_alias.so
loadmodule rewrite_module modules/mod_rewrite.so
loadmodule access_module modules/mod_access.so
loadmodule auth_module modules/mod_auth.so
loadmodule anon_auth_module modules/mod_auth_anon.so
loadmodule db_auth_module modules/mod_auth_db.so
loadmodule digest_module modules/mod_digest.so
loadmodule proxy_module modules/libproxy.so
loadmodule expires_module modules/mod_expires.so
loadmodule headers_module modules/mod_headers.so
loadmodule usertrack_module modules/mod_usertrack.so
loadmodule setenvif_module modules/mod_setenvif.so
loadmodule perl_module modules/libperl.so
loadmodule php3_module modules/libphp3.so
clearmodulelist
addmodule mod_vhost_alias.c
addmodule mod_env.c
addmodule mod_log_config.c
addmodule mod_log_agent.c
addmodule mod_log_referer.c
addmodule mod_mime.c
addmodule mod_negotiation.c
addmodule mod_status.c
addmodule mod_info.c
addmodule mod_include.c
addmodule mod_autoindex.c
addmodule mod_dir.c
addmodule mod_cgi.c
addmodule mod_asis.c
addmodule mod_imap.c
addmodule mod_actions.c
#addmodule mod_speling.c
addmodule mod_userdir.c
addmodule mod_alias.c
addmodule mod_rewrite.c
addmodule mod_access.c
addmodule mod_auth.c
addmodule mod_auth_anon.c
addmodule mod_auth_db.c
addmodule mod_digest.c
addmodule mod_proxy.c
addmodule mod_expires.c
addmodule mod_headers.c
addmodule mod_usertrack.c
addmodule mod_so.c
addmodule mod_setenvif.c
addmodule mod_perl.c
addmodule mod_php3.c
port 80
#定义服务器所使用的tcp的端口号
user nobody
group nobody
#以上两行是分配给httpd的新用户的文件权限,出于安全的考虑把
它们的权限设置成为最低。
serveradmin root@weboa.com.cn
#设置web管理员的邮件地址
servername weboa
#定义客户端从服务器读取数据时返回给客户端的主机名,其缺省值
是localhost,第一次安装linux的时候经常这里出错。
documentroot “/home/weboa/jakarta-tomcat/webapps/weboa”
#设置所有apache文档的根目录,比如说,用户对
http://www.weboa.com.cn/index.html的访问请求,apache对它
的响应是/home/weboa/jakarta-tomcat/webapps/weboa/index.html
options followsymlinks
allowoverride none
options indexes includes followsymlinks
allowoverride none
order allow,deny
allow from all # 允许所有人访问
userdir public_html
directoryindex index.html index.htm index.shtml index.cgi
#设置多种成功访问主页的方式,为的是提高系统的容错性
accessfilename .htaccess
order allow,deny
deny from all
usecanonicalname on
typesconfig /etc/mime.types
defaulttype text/plain
mimemagicfile share/magic
hostnamelookups off
errorlog /usr/httpd/log/error_log
loglevel warn
#定义那些错误类型被记录到错误日志中
logformat “%h %l %u %t \”%r\” %>s %b \”%{referer}i\” \”%{user-agent}i\”” combined
#所有的logformat都用来定义日志中的条目
logformat “%h %l %u %t \”%r\” %>s %b” common
logformat “%{referer}i -> %u” referer
logformat “%{user-agent}i” agent
customlog /usr/httpd/log/access_log common
serversignature on
alias /icons/ “/home/httpd/icons/”
#定义虚拟主机目录与系统目录的对应关系
options indexes multiviews
allowoverride none
order allow,deny
allow from all
scriptalias /cgi-bin/ “/home/httpd/cgi-bin/”
#定义cgi目录
allowoverride none
options execcgi
order allow,deny
allow from all
indexoptions fancyindexing
addiconbyencoding (cmp,/icons/compressed.gif) x-compress x-gzip
addiconbytype (txt,/icons/text.gif) text/*
addiconbytype (img,/icons/image2.gif) image/*
addiconbytype (snd,/icons/sound2.gif) audio/*
addiconbytype (vid,/icons/movie.gif) video/*
addicon /icons/binary.gif .bin .exe
addicon /icons/binhex.gif .hqx
addicon /icons/tar.gif .tar
addicon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
addicon /icons/compressed.gif .z .z .tgz .gz .zip
addicon /icons/a.gif .ps .ai .eps
addicon /icons/layout.gif .html .shtml .htm .pdf
addicon /icons/text.gif .txt
addicon /icons/c.gif .c
addicon /icons/p.gif .pl .py
addicon /icons/f.gif .for
addicon /icons/dvi.gif .dvi
addicon /icons/uuencoded.gif .uu
addicon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
addicon /icons/tex.gif .tex
addicon /icons/bomb.gif core
addicon /icons/back.gif ..
addicon /icons/hand.right.gif readme
addicon /icons/folder.gif ^^directory^^
addicon /icons/blank.gif ^^blankicon^^
defaulticon /icons/unknown.gif
readmename readme
headername header
addencoding x-compress z
addencoding x-gzip gz tgz
addlanguage en .en
addlanguage fr .fr
addlanguage de .de
addlanguage da .da
addlanguage el .el
addlanguage it .it
languagepriority en fr de
addtype application/x-httpd-php3 .php3
addtype application/x-httpd-php3-source .phps
addtype application/x-httpd-php .phtml
addtype application/x-tar .tgz
addtype text/html .shtml
addhandler server-parsed .shtml
addhandler imap-file map
browsermatch “realplayer 4\.0” force-response-1.0
browsermatch “java/1\.0” force-response-1.0
browsermatch “jdk/1\.0” force-response-1.0
alias /perl/ /home/httpd/perl/
sethandler perl-script
perlhandler apache::registry
options +execcgi
alias /doc/ /usr/doc/
order deny,allow
deny from all
allow from localhost
options indexes followsymlinks
include /etc/httpd/conf/tomcat-apache.conf
alias /netcard “/home/weboa/jakarta-tomcat/webapps/weboa/net_card”
options indexes followsymlinks
allow from all
cachesize 5
#定义缓存区大小,以kb为单位。可以根据需要和硬盘空间大小进行设置
cachegcinterval 4
#每隔4小时检查缓存区,如果已经超过cachesize就删除文件
cachemaxexpire 24
#http文件最多被保持24小时
cachelastmodifiedfactor 0.1
#定义http文件失效期,缺省是0.1 ,意思是说失效期=离最近一次修改的时间x,比如离最近一次修改的时间是5小时,那么失效期就是5×0.1=0.5小时
cachedefaultexpire 1
#这一指令提供一个缺省的时间(小时)来销毁缓存的文件,这些文件的最后更改时间不详。cachemaxexpire 命令不覆盖这一设置
## 以下是如何对一个目录进行登陆控制的方法 ## 在/etc/httpd/conf/httpd.conf中添加以下内容:
alias /weboa/ “/home/weboa/”
options indexes multiviews
allowoverride authconfig
order allow,deny
allow from all
在/home/weboa目录下建立.htaccess文件
authname “shared files”
authtype basic
authuserfile /etc/httpd/conf/passwd
require valid-user
在/etc/httpd/conf目录下执行命令生成认证文件
htpasswd -c thj thj #创建认证文件和第一个名和密码
htpasswd weboa weboa #添加其他用户名和密码
### 以下是做虚拟主机的实现方法 ###
需要在/etc/httpd/conf/httpd.conf中添加下列内容:
alias /webadmin/ “/home/weboa/webadmin/html/”
options indexes multiviews
allowoverride none
order allow,deny
allow from all
namevirtualhost 192.168.0.1 #虚拟域名的dns服务器
serveradmin root@weboa.com.cn #网管邮件地址
documentroot /home/weboa/webadmin/html/ #服务器页面目录
servername webadmin.weboa.com.cn #服务器名称
需要在/var/named/name2ip.conf中添加的内容:
webadmin in a 192.168.0.1
1.4 测试及管理办法
1.4.1 测试方法
每当管理员更改了apache的设置之后,都应执行 /etc/rc.d/init.d/httpd restart使得更改生效。
1.4.2 管理方法
apache提供大量的日志文件,当apache出错的时候,管理员可以根据htppd.conf中的errorlog定义的路径来诊断。具体方法是:
tail -f /var/log/httpd/apache/error_log
(作者:汤海京)