modules - Functions
安装与配置apache
###########################################################################################
获取apache
从http://www.apache.org获取apache 2.0.44
安装apache
------------------------------
使用APACI配置apache的安装:
./configura
常用选项:
--help #可以查看所有的可用选项
--prefix=<PATH #指定安装目录
--enable-module = <xxx|all|most #xxx为名字为mod_xxx.c的模块
--disable-module = xxx #xxx为名字为mod_xxx.c的模块
--enable-shared = <xxx|max #起用DSO(Dynamic Share Object),需要mod_so.c的支持
开始安装
-------------------------------------------------------------------
make
make install
oks
与php 4.3.1 的集成
-------------------------------------------------------------------
---/configure --with-apxs2=/usr/local/apache2/bin/apxs <假如想安装mysql的话 --with-mysql=/usr/local/mysql
make
make install
配置apache
-------------------------------------------------------------------
apache的主要配置文件:
httpd.conf
srm.conf
access.conf
mime.types
magic
编辑httpd.conf
基本指令:
ServerType #为standalone或者是inetd
ServerRoot #apache的安装目录,默认为/usr/local/apache
LockFile #服务器串行模式的加锁文件位置,一般不需要改动
PidFile #记录服务器运行时的pid的文件路径
ResourceConfig #资源文件所在,让srm.conf为空,则httpd.conf的相关值生效
AccessConfig #访问权限文件的所在路径
LoadModule #加载模块
AddModule #加载模块的顺序
Port #监听端口,默认为80
ServerAdmin #管理员信箱
ServerName #服务器名称
DocumentRoot #站点文件所在路径
测试配置是否正确
-------------------------------------------------------------------
apachectl configtest
启动apache
-------------------------------------------------------------------
apachectl start 或者 httpd -k start
重起apache
-------------------------------------------------------------------
apachectl graceful 或者 httpd -k graceful
停止apache
-------------------------------------------------------------------
apachectl stop 或者 httpd -k stop
创建web site
###########################################################################################
apache默认的用户和组为为apache
将站点的目录和文件的权限赋予apache
find /usr/local/apache/ -exec chown apache {}find /usr/local/apache/ chgrp apache {}find /usr/local/apache/ -type -d chmod 755 {}find /usr/local/apache/ -type -f chmod 640 {} 给适当的文件适当的权限是一个管理员的责任所在。
内容处理
###########################################################################################
目录内容处理
-------------------------------------------------------------------
DirectoryIndex index.htm index.html #默认文挡
当默认文档不存在,且<DirectoryOptions中Indexes生效时:
HeaderName #页面题头文件
ReadmeName #页面页尾文件
IndexIgnore #隐藏文件规则
IndexOptions #控制目录列表的外观
目录其他
-------------------------------------------------------------------
Alias
/path/ "/<path/" #别名定义
配置MIME(multipropuse internet mail extend protocol)
-------------------------------------------------------------------
因为不常会修改,只做浏览
AddHandler
SetHandler send-as-is # 按原状发送
配置CGI(comment gateway interface)
-------------------------------------------------------------------
<DirectoryOptions +ExecCGI #以允许使用CGI
SetHandler cgi-script #设定CGI脚本类型
配置SSI
-------------------------------------------------------------------
因为apache方面的性能专家Dean Gaudet不鼓励使用SSI,所以我只是浏览了一下,没有详细地记录下来
使用日志
###########################################################################################
-------------------------------------------------------------------
LogLevel <emerg|alert|crit|warn|notice|info|debug 简略--详细 严重--轻微
ErrorLog <path|pipe|syslog
日志发送到文件:ErrorLog /var/www/log
日志发送到syslog:ErrorLog syslog:local <1-7
默认为local 7
日志发送给管道:ErrorLog "|/usr/local/apache/bin/errordb insert"
日志传输
-------------------------------------------------------------------
文档传送日志告诉你服务器在与谁交互,交互什么,是什么时候交互,同哪里交互TransferLog用法类似ErrorLog
自定义日志格式
-------------------------------------------------------------------
LogFormat
%a client ip
%A server ip
%b 响应http标头以外的字节数
%{eviron}e 以eviron命名的变量的值
%f 被请求文件的路径
%h client hostname
%{reqheader}i 名字为reheader的标头的值
%l client的系统环境,IdentifyCheck为On且内容协商成功
%{modnote}n 名字为 modnote的短信的值
%p server port
%P server PID
%r 请求的第一行,包括URLmodth
%s 原始响应信息
%s 返回浏览器的响应状态
%t 请求的发生时间[18/Nov?1999:13:02:58-0600]
%{timefmt}t 定义时间的显示格式,因为基本不需要修改,所以省略了...
%T 处理请求的秒数
%u 请求用户的登陆名
%U 被请求的URL,不包括参数
%v server name
%V 根据UseCanonicalName得到服务器名称
通用日志的默认格式等价于
LogFormat "%h %l %u %t \" %r \" %s %b"
LogFormat "%401u" #记录未认证的用户名
apache 预先定义了四种日志的格式:<combined|common|referer|agent
CustomLog
-------------------------------------------------------------------
CoustomLog "/var/logs/httpd/access_logs" env = myCheck #否定为 env =! myCheck
SetEnvIf <Remote_Addr|Remote_host|Remote_user|Request_Method|Request_protocol|Request_URL "condition" VarName
只要检查属性中符合Condition,就定义名字为VarName的变量
condition为unix中的正则表达式(Regular Expression),可以查看man regex获取详细资料
LogFormat CustomLog 由mod_log_config.c提供<默认
SentEnvIf mod_setenvif.c提供<默认
CookieTracking CookieName CookieExpires
-------------------------------------------------------------------
由mod_usertrack.c提供<非默认
<IfModule mod_usertrack
CookieTracking <on|off
CookieName myCookie
</IfModule
CookieExpires 600 #也可以用 CookieExpires "3 weeks 2 days 4 hours 22 seconds"
注意CookieExpires不可以在<Directory中,该选项为全局
AllowOverride
-------------------------------------------------------------------
All 允许.htaccess覆盖httpd.conf中的所有目录设置
Authconfig 允许覆盖认证指令AuthName AuthType AuthUserFile AuthGroupFile 等
FileInfo 允许覆盖目录存取文件设置AddEncodeing AddLanguage AddType CookieTracking CookieName等
Indexes 允许覆盖目录索引设置
Limit 允许覆盖allow deny order require
None 不允许覆盖httpd.conf中的所有目录设置
Options 允许覆盖Options的设置
例子:用户单击流事件,引用记录,代理记录
虚拟主机
###########################################################################################
基于IP的虚拟主机
-------------------------------------------------------------------
<VirtualHost 202.119.219.28
ServerName www.njfu.edu.cn
ServerAdmin nico@njfu.edu.cn
DocumentRoot /var/www/
ServerAlias njfu.edu.cn
</VirtualHost
基于域名的