简洁的想法

 找回密码
 注册
搜索
查看: 502|回复: 2

apache 速成方法

[复制链接]
发表于 2008-3-17 10:59:59 | 显示全部楼层 |阅读模式
# This is a apache 2.2 configuration file, tested.
# made by 车里焖 最后更新2006-4-16  最新版本 aleng2006.blogcn.com
# /etc/httpd/conf/httpd.conf 可以用apachectl -f 指定另外的
# 我的目的是不用修改就能运行(此服务器)基本功能,简单改改就有深入功能。
# 相关命令
# httpd -t 对配置文件执行语法检查
# httpd -V 显示httpd的版本和编译参数
# ./httpd -l 察看本服务器已有的静态模块,默认 prefork---稳定性和兼容性好
# apachectl -k graceful 重新启动服务器,但不间断已存在的服务

# ----------------------------apache服务器设置-文件和目录--------------------------
AddDefaultCharset GB2312
DocumentRoot "/usr/local/apache2/htdocs"
<IfModule dir_module>
    DirectoryIndex    index.htm
</IfModule>

ServerRoot "/usr/local/apache2"
PidFile logs/httpd.pid
<IfModule mime_module>
   TypesConfig conf/mime.types
# 定义在哪里查询mime.types文件。
</IfModule>
MIMEMagicFile conf/magic
# 按照magic文件定义内容确定文件类型

<IfModule alias_module>
ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/"
</IfModule>
<Directory "/usr/local/apache2/cgi-bin">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
</Directory>

Alias /error/ "/var/www/error"

<Directory "/usr/local/apache2/htdocs">
  
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all

</Directory>
# 主目录权限=所有人访问

# ------------------apache服务器基本设置--------------------------------
# Listen 10.0.0.110:80
Listen 90

ErrorLog logs/error_log
# 错误日志
CustomLog logs/access_log common
# 访问日志
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
# 记录每个记录的格式,格式有combined(组合模式),common(普通模式),referer(交付模式),agent(代理模式)四种.
ServerAdmin admin@your-domain.com
Options +ExecCGI
# apache 服务器选项,默认允许全部
# +ExecCGI(允许cgi执行)
# +Indexes (允许显示目录)
#
DefaultType text/plain
# 当不能确定MIME类型时服务器提供的默认MIME类型。

# AddType application/x-httpd-php .php
# LoadModule php5_module modules/libphp5.so
# 这里是添加php 5支持的指令

# ------------------apache服务器性能设置--------------------------------
# prefork MPM
<IfModule prefork.c>
MaxClients 256
# 最大进程数,通过top命令计算出每个Apache进程平均消耗的内存,然后再为其它进程留出足够多的内存。
StartServers 6
# 启动时服务器启动的进程数
MinSpareServers 5
# 备用进程的最小数目
MaxSpareServers 99
# 备用进程的最大数目
MaxRequestsPerChild 10000
# 一个服务进程允许的最大请求数
</IfModule>

# worker MPM
# StartServers:服务器启动时的服务进程数目
# MaxClients:允许同时连接的最大用户数目
# MinSpareThreads:保有的最小工作线程数目
# MaxSpareThreads:允许保有的最大工作线程数目
# ThreadsPerChild:每个服务进程中的工作线程常数
# MaxRequestsPerChild:服务进程中允许的最大请求数目
<IfModule worker.c>
StartServers 3
MaxClients 256
MinSpareThreads 5
MaxSpareThreads 99
ThreadsPerChild 25
MaxRequestsPerChild 10000
</IfModule>

# WinNT MPM
# ThreadsPerChild:服务进程中工作线程常数
# MaxRequestsPerChild:服务进程允许的最大请求数
<IfModule mpm_winnt.c>


ThreadsPerChild 64
MaxRequestsPerChild 10000
</IfModule>

MaxKeepAliveRequests 500
# 一个持久链接中允许的最大请求数量
KeepAliveTimeout 20
# 持久链接中服务器在两次请求之间等待的秒数

HostnameLookups Off
# dns 反查关  
# ------------------apache服务器安全设置--------------------------------
User daemon
Group daemon

<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
    <IfModule speling_module>
   CheckSpelling on
  </IfModule>

</Directory>
# 这样,对文件系统的默认访问被禁止。

AccessFileName .htaccess
#  使所有目录无法使用.htaccess文件,明确指定可以使用的目录除外。

<Files ~ "^\.ht">
Order allow,deny
Deny from all
</Files>
# 防止.htaccess和.htpasswd文件被Web客户查看。

ExtendedStatus On
# 客户端可以得到apache服务器详细信息
ServerTokens Full
# 包含在HTTP回应头中的信息类型。
UserDir disabled
# 禁用 所有用户 类似 http://www.foo.com/~bob

# ------------------网站文件和目录的显示--------------------------------

# IndexOptions FancyIndexing VersionSort
# IndexOptions:控制server-generated目录列表显示特征。

# AddIcon* 指令告诉服务器不同扩展名的图象文件如何显示,
# 只适用于FancyIndexed指令

#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

# DefaultIcon 为那些没有显式定义图标的文件提供处理

IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t
# 目录索引忽略并且不包含在列表中的文件名集合,

# ------------------apache服务器错误应答设置--------------------------------

#
# <Directory "/usr/local/apache2/error">
# AllowOverride None
# Options IncludesNoExec
# AddOutputFilter Includes html
# AddHandler type-map var
# Order allow,deny
# Allow from all
# LanguagePriority en de es fr it nl sv
# ForceLanguagePriority Prefer Fallback
# </Directory>
#
# ErrorDocument 400 /error/HTTP_BAD_REQUEST.html.var
# ErrorDocument 401 /error/HTTP_UNAUTHORIZED.html.var
#  ErrorDocument 403 /error.php
# ErrorDocument 404 /error/HTTP_NOT_FOUND.html.var
# ErrorDocument 405 /error/HTTP_METHOD_NOT_ALLOWED.html.var
# ErrorDocument 408 /error/HTTP_REQUEST_TIME_OUT.html.var
# ErrorDocument 410 /error/HTTP_GONE.html.var
# ErrorDocument 411 /error/HTTP_LENGTH_REQUIRED.html.var
# ErrorDocument 412 /error/HTTP_PRECONDITION_FAILED.html.var
# ErrorDocument 413 /error/HTTP_REQUEST_ENTITY_TOO_LARGE.html.var
# ErrorDocument 414 /error/HTTP_REQUEST_URI_TOO_LARGE.html.var
# ErrorDocument 415 /error/HTTP_SERVICE_UNAVAILABLE.html.var
# ErrorDocument 500 /error/HTTP_INTERNAL_SERVER_ERROR.html.var
# ErrorDocument 501 /error/HTTP_NOT_IMPLEMENTED.html.var
# ErrorDocument 502 /error/HTTP_BAD_GATEWAY.html.var
# ErrorDocument 503 /error/HTTP_SERVICE_UNAVAILABLE.html.var
# ErrorDocument 506 /error/HTTP_VARIANT_ALSO_VARIES.html.var

BrowserMatch "Mozilla/2" nokeepalive
BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
BrowserMatch "RealPlayer 4\.0" force-response-1.0
BrowserMatch "Java/1\.0" force-response-1.0
BrowserMatch "JDK/1\.0" force-response-1.0

BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully
BrowserMatch "^WebDrive" redirect-carefully
BrowserMatch "^WebDAVFS/1.[012]" redirect-carefully
BrowserMatch "^gnome-vfs" redirect-carefully

# ------------------apache服务器动态模块设置--------------------------------

LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authn_dbm_module modules/mod_authn_dbm.so
LoadModule authn_anon_module modules/mod_authn_anon.so
LoadModule authn_dbd_module modules/mod_authn_dbd.so
LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule authz_dbm_module modules/mod_authz_dbm.so
LoadModule authz_owner_module modules/mod_authz_owner.so
LoadModule authz_default_module modules/mod_authz_default.so
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule dbd_module modules/mod_dbd.so
LoadModule dumpio_module modules/mod_dumpio.so
LoadModule ext_filter_module modules/mod_ext_filter.so
LoadModule include_module modules/mod_include.so
LoadModule filter_module modules/mod_filter.so
LoadModule deflate_module modules/mod_deflate.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule log_forensic_module modules/mod_log_forensic.so
LoadModule logio_module modules/mod_logio.so
LoadModule env_module modules/mod_env.so
LoadModule mime_magic_module modules/mod_mime_magic.so
LoadModule cern_meta_module modules/mod_cern_meta.so
LoadModule expires_module modules/mod_expires.so
LoadModule headers_module modules/mod_headers.so
LoadModule ident_module modules/mod_ident.so
LoadModule usertrack_module modules/mod_usertrack.so
LoadModule unique_id_module modules/mod_unique_id.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule version_module modules/mod_version.so
LoadModule mime_module modules/mod_mime.so
LoadModule dav_module modules/mod_dav.so
LoadModule status_module modules/mod_status.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule asis_module modules/mod_asis.so
LoadModule info_module modules/mod_info.so
LoadModule cgi_module modules/mod_cgi.so
LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule vhost_alias_module modules/mod_vhost_alias.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule dir_module modules/mod_dir.so
LoadModule imagemap_module modules/mod_imagemap.so
LoadModule actions_module modules/mod_actions.so
LoadModule speling_module modules/mod_speling.so
LoadModule userdir_module modules/mod_userdir.so
LoadModule alias_module modules/mod_alias.so
LoadModule rewrite_module modules/mod_rewrite.so

# ------------------apache服务器-虚拟主机-设置--------------------------

# NameVirtualHost *:80
# httpd -s 显示设置情况

# <VirtualHost *:80>
#    ServerAdmin webmaster@dummy-host.example.com
#    DocumentRoot /www/docs/dummy-host.example.com
#    ServerName dummy-host.example.com
#    ErrorLog logs/dummy-host.example.com-error_log
#    CustomLog logs/dummy-host.example.com-access_log common
# </VirtualHost>

# -----------------有用模块说明---------------------------
# mod_speling 模块中的 CheckSpelling on 可以忽略大小写查找文件
# mod_alias 模块中的 Redirect 指令 可以重定向一个web页面
# IndexOptions:控制server-generated目录列表显示特征。

# ------------------小技巧--------------------------------
# 不让别人浏览目录
# 去掉Options Indexes 这一行中的  Indexes
# rotatelogs 可以按日志大小回卷

转自:http://www.blogcn.com/u/11/92/aleng2006/blog/31851684.html
 楼主| 发表于 2008-3-21 17:05:41 | 显示全部楼层
改掉默认字符集
/etc/apache2/apache2.conf
#AddDefaultCharset ISO-8859-1
加上:
AddDefaultCharset off
 楼主| 发表于 2008-5-8 15:06:29 | 显示全部楼层

如何设置apache 最大连接数

prefork几乎还是目前的唯一MPM,我在下面主要还是讨论它的工作原理和相关指令调整。查看缺省生成的httpd.conf配置文件,会发现里面包含如下的配置段:
  1. StartServers 5
  2. MinSpareServers 5
  3. MaxSpareServers 10
  4. MaxClients 150
  5. MaxRequestsPerChild 0
复制代码

  prefork的工作原理是这样的:控制进程在最初建立StartServers个子进程后, 为了满足MinSpareServers设置的需要,创建一个进程,等待一秒钟,继续创建第二个,等待一秒钟,继而创建四个,如此按指数级增加创建的进程数,最多达到每秒32个,直到满足MinSpareServers设置的值为止,这也就是预派生(prefork)的由来。这种模式可以使得不必在请求到来时再产生新的进程,从而减小了系统开销以增加性能。
  MaxSpareServers 设置了最大的空闲进程数,如果空闲进程数大于这个值,Apache会自动kill某些多余进程。这个值一般不要设的过大,但如果设的比MinSpareServers小,Apache会自动把它调整为MinSpareServers+1。如果站点负载较大的话,可考虑同时加大MinSpareServers和MaxSpareServers。
  MaxRequestsPerChild设置的是每个子进程可以处理的请求数。每个子进程在处理了MaxRequestsPerChild个请求后将自动销毁。0意味着无限,即子进程永不销毁。虽然缺省设为0可以使每个子进程处理更多的请求,但如果设成非零值也有两点重要的好处:
1. 可防止意外的内存卸漏;
2. 在服务器负载下降的时侯会自动减少子进程数。
  因此,可根据服务器的负载来调整这个值,如果非零的话,笔者认为10000左右是比较合适的。事实上这个值对Apache的性能影响不是很大。
  MaxClients 是这些指令中最为重要的一个,它设定的就是Apache可以同时处理的请求,这是对Apache性能影响最大的参数.在我个人看来,缺省的150是远远不够的,如果请求总数已达到这个值(可通过ps –ef|grep httpd|wc –l来确认),那么下面的请求就要排队,直到某个已处理请求完毕。这就是为什么系统资源还剩下很多,而http访问却很慢的主要原因。系统管理员可以根据硬件配置和负载情况来动态调整这个值,虽然理论上这个值越大,可以处理的请求就越多,但Apache默认的限制是不能大于256。如果把这个值设为大于256那么Apache将无法起动。事实上,256对于负载稍重的站点也是很不够的。在Apache1.3中这是个硬限制,如果要加大这个值,必须在configure前手工修改源代码树下的src/include/httpd.h,查找256,会发现#define HARD_SERVER_LIMIT 256这行,把256改为你要增大的值如4000,然后重新编译Apache即可。我想这个方法稍有些经验的Apache系统管理员都知道,不过我相信在Apache2.0中知道如何加大这个值的人就不会太多了。
  在Apache2.0中新加入了ServerLimit指令,使得无须重编译Apache就可以加大MaxClients。下面是笔者的prefork配置段。
  1. StartServers 10
  2. MinSpareServers 10
  3. MaxSpareServers 15
  4. ServerLimit 2000
  5. MaxClients 1500
  6. MaxRequestsPerChild 10000
复制代码


转自:http://hi.baidu.com/guixf/blog/item/d6313609a62b99ab2fddd464.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|小黑屋|Archiver|简洁的想法

GMT+1, 2021-4-19 00:39

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表