Apache 加载配置文件不重启 - 北国的雨

时间:2024-03-08 14:30:47

Apache 加载配置文件不重启

 

apache加载配置文件不重启, 在windows没有找到怎样实现,linux系统下有下列三种实现方案:

 

1. 通过服务方式重启

httpd –t #检验语法

   service httpd reload

2.通过granceful方式重启

httpd –t #检验语法

apachectl graceful

3.通过进程方式重启

httpd –t #检验语法

ps aux | grep httpd #查看带ROOT的
kill -HUP 就可以

原理解释

1. kill 使用说明

kill [ -s signal | -p ] [ -a ] pid ...   

kill -l [ signal ]  

-s (signal) : 其中可用的讯号有 HUP (1), KILL (9), TERM (15), 分别代表著重跑, 砍掉, 结束; 详细的信号可以用 kill -l
-p : 印出 pid , 并不送出信号
-l (signal) : 列出所有可用的信号名称

【示例】

将 pid 为 323 的行程砍掉 (kill) :

kill -9 323  

将 pid 为 456 的行程重跑 (restart) :

kill -HUP 456  
 

 

2.apaceh graceful

    信号:USR1
    apachectl -k graceful
    USR1或graceful信号使得父进程建议子进程在完成它们现在的请求后退出(如果他们没有进行服务,将会立刻退出)。父进程重新读入配置文件并重新打开日志文件。每当一个子进程死掉,父进程立刻用新的配置文件产生一个新的子进 程并立刻开始伺服新的请求。
    重启代码的设计能够确保MPM进程控制指令的正常运作,也就是在重启过程中确保有适当数量的进程和线程以响应客户端的请求。它是这样StartServers的:如果在一秒钟以后还没有新创建StartServers个子进程,则创建出足够完成现在任务的子进程个数。因此,代码除了保有能够维持服务器的现有负载数量的子进程外,也确保StartServers按你的意愿运作。
    使用mod_status的用户会注意到在USR1信号发出后,服务器的统计信息没有被清零。代码被写成既能将你服务器无法伺服新请求的时间降至最少(这些请求将被操作系统放到队列里,使得它们不会丢失),又能遵从你的参数优化。为了做到这一点,它将在重新生成子进程的过程中,在scoreboard上保存所有子进程的状态。
mod_status还会将那些在优雅重启前就已经开始而没有结束伺服请求的子进程用一个"G"来标志。
    目前,日志滚动脚本还无法使用USR1来确定所有写入预重启日志的子进程都已结束。我们建议你在发出了USR1信号后等待一个适当的时间,然后再对旧的日志做处理。比如说如果对于一个窄带用户来说,大部分的点击处理将在10分钟之内完成,那么你应该在处理旧的日志前等待15分钟。
    如果Apache重启时发现配置文件有误,那么父进程将不会重启,而是报错并退出。在优雅重启的情况下,它将在处理中的子进程存在的情况下维持它的存在(就是那些被要求在处理完它们的请求后"优雅退出"的欧姆龙电子血压计子进程)。如果你要重启服务器,这将导致一些问题:它将不能绑定到它的监听端口。在执行重启之前,你可以用 -t 命令行参数来检查配置文件语法的正确性(参见httpd)。但这仍然不能保证服务器一定可以正确的重启。为了从语法和语义两方面检查配置文件,你可以用一个非root用户来启动httpd。如果没有错误,它将尝试去打开套接字和日志文件,继而因没有root权限而失败(或是因为现在运行的httpd已经绑定了这些端口)。如果是因为其他原因那么就可能是一个配置文件产生的错误,你就应当在进行优雅重启之前改正这个错误。