Apache服务器安装配置

时间:2023-03-09 07:17:57
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 -d http-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=<Install_Path> 指明编译后的二进制文件安装到<Install_Path>目录,用实际安装路径替换<Install_Path>,如--prefix=/usr/local/apache-2.2.15 ,如果省略此配置参数,默认安装到/usr/local/apache2目录。

# --enable-so 指明编译动态加载模块(DSO)支持到httpd二进制文件,此模块使得Apache的各功能模块可以与核心分开编译、运行时动态加载。有了DSO支持,升级和增加模块时只需编译相关的模块即可,不必重新编译整个系统。最新版本的Apache缺省编译此模块到httpd二进制文件,如果你在使用早期版本的apache并且需要DSO支持,可能要明确指出此选项。

# --enable-mods-shared=<MODULE-LIST> 明确指明要以DSO方式编译的模块,<MODULE-LIST>为空格分隔的模块名列表、all或者most,all表示包含所有模块,most表示包含大部分模块,如--enable-mods-share="rewrite deflate",--enable-mods-share=most,效果等同于多个--enable-<FEATURE>=share。

# --with-mpm=<MPM> 先择Apache多路处理模块,<MPM>={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/httpd  start (或:/etc/init.d/httpd  start)

停止apache服务器:/etc/rc.d/init.d/httpd stop  (或:/etc/init.d/httpd  stop)

设为开机自动启动: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 ,它配合配置文件中的<ifDefine>段,用于在服务器启动和重新启动时,有条件地跳过或处理某些命令。 
-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_module modules/mod_ssl.so
  • LoadFile:可以加载其他位置的模块,如:LoadFile /user/apache/libexec/libxmlparse.so

模块的加载顺序:DSO加载的顺序决定了apache使用他们处理url的顺序,DSO模块总是以最后加载的模块为优先进行处理,而第一个加载的模块最后处理。

以安装mod_perl模块为例:

  1. 二进制包安装:#apt-get install libapache2-mod-perl2 或:#yum -y install mod_perl
  2. 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= ...
#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)容器部分主要指令:

  • <ifModule>容器:根据模块是否载入决定是否执行容器中的指令,容器中可以嵌套容器。
  • <ifDefine>容器:作用与<ifModule>类似,需要在httpd启动时加上特定的参数(httpd -D Proxy)才能起作用。
  • <Directory>容器:作用是让他所封装的指令在指定的目录以及它的子目录中起作用,可以使用通配符和正则表达式。
  • <DirectoryMatch>:作用与<Directory>类似,区别是使用正则表达式无需加“~”
  • <files>容器:作用于文件,以使用通配符和正则表达式。
  • <filesmatch>:作用与<files>类似,区别是使用正则表达式无需加“~”
  • <Location>和<LocationMatch>:对URL进行访问控制

3)服务器扩展部分主要指令:
     apache的ServerRoot/conf目录下的extra目录用来存放apache其他模块的配置文件,它们都是通过include指令来加载。

apache扩展配置文件:

Apache服务器安装配置

.htaccess文件:

      Apache服务器安装配置

       Apache服务器安装配置

 注意:配置了httpd.conf文件后需要重新启动httpd后配置才会生效!

3、apache相关工具

1)Apache GUI配置工具:Webmin、Zecos ApacheConf、redhat-config-httpd

2)Apache日志分析工具:Webalizer、Awstats、Windwos服务器安全分析系统