Apache服务器设置一.认识和安装apache1.认识apache(1)apache是一种开源软件,是当前最流行web服务器之一(2)apache支持DSO,可扩展性很强(3)apache的安全性和稳定性较强(4)apache目前主要用于发布CGI/PHP程序,也可以结合其他平台来发布JSP程序
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