hbf 发表于 2015-8-2 07:11:38

Apache服务器安装配置

  Apache服务器安装
  1、Apache服务器安装
   在Linux系统下,apache服务器的安装方式比较灵活,可以使用二进制包安装,比如:rpm包、deb包、已编译好的包。也可以简单的使用yum工具进行自动安装。当需要对apache进行定制时可以使用源代码安装方式,比如增加补丁、针对特定环境的优化、整合程序将apache与PHP、Mysql等编译到一起已提升性能等。
  rpm安装方式:
  rpm安装包下载地址:http://www.rpmfind.net 或 http://httpd.apache.org
1、查询rpm包信息:rpm -qip httpd-xxx.i386.rpm   
2、安装:rpm -ivh httpd-xxx.i386.rpm
3、删除/卸载:rpm -e httpd-xxx.i386.rpm
  yum自动安装方式:yum install httpd
  windows下的安装方式:
下载apache的安装文件并解压到本地(下载地址:http://httpd.apache.org/docs/current/platform/windows.html#down),然后以管理员身份进入bin目录中执行如下命令进行安装:
D:\httpd-xxx\bin> httpd -k install         安装
   源码编译安装方式:
  1、在/var下新建一目录apache:mkdir /var/apache,并cd进入该目录
2、把http-2.0.55.tar.gz传输到该目录下
3、解压http-2.055.tar.gz:
       方法:tar zxvf http-2.0.55.tar.gz------>http-2.0.55
         或:gzip -dhttp-2.0.55.tar.gz------>http-2.0.55.tar
      tar xvf http-2.0.55.tar---------->http-2.0.55
4、cd进入http-2.0.55中
5、开始检查:./configure (默认安装路径:/usr/local/apache2)
6、编译:make
7、安装:make install
8、清理安装环境:make clean
9、修改配置:用vi进入:vi/usr/local/apache2/conf/httpd.conf (或/etc/httpd/conf/httpd.conf)
             将#ServerName www.example.com:80 中的#删除并将www.example.com改为安装机上Linux的IP
  带参编译的例子:
  ./configure --prefix=/usr/local/apache2--enable-cache --enable-disk-cache -enable-mem-cache --enable-file-cache --with-ssl --enable-ssl --enable-so --enable-mime-magic --enable-mods-shared=most --with-mpm=worker
  # --prefix= 指明编译后的二进制文件安装到目录,用实际安装路径替换,如--prefix=/usr/local/apache-2.2.15 ,如果省略此配置参数,默认安装到/usr/local/apache2目录。
  #--enable-so 指明编译动态加载模块(DSO)支持到httpd二进制文件,此模块使得Apache的各功能模块可以与核心分开编译、运行时动态加载。有了DSO支持,升级和增加模块时只需编译相关的模块即可,不必重新编译整个系统。最新版本的Apache缺省编译此模块到httpd二进制文件,如果你在使用早期版本的apache并且需要DSO支持,可能要明确指出此选项。
  #--enable-mods-shared= 明确指明要以DSO方式编译的模块,为空格分隔的模块名列表、all或者most,all表示包含所有模块,most表示包含大部分模块,如--enable-mods-share="rewrite deflate",--enable-mods-share=most,效果等同于多个--enable-=share。
  # --with-mpm= 先择Apache多路处理模块,={beos|event|worker|prefork|mpmt_os2},prefork为Unix系统下默认处理模块,它将运行一个非线程型的、预派生的Web服务器,适合于没有线程安全库,需要避免线程兼容性问题的系统,它是要求将每个请求相互独立的情况下最好的MPM,这样若一个请求出现问题就不会影响到其他请求。worker为支持混合的多线程多进程的多路处理模块,由于使用线程来处理请求,所以可以处理海量请求,而系统资源的开销小于基于进程的MPM,同时,它也使用了多进程,每个进程又有多个线程,以获得基于进程的MPM的稳定性。如果你的系统是基于线程安全的,那么笔者建议使用worker替代prefork,它将使得你的系统得到实际的性能改善。
  
  2、Apache服务器运行
  使用不同的安装方式apache的启动方式和目录可能不一样,以yum安装方式为例,使用init.d下的httpd文件来控制apache服务器的启动,其他的配置文件、日志文件、模块文件处于/etc/httpd目录下。
  检查https是否已启动(也可以查看Apache启动的进程数):ps -ef | grep httpd 或 netstat -an | grep 80 或 在IE中进入: http://IP 若能显示apache页面则安装成功
  查看Apache的版本: /usr/local/apache2/bin/httpd -v   
  启动apache服务器:/etc/rc.d/init.d/httpdstart (或:/etc/init.d/httpdstart)
  停止apache服务器:/etc/rc.d/init.d/httpd stop(或:/etc/init.d/httpdstop)
  设为开机自动启动:chkconfig httpd on
  其他用法: httpd {start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}另外还可以配置apachectl文件到Linux的启动目录来自动启/停apache服务器:启动apache服务器: /usr/local/apache2/bin/apachectl start   若要停止服务: /usr/local/apache2/bin/apachectl stop
  Windows系统中apache服务器的运行:
  D:\httpd-xxx\bin> httpd -k start   启动Apache
    D:\httpd-xxx\bin> httpd -k restart   重启Apache
    D:\httpd-xxx\bin> httpd -k shutdown关闭Apache
  
  3、httpd命令行参数
   httpd是Apache超文本传输协议(HTTP)服务器的主程序。 其设计目标是一个独立运行的后台进程, 按此目标运行时,它会建立一个处理请求的子进程或线程的池。httpd不应该是直接调用的,而是,在类Unix的系统中由apachectl调用,在Windows NT,2000和XP中作为一个服务运行,在Windows 9x和ME中以命令窗口程序运行。httpd一般在 /usr/local/apache2/bin/ 或 /usr/sbin/目录下
  httpd [ -d serverroot ] [ -f config ] [ -C directive ] [ -c directive] [ -D parameter ] [ -e level ] [ -E file ] [ -k start|restart|graceful|stop ] [ -R directory ] [ -h ] [ -l ] [ -L ] [-S] [ -t ] [ -v ] [ -V ] [ -X ]
  在Win32系统中, 还可以使用下列参数:httpd [ -k install|config|uninstall ] [ -n name ] [ -w ]
  选项:
  -d serverroot    为ServerRoot指令设置初始值为serverroot。它可以被配置文件中的ServerRoot指令所覆盖。其默认值是/usr/local/apache2.
-f config    在启动中使用config文件的指令。如果config不是以/开头的文件名, 则它是相对于ServerRoot的一个路径。其默认值是conf/httpd.conf.
-k start|restart|graceful|stop    发送信号使httpd启动、重新启动或停止。更多信息请参见停止Apache.
-C directive    在读取配置文件之前,先处理directive的配置。
-c directive    在读取配置文件之后,再处理directive的配置。
-D parameter    设置参数parameter ,它配合配置文件中的段,用于在服务器启动和重新启动时,有条件地跳过或处理某些命令。
-e level    在服务器启动时,设置LogLevel为level。它用于在启动时,临时增加出错信息的详细程度,以帮助排错。
-E file    将服务器启动过程中的出错信息发送到文件file。
-R directory    当在服务器编译中使用了SHARED_CORE规则时,它指定共享目标文件的目录为directory。
-h    输出一个可用的命令行选项的简要说明。
-l    输出一个编译在服务器中的模块的列表。它不会列出使用LoadModule指令动态加载的模块。
-L    输出一个指令的列表,并包含了各指令的有效参数和使用区域。
-S    显示从配置文件中读取并解析的设置结果(目前仅显示虚拟主机的设置).
-t    仅对配置文件执行语法检查。程序在语法解析检查结束后立即退出,或者返回0(Syntax OK),或责返回非0的值(Syntax Error)。如果还指定了-D DUMP_VHOSTS ,会显示虚拟主机配置的详细信息。
-v    显示httpd的版本,然后退出。
-V    显示httpd的版本和编译参数, 然后退出。
-X    以调试模式运行httpd。仅启动一个工作进程,并且服务器不与控制台脱离。
-T    在启动/重启的时候跳过根文件检查(2.2.17及以上版本有效)。
-M    输出一个已经启用的模块列表,包括静态编译在服务器中的模块和作为DSO动态加载的模块。
  下列参数仅用于win32平台:
-k install|config|uninstall 安装Apache为一个Windows NT的服务; 改变Apache服务的启动方式; 删除Apache服务。
-n name 使Apache服务的名称为name。
-w 保持打开控制台窗口,使得可以阅读出错信息。
  

  Apache服务器配置
  1、apache模块
  apache1.3以后开始使用DSO(动态共享对象)方式来加载模块。apache的模块分为三大类:


[*]核心模块:apache基础服务模块,必须始终静态链接到apache内核,无法删除,提供的指令始终可用。(core、mpm等)
[*]标准模块:作为apache的一部分,由apache基金会维护,但是可以安全的删除和加载。如要动态加载apache标准模块,则mod_so模块必须以静态连接方式编译到apache中,否则所有模块都无法加载。(mod_so等)
[*]第三方模块:不作为apache的一部分,由普通用户维护
  1)模块的安装
    可以使用per脚本apxs来为apache服务器编译和安装模块,前提是mod_so模块已经静态连接编译到apache中(使用命令:./bin/httpd -M来确认)。当使用make命令来编译安装时其实是调用了apxs。
  使用静态连接模块: 将模块直接编译到apache服务器中,而不是以DSO模块的方式。通过LoadModule指令在http.conf中加载 。:
    ./configure --enable-modules=most                     --将常用模块直接编译到apache中,而无需使用LoadModule指令加载,速度更快,但占用更多内存
  使用动态连接模块:使用DSO使服务器具有更大的灵活性。节省了内存,单启动速度降低,开销不固定:
    ./configure --enable-mods-shared=most               --将模块编译后以DSO方式使用,在http.conf中使用LoadModule指令加载,在apache启动时加载他们。
  mod_so提供了两个重要指令


[*]LoadModule:只能加载apache根目录(ServerRoot)下的模块,如:LoadModule ssl_modulemodules/mod_ssl.so
[*]LoadFile:可以加载其他位置的模块,如:LoadFile /user/apache/libexec/libxmlparse.so
  模块的加载顺序:DSO加载的顺序决定了apache使用他们处理url的顺序,DSO模块总是以最后加载的模块为优先进行处理,而第一个加载的模块最后处理。
  以安装mod_perl模块为例:


[*]二进制包安装:#apt-get install libapache2-mod-perl2或:#yum -y install mod_perl
[*]DSO方式安装:



#wget http:// perl.apache.org/dist/mod_perl-2.0.tar.gz --下载
#tar -zxvf mod_perl-2.0.tar.gz && cd mod_perl-2.0 --解压
#perl makefile.pl mp_apxs=/usr/local/apache2/bin/apxs --配置mod_perl并指定apache的apxs程序的位置。 或:#perl makefile.pl 按提示对http.conf作必要配置。
#make && make install --编译安装,安装完成后可以使用strip来清理调试程序
  3.以静态方式安装:



#cd mod_perl-2.0
#perl makefile.pl mp_use_static=1 ...
#make && make install
  
  2、apache配置说明
  apache的最主要的配置方式就是配置http.conf就可以了。apache配置指令分为两大类,一类是核心模块的提供的核心指令,一类是标准模块和第三方模块提供的指令。每一个指令都对应一个模块,最重要的模块有:core_module、so_module、http_module和mpm,除so_module以外其三种都不可禁止或关掉。apache的ServerRoot/conf目录下:


[*]httpd.conf:apache的主要配置文件,定义了apache的一些基本配置以及对其他配置文件的引用。
[*]magic:mod_mime_magic模块的配置文件。
[*]mime.type:用来定义MIME类型
[*]extra目录:存放apache所需要引用的配置(dav、ssl的配置等)
[*]original目录:以上所有文件和目录原始状态的备份
  httpd.conf文件可分为三部分:


[*]主服务器部分:主要是通过核心指令来定义服务器的功能和参数,在整个apache配置中都起作用,如:使用loadmodule加载模块、servername定义主机名和监听等。
[*]容器环境部分:以开头,结束的样式来对指令进行封装
[*]服务器扩展部分:通过Include指令来加载其他参数
  1)主服务器部分主要指令:


[*]ServerName:定义apache默认主机名
[*]ServerRoot:定义服务器所在目录
[*]DcumentRoot:指定apache提供页面服务的根目录
[*]ServerAdmin:定义服务器出现错误后提示给客户端的管理员邮件地址
[*]ServerAlias和Alias:用于实现映射目录的功能,ServerAlias将映射的目录识别为CGI脚本目录,将该目录下的所有文件当CGI脚本对待;而Alias并没有映射识别为脚本的功能。
[*]User与Group定于运行apache服务器的账号和工作组
[*]Listen:定义apache监听的端口号,默认是80
[*]LoadModule:用于加载模板或目标文件
[*]ErrorDocument:定义错误码对应的错误信息
[*]Options:决定在哪些目录中使用哪些服务器的特性
  2)容器部分主要指令:


[*]容器:根据模块是否载入决定是否执行容器中的指令,容器中可以嵌套容器。
[*]容器:作用与类似,需要在httpd启动时加上特定的参数(httpd -D Proxy)才能起作用。
[*]容器:作用是让他所封装的指令在指定的目录以及它的子目录中起作用,可以使用通配符和正则表达式。
[*]:作用与类似,区别是使用正则表达式无需加“~”
[*]容器:作用于文件,以使用通配符和正则表达式。
[*]:作用与类似,区别是使用正则表达式无需加“~”
[*]和:对URL进行访问控制
  3)服务器扩展部分主要指令:
   apache的ServerRoot/conf目录下的extra目录用来存放apache其他模块的配置文件,它们都是通过include指令来加载。
  apache扩展配置文件:

  .htaccess文件:
        
        
   注意:配置了httpd.conf文件后需要重新启动httpd后配置才会生效!
  
  3、apache相关工具
  1)Apache GUI配置工具:Webmin、Zecos ApacheConf、redhat-config-httpd
  2)Apache日志分析工具:Webalizer、Awstats、Windwos服务器安全分析系统
  
页: [1]
查看完整版本: Apache服务器安装配置