热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Apache服务器安装配置笔记

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
推荐阅读
  • 搭建个人博客:WordPress安装详解
    计划建立个人博客来分享生活与工作的见解和经验,选择WordPress是因为它专为博客设计,功能强大且易于使用。 ... [详细]
  • 随着Linux操作系统的广泛使用,确保用户账户及系统安全变得尤为重要。用户密码的复杂性直接关系到系统的整体安全性。本文将详细介绍如何在CentOS服务器上自定义密码规则,以增强系统的安全性。 ... [详细]
  • JavaScript 跨域解决方案详解
    本文详细介绍了JavaScript在不同域之间进行数据传输或通信的技术,包括使用JSONP、修改document.domain、利用window.name以及HTML5的postMessage方法等跨域解决方案。 ... [详细]
  • 本文探讨了如何在PHP与MySQL环境中实现高效的分页查询,包括基本的分页实现、性能优化技巧以及高级的分页策略。 ... [详细]
  • 本文详细介绍如何安装和配置DedeCMS的移动端站点,包括新版本安装、老版本升级、模板适配以及必要的代码修改,以确保移动站点的正常运行。 ... [详细]
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • 本文详细介绍了在 CentOS 系统中如何创建和管理 SWAP 分区,包括临时创建交换文件、永久性增加交换空间的方法,以及如何手动释放内存缓存。 ... [详细]
  • 软件测试行业深度解析:迈向高薪的必经之路
    本文深入探讨了软件测试行业的发展现状及未来趋势,旨在帮助有志于在该领域取得高薪的技术人员明确职业方向和发展路径。 ... [详细]
  • 我的读书清单(持续更新)201705311.《一千零一夜》2006(四五年级)2.《中华上下五千年》2008(初一)3.《鲁滨孙漂流记》2008(初二)4.《钢铁是怎样炼成的》20 ... [详细]
  • Asynchronous JavaScript and XML (AJAX) 的流行很大程度上得益于 Google 在其产品如 Google Suggest 和 Google Maps 中的应用。本文将深入探讨 AJAX 在 .NET 环境下的工作原理及其实现方法。 ... [详细]
  • 本文详细介绍了如何在Oracle VM VirtualBox中实现主机与虚拟机之间的数据交换,包括安装Guest Additions增强功能,以及如何利用这些功能进行文件传输、屏幕调整等操作。 ... [详细]
  • 本文介绍了SIP(Session Initiation Protocol,会话发起协议)的基本概念、功能、消息格式及其实现机制。SIP是一种在IP网络上用于建立、管理和终止多媒体通信会话的应用层协议。 ... [详细]
  • 在日常生活中,支付宝已成为不可或缺的支付工具之一。本文将详细介绍如何通过支付宝实现免费提现,帮助用户更好地管理个人财务,避免不必要的手续费支出。 ... [详细]
  • 调试利器SSH隧道
    在开发微信公众号或小程序的时候,由于微信平台规则的限制,部分接口需要通过线上域名才能正常访问。但我们一般都会在本地开发,因为这能快速的看到 ... [详细]
  • 解决PHP项目在服务器无法抓取远程网页内容的问题
    本文探讨了在使用PHP进行后端开发时,遇到的一个常见问题:即在本地环境中能够正常通过CURL获取远程网页内容,但在服务器上却无法实现。我们将分析可能的原因并提供解决方案。 ... [详细]
author-avatar
工商领域LW
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有