压力测试以及编译安装httpd2.4

时间:2023-03-08 23:18:40
压力测试以及编译安装httpd2.4

                    压力测试以及编译安装httpd2.4

                                      作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

一.使用 deflate_module模块压缩页面优化传输速度
  我们的httpd软件自带的有一个mod_deflate模块,它可以实现调用gzip这样的工具来实现对文本数据压缩的。二进制的格式的文件一般不压缩,因为压缩空间比例并不大,反而会浪费服务器的CPU时间周期,吃力不讨好。使用mod_deflate模块压缩页面优化传输速度,节省带宽等。
[root@yinzhengjie ~]# httpd -M |grep deflate_module
deflate_module (shared) ------>检查该模块是否被加载了,如果加载了就可以直接进行配置。
Syntax OK
[root@yinzhengjie ~]#
[root@yinzhengjie ~]# more /etc/httpd/conf.d/deflate.conf ----->具体配置可以按照这个文件来整。我都已经做了注释了
#启用DEFLATE过滤器来实现输出内容过滤并完成文件压缩的,需要我们明确定义的。
SetOutputFilter DEFLATE
#Restrict compression to these MIME types
#纯文本格式;
AddOutputFilterByType DEFLATE text/plain
#超文本格式;
AddOutputFilterByType DEFLATE text/html
#扩展的超文本和合并的xml格式;
AddOutputFilterByType DEFLATE application/xhtml+xml
#文本类型的xml格式的;
AddOutputFilterByType DEFLATE text/xml
#application类型的xml格式;
AddOutputFilterByType DEFLATE application/xml
#application类型的x-js格式;
AddOutputFilterByType DEFLATE application/x-javascript
#文本类型的js格式;
AddOutputFilterByType DEFLATE text/javascript
#文本类型的css格式;
AddOutputFilterByType DEFLATE text/css
# Level of compression (Highest 9 - Lowest 1)默认为6
DeflateCompressionLevel 9
# Netscape 4.x has some problems.
BrowserMatch ^Mozilla/4 gzip-only-text/html #用BrowserMatch关键字进行正则匹配浏览器客户端支持压缩的版本号;
# Netscape 4.06-4.08 have some more problems
BrowserMatch ^Mozilla/4\.0[678] no-gzip #用BrowserMatch关键字进行正则匹配浏览器客户端不支持压缩的版本号;
# MSIE masquerades as Netscape, but it is fine
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
[root@yinzhengjie ~]#
[root@yinzhengjie ~]# httpd -t
Syntax OK ------>重新加载服务之前,一定要检查配置文件的语法是否OK啊!
[root@yinzhengjie ~]#
[root@yinzhengjie ~]# service httpd restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]
[root@yinzhengjie ~]#
二.httpd自带的命令行工具
  事实上,在我们安装完Apache之后,它默认就会给我们安装上很多命令行工具,这个是httpd自带的工具。
1>.apachectl ( Apache HTTP服务控制工具)
[root@yinzhengjie ~]# file `which apachectl`
/usr/sbin/apachectl: POSIX shell script text executable -----这是一个脚本程序
[root@yinzhengjie ~]#
[root@yinzhengjie ~]# apachectl stop
[root@yinzhengjie ~]# ss -tnl | grep 80
[root@yinzhengjie ~]# ss -tnl | grep 443
[root@yinzhengjie ~]#
[root@yinzhengjie ~]# apachectl start
[root@yinzhengjie ~]# ss -tnl | grep 80
LISTEN 0 128 :::80 :::*
[root@yinzhengjie ~]# ss -tnl | grep 443
LISTEN 0 128 :::443 :::*
[root@yinzhengjie ~]#
2>.ab(Apache HTTP服务器性能测试基准工具;)
  我这里测试是在本机测试的,效果是相当的好,实际生产环境中建议要跨主机测试,还有就是测试的时候不能光等测试结果,在进行压力测试的同时还要手动去打开这个网页,观察网页是否能够正常打开,如果不能正常打开就不是压力测试了,而成了崩溃测试啦,哈哈~尽管你满足了以上两点,ab的测试也并不准确,因为我们这里只是测试一个页面,而在生产实际环境中,我们打开的页面也不止一个哟。我们这里主要介绍ab的用法。ab只是可以用来做参考,不能真正用来作为实际生产环境中服务器可以承载的压力,除了ab的测试压力工具还有很多,比如http_load,webbench,seige等等,这些模拟测试工具都不精确。新环境上线之前,我们可以用tcp_copy来进行压力测试,它的可靠性会强一些。
 [root@yinzhengjie ~]# ab -c  -n  http://www.yinzhengjie.org.cn/index.html             ----->注意, -c 模拟的并发数,-n 模拟的总请求数, 一般并发数应该小于等于请求数。
This is ApacheBench, Version 2.3 <$Revision: $>
Copyright Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking www.yinzhengjie.org.cn (be patient)
Completed requests ----->告诉我们测试以及完成了5000个请求,下面一次是执行进度。
Completed requests
Completed requests
Completed requests
Completed requests
Completed requests
Completed requests
Completed requests
Completed requests
Completed requests
Finished requests ------->这就说明任务完成了。 Server Software: Apache/2.2. ----->服务器程序及版本;
Server Hostname: www.yinzhengjie.org.cn ----->服务器的主机名;
Server Port: ------>访问服务器的端口; Document Path: /index.html ------->请求资源的路径;
Document Length: bytes ------->请求资源的大小; Concurrency Level: -------->并发级别为100个;
Time taken for tests: 9.013 seconds --------->测试所经历的市场;
Complete requests: --------->完成的请求个数;
Failed requests: --------->失败的请求个数;
Write errors: ---------->发送的失败个数;
Total transferred: bytes ---------->一共传输的355M,默认单位为字节;
HTML transferred: bytes ---------->所传输的HTML大小为341M,上面的值包括请求首部等,因此上面的值会大于该值,该项只只包含文档实体本身;
Requests per second: 5547.74 [#/sec] (mean) ----------->每秒钟完成的请求数;
Time per request: 18.025 [ms] (mean) ----------->表示总的并发数需要的时间;
Time per request: 0.180 [ms] (mean, across all concurrent requests) ------>表示单个请求所需的时间。总的并发数是100,就用总的时间除以100就会得到这个数字;
Transfer rate: 40390.33 [Kbytes/sec] received -------->每秒钟传输的字节数; Connection Times (ms) ----->处理时间,单位是毫秒。
min mean[+/-sd] median max
Connect: 4.1 ---->连接时间
Processing: 4.1 ----->处理进程(请求)总的时间
Waiting: 3.6 ----->处理请求的等待的时间
Total: 4.4 ------>整体花费的时间 Percentage of the requests served within a certain time (ms)
% ------>表示完成50%的请求需要的时间是16ms,就是做一个评估。
%
%
%
%
%
%
%
% (longest request) ------>表示完成100%的请求需要的时间为68ms;
You have new mail in /var/spool/mail/root
[root@yinzhengjie ~]#
3>.apxs (Apache 扩展工具,用于编译第三方模块或是开发第三方模块时会用到它;)
4>.configure( 配置源代码)
5>.dbmmanage(为基本认证创建和更新DBM格式的用户认证文件)
6>.htcacheclean(清理磁盘缓存)
7>.htdigest(为摘要认证创建和更新用户认证文件。)
8>.htdbm(操作 DBM 密码数据库。)
9>.htpasswd(为基本认证创建和更新用户认证文件。)
10>.httxt2dbm(为 RewriteMap 创建 dbm 文件。)
11>.logresolve(将 Apache 日志文件中的 IP 地址解析到主机名称。)
12>.rotatelogs(不关闭 Apache 而切换日志文件。用于日志滚动的工具。)
13>. suexec(执行外部程序前切换用户。)
 
三.资源限定
  我们知道客户端和服务器端在进行通信时,双方都要建立套接字文件,而且每一个连接通常都需要四个元素,客户单ip和端口,服务器端ip和端口。如果某一个客户端想服务端发起请求时,如果它的请求量很大久意味着打开的套接字文件就会很多。那么想象一下这个套接字文件到底可以打开多少个呢?作为一个服务器来讲,每一个用户(或每一个进程)所能够打开的文件数是有限定的。不然的话对于整个系统资源可能每一个用户(或每一个进程)占用的过多。我们可以用ulimit命令来查看。它是一个内建命令。
  对要求并发性程度非常高的应用程序来讲,资源限定一个是进程数的限定,一个是打开文件句柄的限定是我们将来要考虑的通用的概念。资源限定分为软限制(可以超出的限制,但仅能超出一定时长)和硬限制(绝对不能超出的限制)
  ulimit:只能修改软限制
    -n [N]:显示或软限制能打开的最大的文件句柄数
    -u [N]:所能够打开的最大进程数
 [root@yinzhengjie ~]# ulimit -n

 [root@yinzhengjie ~]#
[root@yinzhengjie ~]# ulimit -n ----->临时修改文件的打开数为65535
[root@yinzhengjie ~]# ulimit -n [root@yinzhengjie ~]#
[root@yinzhengjie ~]# ulimit -u [root@yinzhengjie ~]#
[root@yinzhengjie ~]# ulimit -u ------->临时修改进程打开的数为30000
[root@yinzhengjie ~]# ulimit -u [root@yinzhengjie ~]#
[root@yinzhengjie ~]# tail - /etc/security/limits.conf ------>修改配置文件可以永久修改但是但是不能立即生效。需要重启操作系统才好使,和关闭selinux机制很像。
#Add by yinzhengjie
apache hard nofile
apache hard nproc
[root@yinzhengjie ~]#
四.httpd2.4新特性
  它依赖于更高版本的apr(apr全称 apache portable runtime,运行时移植)和arp-util。apr是一个移植工具,是一个让Apache可以跨平台的工具,它是一个底层库。有了这个apr以后,你在windows装饰apr,在Linux也安装上apr,那么我们的Apache的代码既可以在windows上跑又可以在Linux上跑。对于httpd2.4它需要apr-1.4以上版本。
  apr和arp-util软件包的下载地址:http://mirror.bit.edu.cn/apache/apr/
  httpd软件包的下载地址:http://mirror.bit.edu.cn/apache/httpd/
  httpd2.4的特点有以下几点:
    1>.MPM支持在运行时装载
      --enable-mpms-shared=all --with-mpm=event 启用默认的event
    2>. 支持event
    3>.异步读写
    4>.在每模块及每目录上指定日志级别
    5>.每请求配置:<If> <Elseif>
    6>.增强版的表达式分析器
    7>.毫秒级的keepalive timeout
    8>.支持主机名的虚拟主机不在需要NameVirtualHost指令
    9>.支持使用自定义变量
  httpd2.4新增一些模块:
    1>.mod_proxy_fcgi(基于fcgi模块去连接PHP的);
    2>.mod_ratelimit(用作速率限定);
    3>.mod_request(对请求方法限定的);
    4>.mod_remoteip(对远端ip做限定的)等等;
  对于基于IP的访问做了修改,不在使用order,allow,deny这些机制;而是统一使用require进行。
五.编译安装httpd2.4
1.将之间的yum安装打入冷宫;
 [root@yinzhengjie httpd]# service httpd stop
Stopping httpd: [ OK ]
[root@yinzhengjie httpd]# chkconfig httpd off
[root@yinzhengjie ~]# lsof -i :
[root@yinzhengjie ~]# netstat -untalp | grep
[root@yinzhengjie ~]#
2.安装环境
 [root@yinzhengjie ~]# cat /etc/redhat-release
CentOS release 6.6 (Final)
[root@yinzhengjie ~]#
[root@yinzhengjie ~]# uname -r
2.6.-.el6.x86_64
[root@yinzhengjie ~]#
[root@yinzhengjie ~]# uname -m
x86_64
[root@yinzhengjie ~]#
3.解决依赖环境-安装pcre-devel软件包,该包用来支持httpd的正则表达式。
 [root@yinzhengjie ~]# rpm -qi pcre
Name : pcre Relocations: (not relocatable)
Version : 7.8 Vendor: CentOS
Release : .el6 Build Date: Fri Sep :: AM PDT
Install Date: Fri Oct :: PM PDT Build Host: c6b8.bsys.dev.centos.org
Group : System Environment/Libraries Source RPM: pcre-7.8-.el6.src.rpm
Size : License: BSD
Signature : RSA/SHA1, Fri Sep :: AM PDT, Key ID 0946fca2c105b9de
Packager : CentOS BuildSystem <http://bugs.centos.org>
URL : http://www.pcre.org/
Summary : Perl-compatible regular expression library
Description :
Perl-compatible regular expression library. ------>Perl兼容的正则表达式库,Apache和Nginx都依赖于CGI,而CGI又通常是以Perl为基准的。
PCRE has its own native API, but a set of "wrapper" functions that are based on
the POSIX API are also supplied in the library libpcreposix. Note that this
just provides a POSIX calling interface to PCRE: the regular expressions
themselves still follow Perl syntax and semantics. The header file
for the POSIX-style functions is called pcreposix.h.
[root@yinzhengjie ~]#
[root@yinzhengjie ~]# yum -y install pcre-devel
4.解决依赖环境-安装apr软件包,我们这里通过源码安装
 [root@yinzhengjie httpd]# pwd
/yinzhengjie/httpd
[root@yinzhengjie httpd]# ll
total
-rw-r--r--. root root Oct : apr-1.6..tar.bz2
-rw-r--r--. root root Oct : apr-util-1.6..tar.bz2
-rw-r--r--. root root Oct : httpd-2.4..tar.bz2
[root@yinzhengjie httpd]# tar xf apr-1.6..tar.bz2
[root@yinzhengjie httpd]# cd apr-1.6.
[root@yinzhengjie apr-1.6.]# ./configure --prefix=/yinzhengjie/apr ---->编译时需要指定安装路径,你可以自定义。
[root@yinzhengjie apr-1.6.]# make -j && make install ----->开始安装
[root@yinzhengjie apr-1.6.]# ls /yinzhengjie/apr/ -----检查是否安装成功
bin build- include lib
[root@yinzhengjie apr-1.6.]#
5.解决依赖环境-安装apr-util,它是apr的工具,我们也通过源码的方式安装
 [root@yinzhengjie apr-util-1.6.]# yum -y install expat-devel    ----这个包是安装apr-util时所依赖的。
[root@yinzhengjie apr-1.6.]# cd ..
[root@yinzhengjie httpd]# tar xf apr-util-1.6..tar.bz2
[root@yinzhengjie httpd]# cd apr-util-1.6.
[root@yinzhengjie apr-util-1.6.]# ./configure --prefix=/yinzhengjie/apr-util --with-apr=/yinzhengjie/apr/ ------>因为apr-util是apr的工具,因此我们需要告诉它apr的安装路径
[root@yinzhengjie apr-util-1.6.]# make -j && make install
6.httpd的编译安装
 [root@yinzhengjie ~]# wget https://www.openssl.org/source/openssl-1.0.2l.tar.gz        --->如果你的OpenSSL太老了可能会导致没法配置httpd的步骤,我们可以直接安装一下新版本的OpenSSL即可,然后在安装的时候指定安装的路径
[root@yinzhengjie ~]# tar xf openssl-1.0.2l.tar.gz
[root@yinzhengjie ~]# cd openssl-1.0.2l
[root@yinzhengjie ~]# ./config --prefix=/usr/local/openssl ----配置OpenSSL的安装路径
[root@yinzhengjie ~]# make -j ---->编译OpenSSL(最多允许4个编译命令同时执行)
[root@yinzhengjie ~]# make install ---->开始安装
[root@yinzhengjie ~]# mkdir /yinzhengjie/etc
[root@yinzhengjie ~]# cd /yinzhengjie/httpd/
[root@yinzhengjie httpd]# tar xf httpd-2.4..tar.bz2
[root@yinzhengjie httpd]# cd httpd-2.4.
[root@yinzhengjie httpd-2.4.]# ./configure --prefix=/yinzhengjie/apache --sysconfdir=/yinzhengjie/etc/http24 --enable-so --enable-ssl=/usr/local/openssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/yinzhengjie/apr --with-apr-util=/yinzhengjie/apr-util/ --enable-modules=most --enable-mpms-shared=all --with-event
[root@yinzhengjie httpd-2.4.]# make -j && make install
[root@yinzhengjie httpd-2.4.]# cd
[root@yinzhengjie ~]# cd /yinzhengjie/apache/ ---->检查是否安装成功。
[root@yinzhengjie apache]# ll
total
drwxr-xr-x. root root Oct : bin ---->可以使用的工具,基本上都是可执行脚本
drwxr-xr-x. root root Oct : build ----->编译时的一些工具;
drwxr-xr-x. root root Oct : cgi-bin ------>存放CGI执行脚本的目录;
drwxr-xr-x. root root Oct : error ------->存放错误页面的目录;
drwxr-xr-x. root root Oct : htdocs ------>存放网页的目录;
drwxr-xr-x. root root Oct : icons ------->存放一些二进制文件的目录;
drwxr-xr-x. root root Oct : include ------->存放头部文件的目录;
drwxr-xr-x. root root Oct : logs -------->存放日志的目录;
drwxr-xr-x. root root Oct : man -------->存放帮助文档目录;
drwxr-xr-x. root root Oct : manual -------->存放手册的目录;
drwxr-xr-x. root root Oct : modules -------->存放模块的目录;
You have new mail in /var/spool/mail/root
[root@yinzhengjie apache]#
httpd安装参数说明:
  --prefix=/yinzhengjie/apache --->配置指定的安装路径,以后要是不用了直接删除即可;
  --sysconfdir=/yinzhengjie/etc/http24 ---->配置指定配置文件的存放处;
  --enable-so ----->配置支持基于DSO方式动态加载模块;
  --enable-ssl=/usr/local/openssl ------>配置支持https协议;
  --enable-cgi ------>配置支持CGI机制
  --enable-rewrite ------>配置支持URL重新机制;
  --with-zlib ------>配置zlib(它是网络上发送数据报文通用压缩库的API)库,你可以理解是支持压缩功能;
  --with-pcre ------>配置支持prel(支持正则);
  --with-apr=/yinzhengjie/apr ------>配置支持apr,如果不跟路径就会去默认的位置找,因为我们是自定义安装的就得写明路径;
  --with-apr-util=/yinzhengjie/apr-util/ ----->配置apr-util;
  --enable-modules=most ------>配置大多数常用的模块;
  --enable-mpms-shared=all ------>配置所有的mpm模块都编译进来;
  --with-event ------->配置指定使用event模式,当然你也可以选择worker模式或者prefork模式均可,由于event是该版本的新特性,因此我们就用新的来测试一下吧。
六.安装httpd后续配置
 .导出头文件(有人易于它二次开发需要导出,或是后期编译PHP可能也会用到)
[root@yinzhengjie ~]# ln -sv /yinzhengjie/apache/include /usr/include/httpd
`/usr/include/httpd' -> `/yinzhengjie/apache/include'
[root@yinzhengjie ~]#
.导出库文件(由于没有库,我们这里了解一下该命令即可)
[root@yinzhengjie ~]# vim /etc/ld.so.conf.d/http.conf
[root@yinzhengjie ~]# ldconfig -p ------>查看当前系统已经缓存的库文件列表
.导出man手册
[root@yinzhengjie ~]# more /etc/man.config | grep yinzhengjie ----->可以在man路径里面帮助文档路径
MANPATH /yinzhengjie/apache/man
[root@yinzhengjie ~]#
[root@yinzhengjie ~]# man -M /yinzhengjie/apache/man httpd ----->指定目录获取man帮助信息
.添加程序的path环境
[root@yinzhengjie ~]# more /etc/profile.d/httpd.sh
export PATH=/yinzhengjie/apache/bin:$PATH
[root@yinzhengjie ~]#
[root@yinzhengjie ~]# . /etc/profile.d/httpd.sh ----->重新加载一下该配置文件
[root@yinzhengjie ~]#
[root@yinzhengjie ~]# httpd -V ---->查看Apache当前的版本
Server version: Apache/2.4. (Unix)
Server built: Oct ::
Server's Module Magic Number: 20120211:68
Server loaded: APR 1.6., APR-UTIL 1.6.
Compiled using: APR 1.6., APR-UTIL 1.6.
Architecture: -bit
Server MPM: event
threaded: yes (fixed thread count)
forked: yes (variable process count)
Server compiled with....
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=
-D HTTPD_ROOT="/yinzhengjie/apache"
-D SUEXEC_BIN="/yinzhengjie/apache/bin/suexec"
-D DEFAULT_PIDLOG="logs/httpd.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="/yinzhengjie/etc/http24/mime.types"
-D SERVER_CONFIG_FILE="/yinzhengjie/etc/http24/httpd.conf"
[root@yinzhengjie ~]#
.启动新版的Apache。
[root@yinzhengjie ~]# apachectl start
[root@yinzhengjie ~]# lsof -i :
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
httpd root 4u IPv6 0t0 TCP *:http (LISTEN)
httpd daemon 4u IPv6 0t0 TCP *:http (LISTEN)
httpd daemon 4u IPv6 0t0 TCP *:http (LISTEN)
httpd daemon 4u IPv6 0t0 TCP *:http (LISTEN)
You have new mail in /var/spool/mail/root
[root@yinzhengjie ~]#
[root@yinzhengjie ~]#
[root@yinzhengjie ~]# curl http://www.yinzhengjie.org.cn ---->验证服务是否启动成功。
<html><body><h1>It works!</h1></body></html>
[root@yinzhengjie ~]# .查看配置文件的目录;
[root@yinzhengjie ~]# cd /yinzhengjie/etc/http24/
[root@yinzhengjie http24]# ll
total
drwxr-xr-x. root root Oct : extra ------>是httpd.conf主配置的补充文件目录;
-rw-r--r--. root root Oct : httpd.conf
-rw-r--r--. root root Oct : magic
-rw-r--r--. root root Oct : mime.types
drwxr-xr-x. root root Oct : original
[root@yinzhengjie http24]#
[root@yinzhengjie http24]# cp httpd.conf{,bak} ----->备份配置文件
[root@yinzhengjie http24]# grep mpm_event_module httpd.conf
LoadModule mpm_event_module modules/mod_mpm_event.so
[root@yinzhengjie http24]#
[root@yinzhengjie ~]# ll /yinzhengjie/etc/http24/extra/
total
-rw-r--r--. root root Oct : httpd-autoindex.conf
-rw-r--r--. root root Oct : httpd-dav.conf
-rw-r--r--. root root Oct : httpd-default.conf
-rw-r--r--. root root Oct : httpd-info.conf
-rw-r--r--. root root Oct : httpd-languages.conf
-rw-r--r--. root root Oct : httpd-manual.conf ------>配置手册是否启动;
-rw-r--r--. root root Oct : httpd-mpm.conf ------>配置httpd的工作模式文件;
-rw-r--r--. root root Oct : httpd-multilang-errordoc.conf
-rw-r--r--. root root Oct : httpd-ssl.conf ------->配置https的文件;
-rw-r--r--. root root Oct : httpd-userdir.conf
-rw-r--r--. root root Oct : httpd-vhosts.conf -------->配置虚拟主机的文件;
-rw-r--r--. root root Oct : proxy-html.conf
[root@yinzhengjie ~]# .自定义启动脚本
其实也不用自定义,直接把之前较低版本的脚本拿来改一下路径即可。
[root@yinzhengjie ~]# cd /etc/init.d/
[root@yinzhengjie init.d]# cp httpd httpd24
[root@yinzhengjie init.d]# more httpd24 | grep httpd=
httpd=/yinzhengjie/apache/bin/httpd ----->指定httpd服务存放处
[root@yinzhengjie init.d]# more httpd24 | grep apachectl=
apachectl=/yinzhengjie/apache/bin/apachectl ----->指定该命令的位置
[root@yinzhengjie init.d]#
[root@yinzhengjie init.d]# more httpd24 | grep pidfile= | grep -v LANG
pidfile=${PIDFILE-/yinzhengjie/apache/logs/httpd.pid} ------>指定进程存放pid的文件
[root@yinzhengjie init.d]#
[root@yinzhengjie ~]# chkconfig --add httpd24
[root@yinzhengjie ~]# chkconfig httpd24 on ------>让其开启开机自启即可;
[root@yinzhengjie ~]# chkconfig httpd24 --list
httpd24 :off :off :on :on :on :on :off
[root@yinzhengjie ~]#
[root@yinzhengjie ~]# service httpd24 restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]
[root@yinzhengjie ~]#