/ 中存储网

Apache服务器安装配置笔记

2014-03-11 10:42:01 来源:IT技术网
Apache服务器设置

一.认识和安装apache

1.认识apache

(1)apache是一种开源软件,是当前最流行web服务器之一

(2)apache支持DSO,可扩展性很强

(3)apache的安全性和稳定性较强

(4)apache目前主要用于发布CGI/PHP程序,也可以结合其他平台来发布JSP程序

2.安装apache

(1)rpm安装方式

  #rpm  -ivh   httpd-.......

  #rpm  -ivh   httpd-devel-.......

  #rpm  -ivh   httpd-manual-.......

(2)编译安装方式

  #groupadd  apache

  #useradd  -g  apache   apache

  #tar  -xzvf   httpd-.......tar.gz

  #cd  httpd-........

  #./configure    --prefix=/usr/local/apache     //指定安装路径

--enable-so     //支持dso

--enable-md5-shared=all     //编译指定功能为动态模式,不包含proxy,如果需要支持代理功能,则需要加--enable-proxy

  #make

  #make  install

3.启动apache服务

(1)rpm安装的apache

  #service  httpd  start

(2)编译方式安装的apache

  #/apache安装路径/bin/apachectl  start

注:-apache服务的守护进程为httpd,默认监听端口为80

-可用httpd  -l查看静态模块,用httpd -t检查配置文件的错误,apache的主配置文件名为httpd.conf

二.配置apache功能

1.apache基本配置

 #vi  httpd.conf

(1)设置apache的基本工作参数

 —设置连接超时

timeout  数字

 —设置保持连接

a.keepalive    on/off     //启用保持连接

b.maxkeepaliverequests  数字   //设置每个连接的最大请求

c.keepalivetimeout   数字   //两次请求的最大间隔时间

注:对动态内容的服务器建议关闭keepalive

 —设置MPM

a.prefork MPM (主进程生成子进程,并保持一定数据量的空闲子进程)

startservers  数字    //设置预生成的子进程数

minsparesevers  数字   //设置预生成最小空闲进程数

maxsparesevers  数字  //设置预生成最大空闲进程数

maxrequestsperchild  数字  //设置每个子进程可处理的请求数,0代表无限制,可增加进程的处理请求数

maxclient   数字   //设置服务器的最大并发连接数

serverlimit  数字  //设置prefork模块,并发连接数的最高极限,maxclients的值小于等于serverlimit

b.worker  MPM

startserver  数字    //设置预生成的子进程数

threadsperchild  数字   //设置每个子进程数预生成的线程数

minsparethreads  数字  //设置最小空闲线程数

maxsparethreads  数字  //设置最大空闲线程数

maxclient  数字   //设置所有子进程的线程最大总数

threadlimit  数字  //设置线程数的最高极限

maxrequestsperchild   数字  //设置每个子进程的最大进程数

serverlimit   数字   //设置最大的子进程数

注:默认采用prefork模块,如果在编译安装时加--with-mpm选项可指定相应mpm模式

 —可用httpd  -l命令获取当前apache采用哪种模式,prefork模式的访问速度要比worker要快,但需要大量的cpu和内存资源,对并发访问大的服务器应该采用worker模式

 —设置监听地址及端口

  listen   [IP地址:]数字

注:如果apache需要使用多个端口,则必须写多行listen选项

 —配置加载动态模式 

  loadmodule   模块名   模块文件路径

 —配置服务进程的启动用户和组

  a.user    用户名

  b.group  用户组名

(2)站点发布的基本配置

 —documentroot    “路径”

 设置站点主目录的位置

 —directoryindex  文件名

 指定首页文件名

 —servername    主机名/IP地址[:端口号]

 指定站点的主机名/IP地址

 —

   .......

  配置命令

   .......

 设置特定目录的相关属性,其中options和allowoverride

a.options  [+|-]  选项

 设置目录的具有哪些特性,主要的特性有:

execcgi          允许执行CGI脚本

  followsymlinks      允许使用符号连接   

includes          允许使用服务器包含 

indexes          允许使用自动生成目录列表   

all                  所有特性,除multiviews外

b.allowoverride     选项

 确定允许存在于.htaccess文件中的指令类型,主要选项有:

 authconfig   用户验证类指令

 fileinfo        文档控制类指令

 indexes      目录索引控制类指令

 limit           主机访问控制类指令

 options       目录控制类指令

 all              所有指令

 none          不读以.htaccess                                                                                                                                                                                                   注:—可用.....或....容器配置特定的url的属性

—可用.....或容器配置特定的属性

(3)配置语言和字符集

 —defaultlanguage    语言缩写

  设置所有文件的默认语言

 —addlanguage  语言缩写   扩展名

  设置指定语言所对应的扩展名

 —addcharset    字符集名   扩展名

  添加字符集,设置指定扩展名对应的字符集

 —addefaultcharset   字符集名/off/on

  设置是否在响应头加入默认字符集,建议设为off

2.配置虚拟主机

(1)apache支持的虚拟主机种类

  —基于IP地址虚拟主机

  —基于域名虚拟主机

  —基于端口虚拟主机

  —动态虚拟主机

(2)配置基于IP地址虚拟主机

  —给服务器绑定多个IP地址

  —修改httpd.conf,添加 .....

 #vi  httpd.conf

   ......... 

   ........

   documentroot    "路径"

   directoryindex     文件名

   .......

 —重启服务

(3)配置基于域名的虚拟主机

 —申请多个域名指定服务器

 —修改httpd.conf

  #vi   httpd.conf

   .......... 

  namevirtualhost   IP地址/*      //指定域名对应的ip地址

   ..........

  documentroot    "路径"

  directoryindex  文件名

  servername   主机名

   .........

   ........

 —重启服务

(4)配置动态虚拟主机

 —基于IP地址的动态虚拟主机

a.给服务器绑定多个IP地址

b.修改httpd.conf

   #vi  httpd.conf

   .........

   virtualdocumentrootip    可变化的路径

   ........

注:可变化的路径就是路径中包含了变量,常用的变量格式如下:

%N  表示客户机输入的IP地址(域名)的从左向右的第N部分,其中%0代表整个IP地址(域名)

%-N表示客户机输入的IP地址(域名)的从右到左的第N部分

%+N表示客户机输入的IP地址(域名)的从左边第N部分到结尾

%-N+表示客户机输入的IP地址(域名)的从右边第N部分到开头

如:www.abc.com, %0=www.abc.com,%2=abc, %-1=com%, %2+=abc.com  %-2+=www.abc

例如:virtualdocumentrootip    /web/%0

c.重启服务

 —基于域名的动态虚拟主机

a.申请多个域名指向服务器

b.修改httpd.conf

 #vi  httpd.conf

   ...........

  virtualdocumentroot    可变化的路径

   ...........

c.重启服务

注:配置基于域名虚拟主机时必须将usecanonicalname设为off

3.配置用户验证和主机访问控制

(1)主机访问控制

 —主机访问控制的作用

 限制访问站点资源的客户机,设置允许和拒绝访问资源主机

 —主机访问控制的配置命令(这些命令可放directory/files/location容器中,也可以放在.htaccess文件)

  a.order   allow,deny/deny,allow

  控制默认的访问状态与Allow和deny指令生效的顺序

  b.allow  from          all/IP地址/网络号/IP开头的开头

  设置允许访问客户机列表

  c.deny   from          all/IP地址/网络号/IP开头的开头

  设置拒绝访问客户机列表

(2)用户验证

 —用户验证的分类

 a.基本用户验证

 b.摘要用户验证

 —基于文本文件的用户验证配置命令

 a.authtype   basic/digset

  配置用户验证的类型

 b.authname  "字符串"

  配置用户验证的提示信息

 c.authuserfile  文件路径

  配置存放用户口令信息的文件路径

 d.require   user 用户名   //配置允许指定的用户访问资源

require   group  用户组名  //配置允许指定的用户组访问资源

require   valid-user    //配置允许所有身份验证的用户访问资源

 e.authgroupfile   文件路径

  配置存放用户组信息的文件路径

 f.satisfy     any/all

  配置主机级别的访问控制和用户认证之间的相互关系

注:这些命令可放directory/files/location容器中,也可以放在.htaccess文件

 —为客户机创建web用户

 #htpasswd   [-c] 用户文件路径及名称   用户名

实例:—创建test用户,存放用户信息文件为/etc/httpd/conf/users

 #htpasswd     /etc/httpd/conf/users    test

注:保证apache的启动用户对用户信息文件具有读权限

4.配置虚拟目录和URL重定向

(1)配置虚拟目录

 —认识虚拟目录

  虚拟目录就是在站点中建立一个链接指向某个物理路径,可用于发布站点主目录以外资源或缩短物理路径

 —虚拟目录配置命令

 a.alias   URL-path    物理路径

  映射URL到文件系统的特定区域

 b.aliasmatch   正则表达式    物理路径

  使用正则表达式映射URL到文件系统

 c.scriptalias   URL-path   物理路径

  映射URL到文件系统的特定区域,允许执行CGI脚本

注:以上配置命令可以在主服务器或虚拟主机中配置

(2)配置URL重定向

 URL重定向指的是修改客户机请求的URL,并将修改后的URL返回给客户机,由客户机重新请求的URL

 —URL重定向的配置

 a.redirect  [状态]  URL-path    URL

  发送一个外部重定向使客户端重定向到一个不同的URL

 b.redirectmath   [状态]  正则表达式

  基于正则表达式匹配对当前的URL发送一个外部重定向

注:以配置命令可以放在主服务器、虚拟主机、directory或.htaccess中

5.配置代理

(1)配置正向代理

 —修改httpd.conf

   #vi   httpd.conf

.........

proxyrequests   on     //启用正向代理

proxyvia   off       //关闭via头的处理

//设置控制代理访问指定资源

order  deny,allow/allow,deny

deny   from   .......

allow   from   .......

 —重启服务

(2)配置反问代理

修改 httpd.conf

   #vi     httpd.conf

..........

proxyrequests  off    //启用反向代理

proxypass    URL-PATH   URL   //将真实的URL映射本地目录下

proxypassreverse   URL-PATH   URL

//控制代理访问指定资源

order  deny ,allow/allow,deny

deny  from  ......

allow  from  .......

   ............

 —重启服务

6.配置带宽和并发连接限制

(1)安装bw_mod    //配置带宽    (自动配置apache加载模块)

   #tar  -xzvf   mod_bw-.....

   #cd mod_bw

   #apxs  -i  -a  -c  mod_bw.c

 —带宽限制选项

 a.Bandwidthmodule   on/off

 设置指定客户机最大带宽

 b.Bandwidth    [From]     [bytes/s]

 设置指定客户机最大带宽

 c.MinBandwidth   [From]   [bytes/s]

 设置客户机最小带宽

 d.LargeFilelimit  [Type]   [Minimum   size]   [bytes/s]

 设置访问超出特定大小的某种文件的带宽

 e.Maxconnection    [From]   [Max]

 设置指定客户机的最大并发连接数

 f.Froce Bandwidthmodule  [on/off]

 设置bw模块将应用所有请求

(2)配置并发连接限制

 —安装mod_limitipconn模块 (自动配置apache加载模块)

 #tar  -xjvf  mod_limitipconn-........tar.bz2

 #cd  mod_limiticonn

 #apxs  -i  -a   -c  mod_limitipconn.c

 —并发连接配置选项

 a.Extendedstatus   on/off

  启用apache的扩展状态

 b.Maxconnperip   数字

  设置每个客户机的最大并发连接数

7.配置规则重写

(1)认识规则重写

 规则重写就是web服务器会改写客户机符合特定规则的URL;用于实现资源重定向

(2)规则重写的配置命令

 —rewriteengine   on/off

 设置apache是否启用重写引擎

 —rewriterule

作用:为重写引擎定义重写规则

格式:rewriterule   正则表达式   替代字符串[标记]

正则表达式元字符:

.     任意一个单字符                

[chars]       字符类:“chars”中的任意一个字符

[^chars]      字符类:不在“chars”中的字符

text1|text2   选择:text1或text2 

?          前面的字符出现0或1次

*          前面的字符出现0或N次 (N>0)

+         前面的字符出现1或N次(N>1)

^         锚定到行首

$          锚定到行尾

字符     转义字符

 标记:C         连接到下一条件规则 ....

F          强烈禁URL

G         强烈废弃URL

L         结尾规则

N        跳转到开头,从头再来

NC      忽略大小写

P        强制为代理

R       强制为重定向

实例:rewriterule    ^/$    http://www.sje.cn  [R.L]

 —rewritecond

作用:定义重写发生的条件

格式:rewritecond   字符串   正则表达式    [标记]

字符串所包含一些特殊字符

  a.$N  反向rewriterule中的分组

  b.%N  反向rewritecond中的分组

   c. 服务器变量

%{HTTP_USER_AGENT}   客户机信息,包括操作系统和浏览器信息

%{HTTP_HOST} 请求的主机名  

%{REMOTE_ADDR}  客户机IP地址

%{REMOTE_HOST}  客户机的主机名

%{REMOTE_PORT}  客户机连接服务器所有端口

%{REQUEST_METHOD}  客户机的请求方法

%{REQUEST_FILENAME} 客户机的请求的文件名

%{REQUEST_URI}  客户机请求URI

%{DOCUMENT_ROOT} 服务器的站点主目录

%{SERVER_NAME}  服务器的名称

%{SERVER_ADDR}  服务器的IP地址

%{SERVER_PORT}  服务器的端口号

特殊比较符号:

>  大于

=  等于

-d  判断是不是存在的目录

-f  判断是不是存在的普通文件

-s  判断是不是为非空的普通文件

-x  判断是不是为可执行的文件

-l  判断是不是为链接文件

-U  判断是不是有效的URL

标记:

-NC   忽略大小写 

-OR   或

实例:rewritecond %{REMOTE_ADDR} ^192.168.3.1

-rewritebase 

  作用:设置目录级重写的基准URL

  格式:rewritebase  URL-PATH

   (3) 规则重写的应用案例

-移动站点主目录到站点的/bbs路径下

rewriteengine on

rewriterule  ^/$    /bbs [R,L]

-利用规则重写实现基于域名的虚拟主机

RewriteEngine on

RewriteCond   %{HTTP_HOST}    ^www.abc.com$

RewriteRule   ^(.+)     %{HTTP_HOST}$1   [C]

RewriteRule   ^www.abc.com(.*) /web/abc$1

RewriteCond   %{HTTP_HOST}    ^www.linux.cn$

RewriteRule   ^(.+)     %{HTTP_HOST}$1   [C]

RewriteRule   ^www.linux.com(.*) /web/linux$1

三.LAMP环境配置

  1.  使用RPM包配置LAMP环境(模块化)

(1) 安装apache

#rpm -ivh  httpd-....

#rpm -ivh httpd-devel-....

(2) 安装mysql

#rpm -ivh mysql-... mysql-server-... mysql-devel-....

(3) 安装php

-安装php依赖的组件

a. libiconv

b. freetype

c. libpng

d. libjpeg

e. gd

f. libxml2

g. libmcrypt

h. mhash

i. zlib

-安装php

#rpm -ivh php-...

#rpm -ivh php-mysql-... 

(4) 安装Zend Optimizer 

#tar -xzvf ZendOptimizer-3.0.0-linux-glibc21-i386.tar.gz

#cd ZendOptimizer-3.0.0-linux-glibc21-i386

#./install.sh

(5) 启动mysql和apache

....

  2. 编译方式配置LAMP(模块化)

(1) 编译安装apache

....

(2) 编译安装mysql

....

(4) 编译安装php

-安装php依赖的组件

a. libiconv

b. freetype

c. libpng

d. libjpeg

e. gd

f. libxml2

g. libmcrypt

h. mhash

i. zlib

-安装php

#tar -xzvf php-....

#cd php-...

#./configure 

--prefix=/usr/local/lamp/php //指定程序的安装路径

--with-apxs2=/usr/local/lamp/apache/bin/apxs  //指定apache的apxs工具位置

--with-mysql=/usr/local/lamp/mysql  //指定mysql的安装位置

--with-freetype-dir //支持freetype

--with-jpeg-dir   //支持jpeg

--with-png-dir //支持png

--with-zlib  //支持zlie

--with-libxml-dir  //支持libxml2

--enable-xml  //支持xml

--disable-debug //禁用debug

--with-gd  //支持gd

--with-gd-native-ttf

#make

#make install

#cp php.ini-dist /usr/local/lamp/php/etc/php.ini

#vi /usr/local/lamp/apache/conf/httpd.conf //修改apache配置,加载php模块

...........

LoadModule php5_module modules/libphp5.so

.........

AddType application/x-httpd-php .php .phtml

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

......

 (4) 安装Zend Optimizer 

#tar -xzvf ZendOptimizer-3.0.0-linux-glibc21-i386.tar.gz

#cd ZendOptimizer-3.0.0-linux-glibc21-i386

#./install.sh