how to start/stop/restart HTTP Server(如何启动/停止/重启HTTP服务器)

来源:互联网 发布:淘宝钻石店铺购买 编辑:程序博客网 时间:2024/05/19 19:31
如果在配置文件中配置的监听端口是80(或是其他低于1024)的端口,就须要拥有root权限去启动apache,这样可以使它绑定到这个特权端口。
一旦服务器启动并完成一些基本的工作,如开启日志文件,它就会启动几个子进程,这些子进程的工作是负责监听和响应客户的请求。
主http进程继续以root身份运行,但是子进程是以低级别权限用户运行的。这是由指定的Multi-Procesing Module控制的。
如果apache在启动时遇到致命的问题,它会在推出之前向控制台或者日志文件写消息去描述这个问题。
最常见的错误信息之一是“Unable to bind to port”(不能绑定到端口),这个问题可能是由以下的两种原因之一:
·试图去启动在一个特权端口上server,但不是以一个root用户身份登录的
·端口被另一个apache实例或者其他的web server绑定
如果想在启动时就运行server,需要将apachectl添加到系统的启动文件中(典型的如rc.local文件或者在rc.N文件夹中),这样将会以root运行apache。 
为了停止或者重启Apache,需要向正在运行的httpd进程发送一个信号。有两种方式可以发送信号。其一是使用unix的kill命令直接向进程发送信号。
你可能注意到有很多httpd可执行进程运行在系统上,但是不需要向每一个进程都发送一个信号,只有向父线程发送信号就可以了。
有四种信号可以向父进程发送:TERM,USR1,HUP和WINCH,下面将会花一些时间来描述一下:
使用下面的命令向父进程发送信号:
kill -TERM `cat /usr/local/apache2/logs/httpd.pid`
第二种向httpd发送信号的方法是使用-k命令行选项:stop,restart,graceful和graceful -stop.
这些参数是针对httpd二进制的,推荐使用apachectl脚本,将会把这些参数传递到httpd。
向httpd发送信号后,可以使用如下的命令 查看进度:
tail -f /usr/local/apache2/logs/error_log
可以对命令的后半部分修改下让其和自己的机器上的ServerRoot和PidFile设置相匹配。
现在停止(Stop Now):
signal:TERM
apachectl -k stop
发送TERM或stop信号到父进程,这样会试图杀死所有的子进程,父进程存在直到子进程全部杀死,当前请求终止,不再响应请求。
优雅地重启(Graceful Restart)
Signal:USR1
apachectl -k graceful
发送USR1或graceful信号到到父进程,去建议子进程在当前的请求结束后退出(没有任何请求的话直接退出),
但是父进程并不退出,它重新读取配置文件,重新打开日志文件。
立即重启(Restart Now)
Signal:HUP
apachectl -k restart
发送HUP或restart信号到到父进程去杀死子进程(就像TERM),但是父进程并不退出,它重新读取配置文件,重新打开日志文件。 
优雅的关闭(Graceful Stop)
Signal:WINCH
apachectl -k graceful-stop
发送WINCH或graceful-stop信号到到父进程,去建议子进程在当前的请求结束后退出,子进程退出后,父进程也退出。
原创粉丝点击