阿帕奇服务器配置方案
apach 服务器配置大全 (1)2011-09-16 23:02:00 www.hackbase.com 来源:一、资料参考与准备: Apache 软件包的组成 /etc/httpd/c
apach 服务器配置大全 (1)
2011-09-16 23:02:00 www.hackbase.com 来源:
一、资料参考与准备: Apache 软件包的组成 /etc/httpd/conf/*
一、资料参考与准备:
Apache 软件包的组成
/etc/httpd/conf/*
主配置文件位置
/etc/rc.d/init.d/httpd
启动脚本
/home/httpd/html
html 文档的主目录
/home/httpd/html/manual/*
html 格式的帮助文档
/home/httpd/icons/*
用在html 网页中的图标文件
/usr/sbin/*
-/usr/sbin/htpasswd
建立和更新apache 用户的程序
-/usr/sbin/httpd
/var/log/httpd/*
日志文件
主配置文件httpd.conf 的常用指令解释
ServerType standalone
#设置服务器的形式是单独启动(standalone ),还是借由互联网络伺服程序inetd 来启动。一般使用前者。
ServerRoot "/usr/local/apache"
#设置服务器的Home 目录,用来存放服务器的设置文件、错误文件、记录文件。 PidFile logs/httpd.pid
#程序启动时,把父进程httpd 的进程号(process id)存在这个文件中。这个文件名可以配合PidFile 指令加以改变。
ScoreBoardFile logs/apache_status
#设置网络上WWW 服务器一些执行程序的记录文件。
#ResourceConfig conf/srm.conf
#AccessConfig conf/access.conf
#这两个文件的内容已经包含在httpd.conf 文件中了。
Timeout 300
#如果客户端300秒还没有连上,或者服务器300秒还没有传送数据到客户端,就会自动断线。 KeepAlive On
#设置是否支持续传功能。
,MaxKeepAliveRequests 100
#设置支持续传功能的数目。数目越多则浪费的硬盘空间越多。设置为0则不止持续传。 KeepAliveTimeout 15
#如果该为使用者在15秒后还没有向服务器发出要求,则他在不能续传。
MaxRequestsPerChild 0
#设置同时间内child process数目。
TtesteadsPerChild 50
#设置服务器使用进程的数目。
#Listen 3000
#Listen 12.34.56.78:80
#允许使用其它的Port 或IP 访问服务器。此例中Port 为3000,IP 为12.34.56.78:80。 #BindAddress *
#设置Apache 监听所有的IP ,也可以具体的指定。
#LoadModule anon_auth_module modules/ApacheModuleAuthAnon.dll
……
#打开当前未激活预定以的模块。
#ExtendedStatus On
#设置服务器产生的状态信息。
Port 80
#设置服务器使用的Port 。
ServerAdmin you@your.address
#设置服务器管理者的E-Mail 地址。
#ServerName new.host.name
#服务器的主机名。如果你有固定的IP 地址,则不需要设置。
DocumentRoot "/usr/local/apache/htdocs"
#设置存放站点html 文件的目录。
Options FollowSymLinks
AllowOverride None
#设置/目录的指令。具体地说明:
Option :定义在目录内所能执行的操作。
None :表示只能浏览,
FollowSymLinks :允许页面连接到别处,
ExecCGI :允许执行CGI ,
MultiViews :允许看动画或是听音乐之类的操作,
Indexes :允许服务器返回目录的格式化列表,
Includes :允许使用SSI 。这些设置可以复选。
All :则可以做任何事,但不包括MultiViews 。
AllowOverride :加None 参数表示任何人都可以浏览该目录下的文件。
另外的参数有:FileInfo 、AuthConfig 、Limit 。
UserDir public_html
#定义使用者存放html 文件的目录。
DirectoryIndex index.html
,#定义首先显示的文件。
AccessFileName .htaccess
#定义每个目录访问控制文件的名称。
#CacheNegotiatedDocs
定义代理服务器不要Cache 你的页面。不建议使用。
UseCanonicalName On
#服务器使用ServerName 指定的服务器名和Port 指定的端口地址。
二、安装与配置
apache 安装
$ tar xvf httpd-*.tar
$ ./configure --prefix=PREFIX
$ make Install
$ make install
常用关键配置
·vi /etc/httpd/conf/httpd.conf
Listen 80
Include conf.d/*.conf
ServerRoot "/etc/httpd"
DocumentRoot "/var/www/html"
ServerAdmin root@mai.xuanfei.net
ServerName 10.45.63.188:80
用户认证
假如某一目录下的文件如/home/ftp/pub需要做到用户认证 创建认证用户
@htpasswd –c /*/.password xuanfei
创建认证组
@vi /*/.group
xuanfei-group:xuanfei xuanfei1
一。 基本的Apache 用户认证方法:
在httpd.conf 中加入下面的行
<>
options indexes followsymlinks
allowoverride authconfig
order allow,deny
allow from all
<>
或者加到 /etc/httpd/conf.d/ 新建个文件名为。conf 结尾的配置文件 〈Directory /home/ftp/pub>
Options Indexes
AllowOverride AuthConfig
order allow,deny
allow from all
〈/Directory>
用在目录/home/ftp/pub下放文件。htaccess ,内容如下:
,authname "shared files"
authtype basic
authuserfile /*/.password
require valid-user
#require group xuanfei-group //接收组所以用户
#requirre user xuanfei //接收xuanfei 单个用户
用随Apache 来的程序htpasswd 生成文件/etc/.passwd,每行一个用户名:密码 只要能提供正确的用户名和密码对,就允许登录访问,这是针对任何地址来的 请求都要求提供用户名和密码认证。
二。针对部分网段或地址要求认证。
若公司LAN 所在网段为10.45.63.0/24,且有一防火墙专线接入Internet,
内部网卡的地址为10.45.63.1/32,则现在希望所有通过拨本地633通过
防火墙上的apache 反向代理向LAN 上的另一WWW 服务器访问时需要认证,而本地 LAN 上的用户不需认证。可以在httpd.conf 中放入:
〈Directory /home/ftp/pub>
Options Indexes FollowSymLinks
AllowOverride AuthConfig
order deny,allow
deny from 10.45.63.1
〈/Directory>
且在/home/ftp/pub/.htaccess中放入:
AuthName "shared files"
AuthType Basic
AuthUserFile /etc/.passwd
require valid-user
satisfy any
三。对同一目录及其下的子目录有不同的权限,仅某些人可以存取一目录下的 子目录。
如有一目录/home/ftp/pub/host,有三个用户user1,user2,user3都需要用户名 和密码进入/home/ftp/pub,但仅user1,user2能进入/home/ftp/pub/host.则
放下面的行到httpd.conf
〈Directory /home/ftp/pub>
Options Indexes
AllowOverride AuthConfig
order allow,deny
allow from all
〈/Directory>
〈Directory /home/ftp/pub/host>
Options Indexes
AllowOverride AuthConfig
order allow,deny
allow from all
〈/Directory>
且看/home/ftp/pub/.htaccess为:
,AuthName "shared files"
AuthType Basic
AuthUserFile /etc/.passwd
require valid-user
且看/home/ftp/pub/host/.htaccess
AuthName "shared files"
AuthType Basic
AuthUserFile /etc/.passwd
AuthGroupFile /etc/.hostgroup
require group manager
且文件/etc/.passwd内容为:
user1:passwd1
user2:passwd2
user3:passwd3
且文件/etc/.hostgroup内容为:
manager: user1 user2
虚拟目录
#vi /etc/httpd/conf.d/xuanfei.conf
Alias /xuanfei /home/xuanfei
(设置虚拟目录属性)
Options Indexes MultiViews
(当没有主页时以是否显示文件及文件夹)
AllowOverride None
Order allow,deny
Allow from all
虚拟主机设置
简介:这里说的虚拟主机是指在一台机器上仅运行一个httpd 后台程序 支持多个Apache 服务器,如在公司财务部门有一台web 服务器,名为 account.xuanfei.net, 同时又想为host 部门建立网站,网站内容也 放在该机器上,通过host.xuanfei.net 访问,这就要用到虚拟主机 设置。
设置Apache 虚拟主机通常有两种方案
一、基于IP 的虚拟主机
这种方式需要在机器上设置IP 别名,象上面的例子,在一台机器的 网卡上绑定多个IP 地址去服务多个虚拟主机。
若该机器的IP 地址为10.45.63.2(account.xuanfei.net ), 首先
你要设置IP 别名(假设用10.45.63.4作为其别名IP )。加下面的行到 /etc/rc.d/rc.local,确保每次启动后自动运行。
#/sbin/ifconfig eth0:0 10.45.63.4 netmask 255.255.255.0 broadcast 10.45.63.255 up
#/sbin/route add -host 10.45.63.4 eth0:0
然后你需要设置/etd/httpd/conf/httpd.conf文件:
ServerAdmin root@xuanfei.net
,DocumentRoot /home/httpd/host.xuanfei.net
ServerName host.xuanfei.net
ErrorLog /var/log/httpd/host.xuanfei.net/error_log
TransferLog /var/log/httpd/host.xuanfei.net/access_log
然后分别创建目录
/home/httpd/host.xuanfei.net,
/var/log/httpd/host.xuanfei.net
, 放相应的网站内容到目录/home/httpd/host.xuanfei.net下即可,并确保 你内部的DNS 指定host.xuanfei.net 的A 记录到IP 地址10.45.63.4 。
注:这种基于IP 的虚拟主机有一个缺点,就是你需要更多的IP 地址去服务各自的 虚拟主机,如果你仅仅有一个IP 地址,那么你将可以考虑用基于名字的虚拟主机 方案。
二、基于名字的虚拟主机:
它的优势就是不需要更多的IP 地址,容易配置,不需要其它软硬件,现代的 浏览器大多都支持这种方式。与基于IP 的虚拟主机一样,你需要编辑文件 /etc/httpd/conf/httpd.conf
NameVirtualHost 10.45.63.2
ServerAdmin root@xuanfei.net
DocumentRoot /home/httpd/host.xuanfei.net
ServerName host.xuanfei.net
ErrorLog /var/log/httpd/host.xuanfei.net/error_log
TransferLog /var/log/httpd/host.xuanfei.net/access_log
ServerAdmin root@xuanfei.net
DocumentRoot /home/httpd/test.xuanfei.net
ServerName test.xuanfei.net
ErrorLog /var/log/httpd/test.xuanfei.net/error_log
TransferLog /var/log/test.xuanfei.net/access_log
注: 你需要加NameVirtualHost 指示在最前面,下面依次为各个虚拟主机, 为了让它工作,你需要把host.xuanfei.net, test.xuanfei.net的DNS
都指向IP 地址10.45.63.2
上面的两种都将工作,如果是在外部网段,在互联网上提供WWW 服务,你可能 没有足够的真实IP 地址来支持多个虚拟主机,便可用基于名字的虚拟主机方案, 若是在内部网段上,你有较多的内部保留IP 地址,将没有太大的区别。 NameVirtualHost 11.22.33.44 ; 在这个IP 地址接收虚拟主机的服务
tualHost 111.222.33.44>
ServerName www.xuanfei1.com
DocumentRoot /www/xuanfei1
,ServerName www.xuanfei2.com
DocumentRoot /www/xuanfei2
三、基于端口的虚拟主机:
ServerName www.xuanfei1.com
DocumentRoot /www/xuanfei1
ServerName www.xuanfei2.com
DocumentRoot /www/xuanfei2
此种方法应用相对没那么方便!所以相对应用也少点!不同之处就是要在其域名或者IP 后面添加其端口。
基于CGI 的配置
要让CGI 程序能正常运作,必须配置Apache 以允许CGI 的执行,其方法有多种。 ScriptAlias
ScriptAlias 指令使Apache 允许执行一个特定目录中的CGI 程序。当客户端请求此特定目录中的资源时,Apache 假定其中文件都是CGI 程序并试图运行。
ScriptAlias 指令形如:
ScriptAlias /cgi-bin/ /usr/local/apache/cgi-bin/
如果Apache 被安装到默认的位置,默认的配置文件httpd.conf 中则会有上述配置。ScriptAlias 指令定义了映射到一个特定目录的URL 前缀,与Alias 指令非常相似,两者一般都用于指定位于DocumentRoot 目录以外的目录,其区别是ScriptAlias 又多了一层含义,即其URL 前缀中任何文件都被视为CGI 程序。所以,上述例子会指示Apache ,/cgi-bin/应该指向/usr/local/apache/cgi-bin/目录,且视之为CGI 程序。
举例,如果有URL 为http://www.example.com/cgi-bin/test.pl的请求,Apache 会试图执行/usr/local/apache/cgi-bin/test.pl文件并返回其输出。当然,这个文件必须存在而且可执行,并以特定的方法产生输出,否则Apache 返回一个出错消息。
ScriptAlias 目录以外的CGI
由于安全原因,CGI 程序通常被限制在ScriptAlias 指定的目录中,如此,管理员就可以严格地控制谁可以使用CGI 程序。但是,如果采取了恰当的安全方法措施,则没有理由不允许其他目录中的CGI 程序运行。比如,你可能希望用户在UserDir 指定的宿主目录中存放页面,而他们有自己的CGI 程序,但无权存取cgi-bin 目录,这样,就产生了运行其他目录中CGI 程序的需求。
用Options 显式地允许CGI 的执行
可以在主服务器配置文件中,使用Options 指令显式地允许特定目录中CGI 的执行:
Options ExecCGI
上述指令使Apache 允许CGI 文件的执行。另外,还必须告诉服务器哪些文件是CGI 文件。下面的AddHandler 指令告诉服务器所有带有cgi 或pl 后缀的文件是CGI 程序: AddHandler cgi-script cgi pl
,.htaccess 文件
.htaccess 文件是针对目录进行配置的一种方法。Apache 在提供一个资源时,会在此资源所在目录中寻找。htaccess 文件,如果有,则使其中的指令生效。AllowOverride 指令决定了。htaccess 文件是否有效,它指定了哪些指令可以出现在其中,或者根本不允许使用。为此,需要在主服务器配置中如此配置:
AllowOverride Options
在。htaccess 文件中,需要如此配置:
Options ExecCGI
以使Apache 允许此目录中CGI 程序的执行。
从网络访问CGI 程序,浏览器中可能会发生四种情况:
CGI 程序的输出
太好了!这说明一切正常。
CGI 程序的源代码或者一个"POST Method Not Allowed"消息
这说明Apache 没有被正确配置以执行CGI 程序,重新阅读configuring Apache 看看遗漏了什么。
一个以"Forbidden" 开头的消息
这说明有权限问题。参考Apache error log和下面的文件的权限。
一个"Internal Server Error"消息
查阅Apache error log ,可以找到CGI 程序产生的出错消息"Premature end of script headers" 。对此,需要检查下列各项,以找出不能产生正确HTTP 头的原因。
文件的权限
记 住,服务器不是以你的用户身份运行的,就是说,在服务器启动后,拥有的是一个非特权用户的权限-通常是``nobody''或者``www'' -而需要更大的权限以允许文件的执行。通常,给予``nobody''足够的权限以执行文件的方法是,对文件赋予everyone execute权限: 基于PERL 的配置
先用perl -v命令检查是否已安装了perl, 如果不能出现版本号,先安装perl
进入apache 配置文件,如果要运行perl 写的cgi 程序,写上:ScriptAlias /cgi-bin/ "cgi-bin所在目录" ,linux 的cgi-bin 目录默认在/var/www/cgi-bin/;如果要运行。pl 文件,则加上: AddHandler cgi-script .pl
修改/etc/http/conf.d/perl.conf文件,将以下内容前的#号去掉
Alias /perl /var/www/perl
Sethandler perl-script
Perresponsehandler modperl::registry
Perloptions parseheaders
ptions ExecCGI
基于JSP 的配置
jakarta-tomcat-4.0下载地址:
安装步骤: JDK: 1)将安装程序复制到 /usr/local目录下 2)执行命令:
,./j2sdk-1_4_2_01-linux-i586.bin
解压后得到目录j2sdk-1.4.2_01,将目录名改为j2sdk-1.4.2,不然后面的操作会无效。
3)依次执行下列命令:
ln -s j2sdk-1.4.2 jdk
ln -s jdk/jre jre
4)设置环境变量
vi /etc/profile
加入如下内容:
export JAVA_HOME=/usr/local/jdk
export CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
PATH=$PATH:/usr/local/j2sdk1.4.2/bin
5)测试JDK 是否安装成功
cd /etc
javac
如果出现关于javac 的使用说明,表示安装成功。
TOMCAT:
1)将安装程序复制到 /usr/local目录下
2)执行命令:
tar -zxvf jakarta-tomcat-5.0.19.tar.gz
解压后得到目录jakarta-tomcat-5.0.19
3)设置环境变量
vi /etc/profile
加入如下内容:
export TOMCAT_HOME=foo/tomcat
4)进入 /usr/local/jakarta-tomcat*/bin
vi shutdown.sh
添加 export JAVA_HOME=/usr/jdk
export PATH=$PATH:$JAVA_HOME/bin export CLASSPATH=$JAVA_HOME/lib 执行:
./startup.sh start
启动tomcat 服务器
5)测试是否安装成功
用浏览器浏览http://localhost:8080
如果出现tomcat 的欢迎页面,表示安装成功。
Apache 和tomcat 的整合
安装和配置mod_jk2
#cp etc/httpd/conf.d/jk2.conf /etc/httpd/conf.d/
#cp usr/lib/httpd/modules/* /usr/lib/httpd/modules/
#cp –a usr/share/doc/mod_jk2/ /usr/share/doc/mod_jk2/
#cp –a var/www/manual/mod_jk2/ /var/www/manual/mod_jk2/ b)、
编辑mod_jk2配置文件 #vi /etc/httpd/conf/workers2.properties 在末尾加入以下语句:
[uri:/*.jsp] worker=ajp13:localhost:8009 c )、配置Tomcat Tomcat 默认的主目录/usr/local/tomcat/webapps/ROOT/ 需要设置和 Apache 的主目录一致;
编辑T omcat 主配置文件:
,#vi /usr/local/tomcat/conf/server.xml
找到
重新启动Apache 和T omcat #/etc/init.d/httpd restart #/usr/local/tomcat/bin/shutdown.sh#/usr/local/tomcat/bin/startup.sh
测试Apache 和T omcat 整合 在Apache 主目录(/var/www/html/)中建立Test.jsp 文件内容如下: Hello! Welcom to here The time is <= new java.util.Date() > 在浏览器中输入http://10.45.63.35/test.jsp 出现下面信息页面,代表Apache 和Tomcat 整合运行环境配置成功。
三、启用与测试
启动apache
[root@localhost]#/etc/rc.d/init.d/httpd start
关闭apache
[root@localhost]#/etc/rc.d/init.d/httpd stop
重新启动apache
[root@localhost]#/etc/rc.d/init.d/httpd restart
在浏览器输入:http://www.xuanfei.net
四、小结
Apache 慢慢地已经成为Internet 上最流行的Web 服务器软件了。在所有的Web 服务器软件中,Apache 占据绝对优势,远远领先排名第二的Microsoft IIS
本问还很多相关的安全配置 性能优化 负载均衡等等多方面还未涉及,这只是个开始,望日后继续努力更新!本文网上众多网友的文章整合而成,如以上内容有误或有不足之处,望朋友能给予意见或者建议!谢谢:)