
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模块为例:
- 二进制包安装:#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= ... #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扩展配置文件:
.htaccess文件:
注意:配置了httpd.conf文件后需要重新启动httpd后配置才会生效!
3、apache相关工具
1)Apache GUI配置工具:Webmin、Zecos ApacheConf、redhat-config-httpd
2)Apache日志分析工具:Webalizer、Awstats、Windwos服务器安全分析系统