百度空间 | 百度首页 
 
查看文章
 
apache 安装总结
2007-06-03 13:27
一、系统默认安装
1、Red Hat默认的是/etc/httpd,配置文件在/etc/httpd/conf目录下,页面文件在/home/httpd目录下。
2、 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
http服务器程序
/var/log/httpd/*
日志文件

3、Apache服务器的启动
/etc/rc.d/init.d/httpd start(reload/restart/stop)
    使其自动运行
ntsysv
4、Apache服务器的配置httpd.conf
     
ServerType standlone/inetd
服务器的运行方式
Port 80
在standlone方式下监听的端口号
User nobody
进程运行的属主
Group nobody
进程运行的属组
ServerAdmin admin@localhost
管理员信箱
ServerRoot "/home/httpd/"
服务器文件位置
ServerName httpserver
服务器名称
Timeout 300
设置服务器和客户端的连接超时时间
             MaxClient 300
允许同时连接的客户数
ProxyRequests on
允许充当proxy
DocumentRoot "/home/httpd/html"
提供服务器文档服务的根目录
UserDir public_html
服务器上用户自己主页所在目录
DirectoryIndex index.html
目录索引文件
AccessFileName .htaccess
在每个目录中包含访问控制信息的文件名
Alias /icons/ "/home/user/icons/"
为不在DocumentRoot之下的文档建立别名
<VirtualHost></VirtualHost>
<Directory></Directory>

5.目录访问权限控制
----
通过修改httpd.conf文件中的Directory项来设置
Ex:
<Directory "/home/httpd/html/aa">
Options Indexes
AllowOverride None
order allow,deny
allow from all
</Directory>
Options指令
--控制一个目录的访问特性
-None:
-All:
-ExecCGI:可以执行cgi脚本
      -Indexes:访问一个无索引文件的目录时,返回一个文件
   列表
AllowOverride指令
--".htaccess"文件中哪些设置允许覆盖先前的设置
-None:不读取.htaccess
-Limit:覆盖控制主机访问的指令(allow,deny)
         -AuthConfig:允许覆盖跟认证有关指令 (AuthType,AuthName)
order指令
控制处理allow和deny指令的顺序
Ex:
order allow,deny
deny from all
allow from host11
allow指令
对于一个目录来说,allow指令设置允许哪些主机访问
-all:所有主机
-域名:eloo.com
-一个完整IP:192.168.0.1
-网络号码/子网掩码:192.168.0.0/255.255.255.0
-网络号码/nnn:192.168.0.0/24
deny指令
对于一个目录来说,allow指令设置禁止哪些主机访问
-all:所有主机
-域名:eloo.com
-一个完整IP:192.168.0.1
-网络号码/子网掩码:192.168.0.0/255.255.255.0
-网络号码/nnn:192.168.0.0/24
  
6.Apache服务器的用户认证
功能:只有合法的帐号名和密码才能访问到指定目录的内容
1.建立用户数据库
   格式:lpeng:BQ5DFS3%#$%
一般放在DocumentRoot以外的地方
#htpasswd -bc /etc/httpd/users user1 1234
2.使用用户数据库
在要保护的目录中建立".htaccess"文件
Ex:
AuthName "会员区"
AuthType Basic
AuthUserFile /etc/httpd/users
require valid-user(requrie user <username1&gt
   注意:也可以建立一个用户组文件,然后在这里指定用户组
vi /etc/httpd/groups
teacher:jacky lpeng
Ex:
AuthName "会员区"
AuthType Basic
AuthGroupFile /etc/httpd/users
require group <group1>
另一种情况:
Ex:
AuthName "会员区"
AuthType Basic
AuthGroupFile /etc/httpd/users
require group <group1>
Allow from
Deny from
satisfy all //同时使用两种,都满足才可
satisfy any //符合一种即可

使用php+mysql数据库来实现用户认证

7.用户Web目录
Apache允许主机上的用户使用特定的目录存放用户自己的主页
http://hostname/~username/
一种方法
UserDir public_html
注意:此目录必须位于用户主目录下
另种方法
UserDir /home/httpd/*/httpd
8.虚拟主机
基于名字的虚拟主机
<VirtualHost 192.168.103.11>
   ServerAdmin webmaster@host.some_domain.com
          DocumentRoot /home/eloo/a
          ServerName a.eloo.com
          ErrorLog /home/eloo/logs/host.some_domain.com-error_log
          CustomLog /home/eloo/logs/host.some_domain.com-access_log common
   </VirtualHost>

二、指定目录安装
1、进入源代码的目录:
执行命令:(1)tar xvfz httpd-.tar.Z  
(2)cd httpd-
(3)./ configure --prefix=/usr/local/apache2 --enable-so --enable-rewrite
若需要进行ssl配置,
在rewrite后添加 \--enable-ssl --with-ssl=/usr/local/ssl --enable-proxy
若要用使用(MPM)worker --with –mpm=worker ,可以用--help
(4)make
(5) make install
2、包组成 :
   /usr/local/apache2/conf/httpd.conf
主配置文件位置
/usr/local/apache2/bin/
启动脚本
/usr/local/apache2/httpd/html
html文档的主目录
   /usr/local/apache2/httpd/html/manual/*
html格式的帮助文档
   /usr/local/apache2/httpd/icons/*
用在html网页中的图标文件
/usr/local/apache2/sbin/*
-/usr/sbin/htpasswd
建立和更新apache用户的程序
-/usr/sbin/httpd
http服务器程序
   /usr/local/apache2/log/
日志文件

    3、启动/停止apache命令:
Startup Apache: 进入目录/usr/local/apache/bin
                执行./apachectl start
Shutdown Apache:进入目录 /usr/local/apache/bin
                执行./ apachectl stop

4、Apache服务器的配置httpd.conf
配置目录在/usr/local/apache2/conf/..
在conf目录下有3个Apache的配置文件:
httpd.conf
access.conf
srm.conf
Apache启动时先调用httpd.conf,然后调用srm.conf,最后调用access.conf。但现代版本的Apache为避免管理和维护的混乱,已经改为将所有Apache的相关配置命令放在httpd.conf文件中,不再使用srm.conf和access.conf文件。虽然这两个文件仍然存在,但内容中没有任何配置命令,形同虚设。


httpd.conf文件分为以下3部分:
Global Environment
'Main' server configuration
Virtual Hosts

下面将讲述这3部分的用法和与安全相关的注意点。

4.5.1.1 Global Environment
ServerType standalone

用来指定Apache的启动方式:standalone和inetd。
standalone模式是Apache独立运行,也是默认的启动方式。
inetd模式是守护进程监听http的连接请求才启动httpd进程,请求完毕后就结束httpd进程,这样服务器负担很重。

ServerRoot "/usr/local/apache2"
Apache的目录,此处是存放配置、出错记录、日志文件的根目录。目录后面不要加“/”字符。

LockFile 接受串行锁文件的位置
   LockFile指令设置当AcceptMutex指令的值是fcntl或flock的时候,Apache使用的锁文件的位置。该指令通常保持它的默认值。改变默认值的主要原因是logs目录位于一个NFS文件系统上,因为锁文件必须位于本地磁盘上。主服务器进程的PID会自动添加到文件名后面。
PidFile /var/run/httpd.pid
指定记录Apache的父进程id的文件名及路径。
ScoreBoard /var/run/httpd.scoreboard
指定用于储存服务器进程处理信息的文件名和路径。
#ResourceConfig conf/srm.conf
#AccessConfig conf/access.conf
在标准的配置中,服务器启动时会处理这两个文件。因为现在的Apache只使用httpd.conf文件,摒弃了srm.conf和access.conf文件,所以这两行用“#”注释掉。

Timeout 300
设置超时时间。如果远程客户端超过300秒还没连上Apache Server,或者Apache Server超过300秒没有传送字节给客户端,就立即断开连接。

KeepAlive On
KeepAlive允许客户端的每个连接有多个请求,设为Off时此项无效。

MaxKeepAliveRequests 100
设置每次连接期间所允许的最大请求数目。设为0时表示允许无限制数目。设置数字越大,则服务器性能越高。

KeepAliveTimeout 15
设置等待同一个客户端的同一个连接发出下一个连接请求超过一定的时间就断线。

<IfModule worker.c>
StartServers         2
设置启动并初始化后启动服务进程的数目。
MaxClients         2000
对于线程型或者混合型的MPM(也就是beos或worker),MaxClients表示可以用于伺服客户端请求的最大线程数量。线程型的beos的默认值是50。对于混合型的MPM默认值是16(ServerLimit)乘以25(ThreadsPerChild)的结果。因此要将MaxClients增加到超过16个进程才能提供的时候,你必须同时增加ServerLimit的值。
ServerLimit        20
服务器允许配置的进程数上限
MinSpareThreads     50
MaxSpareThreads     200

ThreadLimit        200
每个子进程可配置的线程数上限
这个指令设置了每个子进程可配置的线程数ThreadsPerChild上限。任何在重启期间对这个指令的改变都将被忽略,但对ThreadsPerChild的修改却会生效。
使用这个指令时要特别当心。如果将ThreadLimit设置成一个高出ThreadsPerChild实际需要很多的值,将会有过多的共享内存被分配。如果将ThreadLimit和ThreadsPerChild设置成超过系统的处理能力,Apache可能无法启动,或者系统将变得不稳定。该指令的值应当和ThreadsPerChild可能达到的最大值保持一致。
对于mpm_winnt,ThreadLimit的默认值是1920;对于其他MPM这个值是64。
ThreadsPerChild     100
这个指令设置了每个子进程建立的线程数。子进程在启动时建立这些线程后就不再建立新的线程了。如果使用一个类似于mpm_winnt只有一个子进程的MPM,这个数值要足够大,以便可以处理可能的请求高峰。如果使用一个类似于worker有多个子进程的MPM,每个子进程所拥有的所有线程的总数要足够大,以便可以处理可能的请求高峰。
MaxRequestsPerChild 0
</IfModule>

worker的工作原理是,由主控制进程生成“StartServers”个子进程,每个子进程中包含固定的ThreadsPerChild线程数,各个线程独立地处理请求。同样,为了不在请求到来时再生成线程,MinSpareThreads和MaxSpareThreads设置了最少和最多的空闲线程数;而MaxClients设置了所有子进程中的线程总数。如果现有子进程中的线程总数不能满足负载,控制进程将派生新的子进程。

MinSpareThreads和MaxSpareThreads的最大缺省值分别是75和250。这两个参数对Apache的性能影响并不大,可以按照实际情况相应调节。

ThreadsPerChild是worker MPM中与性能相关最密切的指令。ThreadsPerChild的最大缺省值是64,如果负载较大,64也是不够的。这时要显式使用ThreadLimit指令,它的最大缺省值是20000。上述两个值位于源码树server/mpm/worker/worker.c中的以下两行:

#define DEFAULT_THREAD_LIMIT 64
#define MAX_THREAD_LIMIT 20000



这两行对应着ThreadsPerChild和ThreadLimit的限制数。最好在configure之前就把64改成所希望的值。注意,不要把这两个值设得太高,超过系统的处理能力,从而因Apache不起动使系统很不稳定。

Worker模式下所能同时处理的请求总数是由子进程总数乘以ThreadsPerChild值决定的,应该大于等于MaxClients。如果负载很大,现有的子进程数不能满足时,控制进程会派生新的子进程。默认最大的子进程总数是16,加大时也需要显式声明ServerLimit(最大值是20000)。这两个值位于源码树server/mpm/worker/worker.c中的以下两行:

#define DEFAULT_SERVER_LIMIT 16
#define MAX_SERVER_LIMIT 20000



需要注意的是,如果显式声明了ServerLimit,那么它乘以ThreadsPerChild的值必须大于等于MaxClients,而且MaxClients必须是ThreadsPerChild的整数倍,否则Apache将会自动调节到一个相应值(可能是个非期望值)。下面是笔者的worker配置段:

<IfModule worker.c>;
StartServers 3
MaxClients 2000
ServerLimit 25
MinSpareThreads 50
MaxSpareThreads 200
ThreadLimit 200
ThreadsPerChild 100
MaxRequestsPerChild 0
</IfModule>;




<IfModule prefork.c> 进程处理
StartServers       10
MinSpareServers    10
MaxSpareServers   20
设置最小的闲置服务处理程序的数目和最大的闲置服务处理程序的数目。如果实际数目少于MinSpareServers,则将增加处理程序;反之,如果实际数目超过MaxSpareServers,一些多余的处理程序将被杀掉。
ServerLimit      2000
MaxClients       1000
设置服务运行的总数量。一旦达到此数目,新来的客户端就被拒绝,所以该限制数目不能设得太小。
MaxClients指令设置了允许同时伺服的最大接入请求数量。任何超过MaxClients限制的请求都将进入等候队列,直到达到ListenBacklog指令限制的最大值为止。一旦一个链接被释放,队列中的请求将得到服务。
对于非线程型的MPM(也就是prefork),MaxClients表示可以用于伺服客户端请求的最大子进程数量,默认值是256。要增大这个值,你必须同时增大ServerLimit 。
MaxRequestsPerChild 10000
每个子进程在其生存期内允许伺服的最大请求数量
MaxRequestsPerChild指令设置每个子进程在其生存期内允许伺服的最大请求数量。到达MaxRequestsPerChild的限制后,子进程将会结束。如果MaxRequestsPerChild为"0",子进程将永远不会结束。
</IfModule>

在configure -with-mpm=worker后,进行make编译、make install安装。在缺省生成的httpd.conf中有以下配置段:

<IfModule worker.c>;
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>;



#Listen 3000
#Listen 12.34.56.78:80
Listen 80
设置Apache监听的连接端口或IP地址及端口,默认是80。

类别:各类服务 | 添加到搜藏 | 浏览() | 评论 (0)
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2009 Baidu