Apache配置
一、apache简介:
1、Apache是最流行的web服务器,它开放源代码,支持挂平台应用(linux、Unix、windows)。
2、Apache的优点:
(1)功能强大,apache自带了很多功能模块,可根据要求编译所需的模块
(2)配置简单,/usr/local/apache/conf/httpd.conf
(3)速度快,apache处理静态页面文件效率高
(4)性能稳定,apache在高负荷请求下性能表现卓越
3、apache的缺点:
(1)只支持静态网页,对于jsp、php等动态网页不支持
(2)apache是以进程为基础的结构,进程要比线程消耗更多的系统资源,不适合多处理器环境;因此在一个Apache Web站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。
二、apache安装
tar zxvf httpd-2.2.9.tar.gz
cd http-2.2.9
./configure
--prefix=/usr/local/apache配置apache的安装目录
--enable-so 让apache核心装载DSO
--enable-modules=all将所有模块编译到httpd文件中
--enable-mods-shared=all动态加载所有模块
--enable-rewrite 使apache支持地址重写
--enable-cgi 启用cgi
--enable-expires添加文件过期限制,缓存在客户端有效时间内不会再去访问服务器
--enable-headers 文件头信息改写,网页压缩功能需要
--enable-deflate网页压缩,可达40%,节省带宽,但对cpu有一定压力
make
make install
三、apache的目录结构
1、bin:apache服务程序目录(脚本)
2、lib:库文件目录
3、conf:配置文件目录
4、logs:日志文件目录
5、htdocs:默认网页根目录
6、cgi-bin:默认cgi目录
7、modules:动态加载模块目录
8、manual:apache使用文档目录
9、man:帮助文档目录
10、error:默认错误应答文件目录
11、include:头文件目录
12、icons:apache图标文件目录
四、apache配置文件
1、/usr/local/apache/conf/httpd.conf
Apache主配置文件,配置对整个apache生效
2、/usr/local/apache/bin/apachectl start/restart/stop
Apache管理脚本,它自动检测httpd.conf的设定,配置错误会导致启动错误
3、/usr/local/apache/bin/httpd
httpd是一个启动apache的二进制文件
4、/usr/local/apache/modules/
Apache是模块化的web服务器,所有编译的模块都会放在此目录,然后在httpd.conf文件中指定加载的模块和模块的位置
5、/usr/local/apache/logs/access_log
Apache访问日志
6、/usr/local/apache/logs/error_log
Apache错误日志
7、/usr/local/apache/logs/httpd.pid
Apache守护进程号文件
五、httpd.conf配置
1、全局变量
(1)ServerRoot "/usr/local/apache"
ServerRoot用于指定守护进程httpd的运行目录
(2)PidFile logs/httpd.pid
PidFile指定的文件将记录httpd守护进程的进程号,由于httpd能自动复制,因此apache启动后系统会有多个httpd进程,但只有一个进程为最初的启动进程,它为其他进程的父进程,对父进程发送信号将影响所有的httpd进程。如果不指定PidFile,将把此文件默认放在logs/httpd.pid
(3)Timeout 300
Timeout用来定义客户端和服务器程序连接的超时间隔,单位为秒;超过这个时间,服务器将断开与客户端的链接
(4)KeepAlive on
Keepalive用于定义是否允许用户建立永久连接,on允许,off拒绝。当要打开一个含有很多图片页面,完全可以建立一个tcp连接将所有信息从服务器传到客户端,而没必要对每个图片都建立一个tcp连接,Keepalive建议设为on
(5)MaxKeepAliveRequests 100
MaxKeeoAliveRequests用来定义一个tcp连接可以进行http请求的最大次数,0为无限制。当KeepAlive设定为on时,此项才生效。
(6)KeepAliveTimeout 5
KeepAliveTimeout用来限定一次连接中最后一次请求完成后延时等待的时间,超过这个时间,服务器就断开连接
(7)Listen 80
Apache的监听端口,可以更改
2、配置主服务器
(1)User nobody
Group nobody
定义httpd的用户和组,默认由nobody启动apache
(2)ServerAdmin you@example.com
ServerAdmin设定网站管理员的邮件地址,当apache出现问题时会发邮件到此地址
(3)ServerName www.example.com:80
ServerName指定系统的主机名,如果没有制定则会以hostname为依据,设定的主机名一定能与ip对应起来(/etc/hosts设定)
(4)UseCanonicalName off
UseCanonicalName用来设定是否使用标准的主机名,如果设置为on,则以ServerName指定的主机名为主,如果web主机有多个主机名,则应设为off(默认设为off)
(5)DocumentRoot /usr/local/apache/htdocs/
DocumentRoot设置网页的根目录,此目录可以是一个链接
(6)<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>
上面这段是对DocumentRoot指定目录的权限设定
(a)<Directory />指定的就是DocumentRoot
(b)Options表示在这个目录内能够执行的操作:
l Indexes:此参数表示如果在DocumentRoot指定的目录下找不到以index大头的文件,就将此目录下所有的文件列出来。这个参数高危,不使用
l FollowSymLinks:表示在DocumentRoot指定目录下允许符号链接到其他目录
l ExecCGI:表示允许在DocumentRoot指定的目录下执行CGI操作
l Includes:准许SSI操作
l MultiViews:不常用,根据语言的不同显示不同的信息提示
(c)AllowOverride,通过设定AllowOverride的值决定是否读取目录中的.htaccess文件,来改变原来所设置的权限,参数All:可以读取.htaccess文件来修改原有的的权限;None:表示不可以读取.htaccess文件,权限统一控制
(d)Order,用来控制目录和文件的访问授权
l Deny,Allow:表示先检查禁止的设定,再检查允许的设定
l Allow,Deny:表示先检查允许的设定,再检查禁止的设定
Order用来控制访问规则Allow与Deny的生效顺序
例:apache.org域中所有主机,除了foo.apache.org子域包含的主机被拒绝以外,其他都允许访问。而所有不在apache.org域中的主机都不允许访问,因为默认状态是拒绝对服务器的访问。
Order Allow,Deny
Allow from apache.org
Deny from foo.apache.org
另一方面,如果上个例子中的Order指令改变为"Deny,Allow",将允许所有主机的访问。这是因为,不管配置文件中指令的实际顺序如何,"Allow from apache.org"指令会最后被评估到并覆盖之前的"Deny from foo.apache.org"。所有不在apache.org域中的主机也允许访问是因为默认状态被改变到了允许。
(7)DirectoryIndex index.html index.htm index.php index.jsp
对apache默认首页的设定,参数的先后顺序就是网页打开的先后顺序
(8)UserDir public_html
UserDir用于设定用户个人主页存放的目录,默认为public_html,例netadmin的个人主页/home/netadmin/ public_html
(9)AccessFileName .htaccess
定义每个用户目录下的访问控制文件的文件名,默认为.htaccess
(10)TypesConfig conf/mime.types
TypesConfig定义在哪里查询mime.types文件
(11)HostnameLookups off
HostnameLookups用来指定apache日志记录访问端地址是ip还是域名,off—ip,on—域名,建议设为off
(12)ErrorLog logs/error_log
指定错误日志的位置
(13)CustomLog logs/access_log common
指定apache访问日志文件的位置和记录日志的模式
(14)ServerTokens Full
ServerTokens定义在HTTP回应头中的信息类型,默认为Full,显示所有信息,可设为Full/OS/Minor/Minimal/Major/Prod,Prod显示的信息最少
(15)ServerSignature on
ServerSignature有三个参数,on表示在apache的出错页面会显示apache的版本以及加载模块的信息,email与on相同,但还会多出一个邮件地址链接,off则不显示任何信息。
(16)ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/"
<Directory "/usr/local/apache2/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
默认在/usr/local/apache2/cgi-bin目录下具有CGI的脚本执行权限。
3、虚拟主机的设定
(1)NameVirtualHost *
表示启用虚拟主机,如果开启虚拟主机则DocumentRoot指令则失效,以虚拟主机指定的DocumentRoot为主
(2)<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /www/docs/dummy-host.example.com
ServerName dummy-host.example.com
ServerAlias www.dummy-host.example.com
ErrorLog logs/dummy-host.example.com-error_log
CustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>
l ServerAdmin:虚拟主机管理员的email
l DocumentRoot:指定虚拟主机的网页根目录
l ServerName:虚拟主机的域名
l ServerAlias:虚拟主机别名
l ErrorLog:指定虚拟主机错误日志的位置
l CustomLog:指定虚拟主机访问日志的位置和格式
六、提示
由于apache的版本不同,所以不同版本的apache在安装和配置上会有所不同;旧版本的apache的配置大多在httpd.conf上,而新版本的httpd.conf被简化了,很多的配置都放在了conf/extra相应的文件中
转载于:https://blog.51cto.com/xiaomaimai/324337