查看文章 |
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> 注意:也可以建立一个用户组文件,然后在这里指定用户组 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。 |
最近读者: