天天看点

php网站历练三 apache2配置

文件结构

/var/www---------网站根目录

/etc/apache2----------apache主目录

/etc/init.d/apache2----------启动脚本

/etc/apache2/apache2.conf----------主配置文件

/etc/apache2/sites-awailable----------虚拟配置

启动与停止    /etc/init.d/apache2      start | stop | restart

apache2.conf文件小解

ServerType inetd ----------ServerType 可取值 inetd 或 standalone.  Inetd 只适用于Unix平台

ServerRoot "/etc/apache2"---------ServerRoot: 目录树的根结点。服务器配置、出错信息、日志文件都保存在根目录下。 不要再目录末尾加"/".

PidFile /var/run/apache2.pid------------PidFile: 服务器用于记录启动时进程ID的文件。

ScoreBoardFile: 用于保存内部服务器进程信息的文件。并非必须。 但是如果指定了(此文件当运行Apache时生成)那么必须确保没有两个Apache进程共享同一个scoreboard文件。

Timeout 300---------------Timeout: 接受和发送timeout的时间

KeepAlive On--------------KeepAlive: 是否允许保持连接(每个连接有多个请求)"Off" -无效

MaxKeepAliveRequests 100---------------MaxKeepAliveRequests: 每个连接的最大请求数。设置为0表示无限制

建议设置较高的值,以获得最好的性能。

KeepAliveTimeout 15-------------KeepAliveTimeout: 同一连接同一客户端两个请求之间的等待时间。

MaxRequestsPerChild 0--------------MaxRequestsPerChild: 每个子进程死亡之前最大请求数如果超过这个请求数,子程序会自动退出,避免延期使用导致内存溢出或其他问题。

ThreadsPerChild 50---------------ThreadsPerChild: 服务器所允许的并发线程数。此值的设置取决于服务器的响应能力(约多的请求在同一时间激活,则每个请求的处理时间越慢)和服务器所允许消耗的系统资源。

Listen 80--------Listen: 允许将Apache绑顶到指定的IP地址和端口,作为默认值的辅助选项。

User  apache------运行APACHE服务的用户,用户名可自己创建.

Group apache------运行APACHE的用户组.出与安全的考虑请不要用高级用户

BindAddress 10.100.101.12---------BindAddress: 通过此选项可支持虚拟主机。此标识用于告诉服务器监听哪个IP地址。包括:"*", IP地址, 或域名.

#ExtendedStatus On--------ExtendedStatus 在服务器状态句柄被呼叫时控制是产生"完整"的状态信息(ExtendedStatus On)还是仅返回基本信息(ExtendedStatus Off)默认是:Off

#ClearModuleList

#AddModule mod_so.c mod_mime.c mod_access.c mod_auth.c mod_negotiation.c

#AddModule mod_include.c mod_autoindex.c mod_dir.c mod_cgi.c mod_userdir.c

#AddModule mod_alias.c mod_env.c mod_log_config.c mod_asis.c mod_imap.c

#AddModule mod_actions.c mod_setenvif.c mod_isapi.c

--------------------Apache模块编译成标准的Windows结构。

以下模块绑定到标准的Apache二进制windows分布。

要修改标准操作,取消以下行的注释并且修改指定模块列表。

警告:这是高级选项。可能导致服务器崩溃,没有专家的指导,不要轻易修改。

#LoadModule anon_auth_module modules/ApacheModuleAuthAnon.dll

#LoadModule dbm_auth_module modules/ApacheModuleAuthDBM.dll

#LoadModule digest_auth_module modules/ApacheModuleAuthDigest.dll

#LoadModule cern_meta_module modules/ApacheModuleCERNMeta.dll

#LoadModule digest_module modules/ApacheModuleDigest.dll

#LoadModule expires_module modules/ApacheModuleExpires.dll

#LoadModule headers_module modules/ApacheModuleHeaders.dll

#LoadModule proxy_module modules/ApacheModuleProxy.dll

#LoadModule rewrite_module modules/ApacheModuleRewrite.dll

#LoadModule speling_module modules/ApacheModuleSpeling.dll

#LoadModule info_module modules/ApacheModuleInfo.dll

#LoadModule status_module modules/ApacheModuleStatus.dll

#LoadModule usertrack_module modules/ApacheModuleUserTrack.dll

-------------- 动态共享对象(Dynamic Shared Object,DSO)  要使用基于DSO的功能模块,需要替换此处相应的 `LoadModule' 行。这样在使用之前这些包含的标识都将生效。有关DSO及至的详细资料请看Apache1.3版中的README.DSOSO。运行"apche -l"将列表显示Apache内奸的模块(类似标准的连接已经生效)

注:模块载入的顺序很重要。没有专家的建议,不要修改以下的顺序

Port 80--------Port: Standalone服务器监听的端口。  在Apache能够监听指定端口前,需要在防火墙中进行设置。 其它运行httpd的服务器也可能影响此端口。  Disable 如果遇到问题,请关闭所有的防火墙、安全保护和其他的服务。

ServerAdmin [email protected]: 你的地址。如果服务器有任何问题将发信到这个地址。

ServerName new.host.name---- ServerName 允许设置主机名。如果与程序获得的不同,主机名将返回客户端。主机名不能随便指定。必须是你的机器有效的DNS名称。否则无法正常工作。127.0.0.1 是TCP/IP的本地环路地址, 通常命名为localhost. 机器默认此地置为本身。

DocumentRoot "/var/www"---------- DocumentRoot: 放置服务文档的目录。

<Directory />

    Options FollowSymLinks

    AllowOverride None

</Directory>

-------------- Apache访问的每个目录可设置相关的服务和特性是允许或(和)不允许。(同样影响其子目录) 首先,设置"default"地址只有最基本的权限。

<Directory "var/www">------------这个地址应与DocumentRoot保持一致对特定目录进行特殊配置

Options Indexes FollowSymLinks MultiViews----------Options允许特殊命令的使用,Indexes如果找不到DirectoryIndex定义的文件格式时,返回目录表,FollowSymLinks允许符号联接,MultiViews允许多重视图

 AllowOverride None--------此项控制目录中哪些.htaccess文件可覆盖。

Order allow,deny-----------控制缺省的访问状态,allow在deny前面,缺省为禁止所有访问。

    Allow from all---------允许所有主机访问

</Directory>

<IfModule mod_userdir.c>

    UserDir "f:/homepages/"--------------UserDir: 当请求~user时,追加到用户主目录的路径地址。

</IfModule>

#<Directory "/var/www/user">---------控制访问UserDir目录,以下是一个站点的例子,权限限制为只读。

#    AllowOverride FileInfo AuthConfig Limit

#    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec

#    <Limit GET POST OPTIONS PROPFIND>

#        Order allow,deny

#        Allow from all

#    </Limit>

#    <LimitExcept GET POST OPTIONS PROPFIND>

#        Order deny,allow

#        Deny from all

#    </LimitExcept>

#</Directory>

DirectoryIndex index.html index.php-------DirectoryIndex: 预设的HTML目录索引文件名。添加时加空格

AccessFileName .htaccess----------AccessFileName: 每个目录中用于控制访问信息的文件名。

<Files ~ "^/.ht">---------------- 以下行防止客户端可访问 .htaccess 文件。因为 .htaccess文件通常包含授权信息,处于安全的考虑不允许访问。

    Order allow,deny

    Deny from all

</Files>

#CacheNegotiatedDocs-----------CacheNegotiatedDocs: 默认下,Apache对每个文档发送"Pragma: no-cache"这将要求代理服务器不缓存此文档。

UseCanonicalName On--------UseCanonicalName:  (1.3新增)  当此设置为on时,无论何时Apache需要构建一个自引用的URL(指向响应来源服务器),它将用ServerName和Port来构建一个规范的格式。 当此设置为off时,Apache将使用客户端提供的"主机名:端口"这将同时影响CGI脚本中的SERVER_NAME和SERVER_PORT

<IfModule mod_mime.c>

    TypesConfig conf/mime.types--------TypesConfig 记录媒体类型(mime.types)文件或类似的东东放置的位置

</IfModule>

DefaultType text/plain---------DefaultType 是服务器处理未确认类型的文件,如为止的扩展名,的默认类型。如果你的服务器上主要包含的是文本或HTML文档,"text/plain"是较好的设置 如果服务器上主要包含二进制文件,如应用程序或图片,最好设置成"application/octet-stream"防止浏览器将二进制文件以文本的方式显示。

<IfModule mod_mime_magic.c>----------mod_mime_magic模块允许服务器使用文件自身的不同标识来确定文件类型。mod_mime_magic不是默认服务器的一部分。

    MIMEMagicFile conf/magic----------MIMEMagicFile指示模块文件标识的定义所在的位置。

</IfModule>

HostnameLookups Off-------HostnameLookups: 注册客户端的机器名或IP地址。

ErrorLog logs/error.log-------ErrorLog: 错误记录文件的地址 如果不在<VirtualHost>内指定ErrorLog 改虚拟主机的错误心细将记录到此处。

LogLevel warn----------LogLevel: 控制记录在error.log中信息的个数.

以下标识定义CustomLog标识使用的格式

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

CustomLog logs/access.log common--------访问记录的位置和格式 (功用的记录文件格式).

如果希望使用代理和参考的记录文件, 取消以下标识的注释符

#CustomLog logs/referer.log referer

#CustomLog logs/agent.log agent

#CustomLog logs/access.log combined------------如果想在一个文件中记录访问、代理、参考信息(复合的记录格式)

ServerSignature On----------在服务器产生的页面(如错误文档信息,FTP目录列表等等,不包括CGI产生的文档)中增加一条服务器版本和虚拟主机名的信息。

默认下,Apache用工作行解析所有CGI脚本此注释行(脚本的第一行)包括'#'和'!'后面跟着执行特殊脚本的程序路径,对perl脚本来说是C:/Program Files/Perl目录中的perl.exe。工作行如下:

#!c:/program files/perl/perl

<IfModule mod_alias.c>------开始

    Alias /icons/ "C:/Program Files/Apache Group/Apache/icons/"---------Aliases: 可无限制的追加别名。格式如下: Alias 假名 真名注意如果假名中包含'/',服务器会在当前URL中发出请求。

因此"/icons"不能用于别名 必须用 "/icons/"..

    <Directory "C:/Program Files/Apache Group/Apache/icons">

        Options Indexes MultiViews

        AllowOverride None

        Order allow,deny

        Allow from all

    </Directory>

    scriptAlias /cgi-bin/ "C:/Program Files/Apache Group/Apache/cgi-bin/"-------scriptAlias: 控制哪个目录包含服务器脚本。scriptAlias本质行和Aliases一样

    <Directory "C:/Program Files/Apache Group/Apache/cgi-bin">--------"C:/Program Files/Apache Group/Apache/cgi-bin" 可修改为任何放置CGI脚本的目录

        AllowOverride None

        Options None

        Order allow,deny

        Allow from all

    </Directory>

</IfModule>--------结束

scriptAlias /php/ "d:/php/"---------php脚本说明

AddType application/x-httpd-php .php

AddType application/x-httpd-php .php3

AddType application/x-httpd-php .phtml

Action application/x-httpd-php "/php/php.exe"

#

# Redirect 允许告诉客户端服务器上曾经有的文档,但是现在不存在了。

# 并且可以告诉客户端到哪儿去寻找。

# 格式: Redirect old-URL new-URL

#

#

# 控制服务器目录列表显示的标识

#

<IfModule mod_autoindex.c>

    #

    # FancyIndexing标识是使用特定的目录检索还是标准的(standard)

    #

    IndexOptions FancyIndexing

    #

    # AddIcon*表明不同文件或扩展名显示的图标。

    # 这些图标只在特定检索状态下显示。

    #

    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 用于为制定图标的文件所显示的图标。

    #

    DefaultIcon /icons/unknown.gif

    #

    # AddDescription在服务器生成的检索的某个文件后追加小段说明。

    # 此项只在设置为FancyIndexed时有效

    # 格式:AddDescription "描述" 文件名

    #

    #AddDescription "GZIP compressed document" .gz

    #AddDescription "tar archive" .tar

    #AddDescription "GZIP compressed tar archive" .tgz

    #

    # ReadmeName是服务器默认的README文件。

    # 并且会追加到目录列表的最后。

    #

    # HeaderName 是目录中需要预先显示内容的文件名。

    #

    # 如果MultiViews在选项中,作为结果,服务器将先找name.html,

    # 如果存在就包含它。如果name.html不存在,

    # 服务器会继续寻找name.txt。如果存在就作为纯文本包含进来。

    #

    ReadmeName README

    HeaderName HEADER

    #

    # IndexIgnore是一系列的文件名。目录索引将忽略这些文件并且不包含在列表中。

    # 允许使用通配符。

    #

    IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t

</IfModule>

# indexing标识结束

#

# 文件类型

#

<IfModule mod_mime.c>

    #

    # AddEncoding 可用于特殊浏览器(Mosaic/X 2.1+)快速传输压缩信息。

    # 注:并不是所有的服务器都支持。

    # 除了名字相似,以下Add*标识对上面的FancyIndexing定制标识无影响。

    #

    AddEncoding x-compress Z

    AddEncoding x-gzip gz tgz

    #

    # AddLanguage用于指定文档的语言。

    # 可以使用content标签指定每个文件的语言。

    #

    # 注 1: 后缀不必与所用语言的关键字相同。

    #   --- 波兰语(Polish,标准代码为pl)的文档可以用

    #  "AddLanguage pl .po" 来避免与perl脚本文件混淆。

    #

    # 注 2: 以下例子表明两个字母的语言缩写和两个字母的国家缩写并不一定相同。

    # E.g. 'Danmark/dk' 对比 'Danish/da'.

    #

    # 注 3: 其中'ltz'使用了三个字符,与RFC的规定不同。

    # 但是这个问题正在修订中,并且重新清理RFC1766

    #

    # 丹麦Danish (da) - 荷兰Dutch (nl) - 英国English (en) - 爱萨尼亚Estonian (ee)

    # 法国French (fr) - 德国German (de) - 现代希腊文Greek-Modern (el)

    # 意大利Italian (it) - 朝鲜Korean (kr) - 挪威Norwegian (no)

    # 葡萄牙Portuguese (pt) - 卢森堡Luxembourgeois* (ltz)

    # 西班牙Spanish (es) - 瑞典Swedish (sv) - 加泰罗尼亚Catalan (ca) - 捷克Czech(cz)

    # 波兰Polish (pl) - 巴西Brazilian Portuguese (pt-br) - 日本Japanese (ja)

    # 俄国Russian (ru)

    #

    AddLanguage da .dk

    AddLanguage nl .nl

    AddLanguage en .en

    AddLanguage et .ee

    AddLanguage fr .fr

    AddLanguage de .de

    AddLanguage el .el

    AddLanguage he .he

    AddCharset ISO-8859-8 .iso8859-8

    AddLanguage it .it

    AddLanguage ja .ja

    AddCharset ISO-2022-JP .jis

    AddLanguage kr .kr

    AddCharset ISO-2022-KR .iso-kr

    AddLanguage no .no

    AddLanguage pl .po

    AddCharset ISO-8859-2 .iso-pl

    AddLanguage pt .pt

    AddLanguage pt-br .pt-br

    AddLanguage ltz .lu

    AddLanguage ca .ca

    AddLanguage es .es

    AddLanguage sv .se

    AddLanguage cz .cz

    AddLanguage ru .ru

    AddLanguage tw .tw

    AddCharset Big5         .Big5    .big5

    AddCharset WINDOWS-1251 .cp-1251

    AddCharset CP866        .cp866

    AddCharset ISO-8859-5   .iso-ru

    AddCharset KOI8-R       .koi8-r

    AddCharset UCS-2        .ucs2

    AddCharset UCS-4        .ucs4

    AddCharset UTF-8        .utf8

    # LanguagePriority 可设置语言的优先级。

    #

    # 优先级降序排列

    # 在此处按照字母顺序,可自行修改

    #

    <IfModule mod_negotiation.c>

        LanguagePriority en da nl et fr de el it ja kr no pl pt pt-br ru ltz ca es sv tw

    </IfModule>

    #

    # AddType 可临时改变mime.types或者指定特殊文件的格式。

    #

    # 例如:PHP 3.x 模块 (非Apache标准配件,参见http://www.php.net)可用下面格式定义:

    #

    #AddType application/x-httpd-php3 .php3

    #AddType application/x-httpd-php3-source .phps

    #

    # PHP 4.x, 使用:

    #

    #AddType application/x-httpd-php .php

    #AddType application/x-httpd-php-source .phps

    AddType application/x-tar .tgz

    #

    # AddHandler 可将特定文件扩展名映射到处理方法上。

    # 与文件类型无关。此特性可内建到服务器中或者追加在操作指令中(见下)

    #

    # 如果希望用服务器端应用或scriptAliased外的CGI,取消以下行的注释符

    #

    # 用CGI脚本:

    #

    #AddHandler cgi-script .cgi

    #

    # 用服务器解析的HTML文档

    #

    #AddType text/html .shtml

    #AddHandler server-parsed .shtml

    #

    # 取消以下注释符可激活Apache的send-asis HTTP file特性

    #

    #AddHandler send-as-is asis

    #

    # 如果使用服务器端解析的图像定位文件,使用以下标识:

    #

    #AddHandler imap-file map

    #

    # 要激活type maps使用:

    #

    #AddHandler type-map var

</IfModule>

# 文档类型说明结束

#

# Action 定义在文件匹配时执行相应的脚本。

# 可简化常用CGI文件的调用。

# 格式: Action media/type /cgi-script/location

# 格式: Action handler-name /cgi-script/location

#

#

# MetaDir: 指定保存meta信息文件的目录。

# 这些文件包含附加的HTTP头,在发送文档是一并发送。

#

#MetaDir .web

#

# MetaSuffix: 指定包含meta信息的文件的后缀。

#

#MetaSuffix .meta

#

# 可定制的错误响应(Apache类型)

#  共三种风格:

#

#    1) 纯文本

#ErrorDocument 500 "The server made a boo boo.

#  注: 第一个"号用于表示是文本,实际不输出

#

#    2) 本地重定向

#ErrorDocument 404 /missing.html

#  to redirect to local URL /missing.html

#ErrorDocument 404 /cgi-bin/missing_handler.pl

#  注:可重定向到任何一个服务器端的脚本或文档

#

#    3) 外部重定向

#ErrorDocument 402 http://some.other_server.com/subscription_info.html

#  注: 大部分与初始请求关联的环境变量对这样的脚本无效。

#

#

# 基于浏览器的定制操作

#

<IfModule mod_setenvif.c>

    #

    # 以下标识修改普通的HTTP响应操作。

    # 第一个标识针对Netscape2.x和其他无此功能的浏览器取消保持激活状态的功能

    # 这些浏览器在执行这些功能时会出错。

    # 第二个标识针对IE4.0b2设置。其中有一条不完整的HTTP/1.1指令

    # 在301或302(重定向)响应时不能正确的保持激活状态

    #

    BrowserMatch "Mozilla/2" nokeepalive

    BrowserMatch "MSIE 4/.0b2;" nokeepalive downgrade-1.0 force-response-1.0

    #

    # 下面的标识通过不产生基本的1.1响应取消对违反HTTP/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

</IfModule>

# 浏览器定制标识结束

#

# 允许使用URL"http://servername/server-status"的形式查看服务器状态报告

# 修改 ".your_domain.com"来匹配相应的域名以激活此功能

#

#<Location /server-status>

#    SetHandler server-status

#    Order deny,allow

#    Deny from all

#    Allow from .your_domain.com

#</Location>

#

# 允许使用URL"://servername/server-info"(要求加载mod_info.c),

# 来远程察看服务器配置报告。

# 修改 ".your_domain.com"来匹配相应的域名以激活此功能

#

#<Location /server-info>

#    SetHandler server-info

#    Order deny,allow

#    Deny from all

#    Allow from .your_domain.com

#</Location>

#

# 据报有人试图利用一个老的1.1漏洞。

# 这个漏洞与CGI脚本在Apache服务器上分布有关。

# 通过取消下面几行的注释符,可以将此类攻击记录转移到phf.apache.org上的记录脚本上。

# 或者也可以利用脚本scriptsupport/phf_abuse_log.cgi记录在本地服务器上。

#

#<Location /cgi-bin/phf*>

#    Deny from all

#    ErrorDocument 403 http://phf.apache.org/phf_abuse_log.cgi

#</Location>

#

# 代理服务器标识。取消下列行的注释符可激活代理服务器。

#

#<IfModule mod_proxy.c>

#    ProxyRequests On

#    <Directory proxy:*>

#        Order deny,allow

#        Deny from all

#        Allow from .your_domain.com

#    </Directory>

    #

    # 激活/取消处理HTTP/1.1 "Via:" 报头

    # ("Full":加入服务器版本; "Block":取消所有外发的Via: 报头)

    # 可设置值: Off | On | Full | Block

    #

#    ProxyVia On

    #

    # 可修改下列各行并取消注释符来激活缓存。

    # (没有CacheRoot标识就不使用缓存)

    #

#    CacheRoot "E:/Program Files/Apache Group/Apache/proxy"

#    CacheSize 5

#    CacheGcInterval 4

#    CacheMaxExpire 24

#    CacheLastModifiedFactor 0.1

#    CacheDefaultExpire 1

#    NoCache a_domain.com another_domain.edu joes.garage_sale.com

#</IfModule>

# 代理标识结束

### 部分 3: 虚拟主机

#

# 虚拟主机: 如果希望在一台服务器上实现多个域名和主机名的服务,

# 可设置VirtualHost来实现。Most configurations

# 大部分的设置使用基于名称的虚拟主机,这样服务器就不必为IP地址操心。

# 这些用星号在下面的标识中标出。

#

# 在试图设置虚拟主机前

# 请阅读<URL:http://www.apache.org/docs/vhosts/>中的文档。

# 以了解细节问题。

#

# 可用命令行参数 '-S'来确认虚拟主机的设置。

#

#

# 使用基于名称的虚拟主机

#

#NameVirtualHost *

#

# 虚拟主机实例:

# 几乎所有的Apache标识都可用于虚拟主机内。

# 第一个VirtualHost部分用于申请一个无重复的服务器名。

#

#<VirtualHost *>

#    ServerAdmin [email protected]

#    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>