apache服务器笔记(很好用)

字体大小: 中小 标准 ->行高大小: 标准

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 (主进程生成子进程,并保持一定数据量的空闲子进程)
<ifmodule prefork.c>
startservers 数字 //设置预生成的子进程数
minsparesevers 数字 //设置预生成最小空闲进程数
maxsparesevers 数字 //设置预生成最大空闲进程数
maxrequestsperchild 数字 //设置每个子进程可处理的请求数,0代表无限制,可增加进程的处理请求数
maxclient 数字 //设置服务器的最大并发连接数
serverlimit 数字 //设置prefork模块,并发连接数的最高极限,maxclients的值小于等于serverlimit
</ifmodule>
b.worker MPM
<ifmodule worker.c>
startserver 数字 //设置预生成的子进程数
threadsperchild 数字 //设置每个子进程数预生成的线程数
minsparethreads 数字 //设置最小空闲线程数
maxsparethreads 数字 //设置最大空闲线程数
maxclient 数字 //设置所有子进程的线程最大总数
threadlimit 数字 //设置线程数的最高极限
maxrequestsperchild 数字 //设置每个子进程的最大进程数
serverlimit 数字 //设置最大的子进程数
</ifmodule>
注:默认采用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地址
—<directory "路径">
.......
配置命令
.......
</directory>
设置特定目录的相关属性,其中options和allowoverride
a.options [+|-] 选项
设置目录的具有哪些特性,主要的特性有:
execcgi 允许执行CGI脚本
followsymlinks 允许使用符号连接
includes 允许使用服务器包含
indexes 允许使用自动生成目录列表
all 所有特性,除multiviews外
b.allowoverride 选项
确定允许存在于.htaccess文件中的指令类型,主要选项有:
authconfig 用户验证类指令
fileinfo 文档控制类指令
indexes 目录索引控制类指令
limit 主机访问控制类指令
options 目录控制类指令
all 所有指令
none 不读以.htaccess 注:—可用<location URL-PATH/URL>.....</location>或<locationmatch 正则表达式>....</localtionmatch>容器配置特定的url的属性
—可用<file 文件名>.....</files>或<filesmatch 正则表达式>容器配置特定的属性
(3)配置语言和字符集
—defaultlanguage 语言缩写
设置所有文件的默认语言
—addlanguage 语言缩写 扩展名
设置指定语言所对应的扩展名
—addcharset 字符集名 扩展名
添加字符集,设置指定扩展名对应的字符集
—addefaultcharset 字符集名/off/on
设置是否在响应头加入默认字符集,建议设为off
2.配置虚拟主机
(1)apache支持的虚拟主机种类
—基于IP地址虚拟主机
—基于域名虚拟主机
—基于端口虚拟主机
—动态虚拟主机
(2)配置基于IP地址虚拟主机
—给服务器绑定多个IP地址
—修改httpd.conf,添加<virtualhost ip地址> .....</virtualhost>
#vi httpd.conf
.........
<virtualhost ip地址>
........
documentroot "路径"
directoryindex 文件名
.......
</virtualhost>
—重启服务
(3)配置基于域名的虚拟主机
—申请多个域名指定服务器
—修改httpd.conf
#vi httpd.conf
..........
namevirtualhost IP地址/* //指定域名对应的ip地址
..........
<virtualhost 主机名>
documentroot "路径"
directoryindex 文件名
servername 主机名
.........
</virualhost>
........
—重启服务
(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
.........
<ifmodule mod_proxy.c>
proxyrequests on //启用正向代理
proxyvia off //关闭via头的处理
<proxy *> //设置控制代理访问指定资源
order deny,allow/allow,deny
deny from .......
allow from .......
</proxy>
</ifmodule>
—重启服务
(2)配置反问代理
修改 httpd.conf
#vi httpd.conf
..........
<ifmodule mod_proxy.c>
proxyrequests off //启用反向代理
proxypass URL-PATH URL //将真实的URL映射本地目录下
proxypassreverse URL-PATH URL
<proxy *> //控制代理访问指定资源
order deny ,allow/allow,deny
deny from ......
allow from .......
</proxy>
</ifmodule>
............
—重启服务
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

此文章由 www.phpgz.com 收集整理 ,地址为: http://www.phpgz.com/htmls/68359.html

大屏阅读,大屏评论.