1. <span id='tet4o'></span>

        1. <fieldset id='tet4o'></fieldset>
        2. <ins id='tet4o'></ins>

          <i id='tet4o'><div id='tet4o'><ins id='tet4o'></ins></div></i>

          <dl id='tet4o'></dl>

          <acronym id='tet4o'><em id='tet4o'></em><td id='tet4o'><div id='tet4o'></div></td></acronym><address id='tet4o'><big id='tet4o'><big id='tet4o'></big><legend id='tet4o'></legend></big></address>

            <code id='tet4o'><strong id='tet4o'></strong></code>
          1. <tr id='tet4o'><strong id='tet4o'></strong><small id='tet4o'></small><button id='tet4o'></button><li id='tet4o'><noscript id='tet4o'><big id='tet4o'></big><dt id='tet4o'></dt></noscript></li></tr><ol id='tet4o'><table id='tet4o'><blockquote id='tet4o'><tbody id='tet4o'></tbody></blockquote></table></ol><u id='tet4o'></u><kbd id='tet4o'><kbd id='tet4o'></kbd></kbd>
            <i id='tet4o'></i>

          2. Linux下重启apache的方法

            • 时间:
            • 浏览:8
            • 来源:124软件资讯网

                Linux系统为Ubuntu

                一、Start Apache 2 Server /启动apache服务

                # /etc/init.d/apache2 start

                or

                $ sudo /etc/init.d/apache2 start

                二、 Restart Apache 2 Server /重启apache服务

                # /etc/init.d/apache2 restart

                or

                $ sudo /etc/init.d/apache2 restart

                三、Stop Apache 2 Server /制止apache服务

                # /etc/init.d/apache2 stop

                or

                $ sudo /etc/init.d/apache2 stop

                linux下的apache 重启和制止

                本文档叙述了在类Unix系统上怎样制止和重启Apache  。 Windows NT/2000/XP/2003的用户请参见以服务方式运行Apache  ,Windows 9x/ME用户则参见在控制台中运行Apache  。

                简介

                为了制止或者重新启动Apache ,你必须向正在运行的httpd历程发送信号  。有两种发送信号的要领  。第一种要领是直接使用UNIX的kill下令向运行中的历程发送信号  。你也许你会注重到你的系统里运行着许多httpd历程 。但你不应该直接对它们中的任何一个发送信号  ,而只要对已经在PidFile中纪录下了自身PID的父历程发送信号  。也就是说 ,你不必对父历程以外的任何历程发送信号  。你可以向父历程发送三种信号:TERM、HUP、USR1  ,我们过一会儿再举行详细的说明  。

                你可以用下面这样的下令来向父历程发送信号:

                kill -TERM `cat /usr/local/apache2/logs/httpd.pid`

                第二种要领是使用下面将要形貌的httpd二进制可执行文件的 -k 下令行选项:stop、restart、graceful、graceful-stop  。不外我们推荐你使用apachectl控制剧本来向httpd二进制可执行文件通报这些选项  。

                当你向httpd发送信号后  ,你可以这样来读取它的举行历程:

                tail -f /usr/local/apache2/logs/error_log

                你可以修改这些示例以顺应你的ServerRoot和PidFile设置  。

                立刻制止

                信号:TERM

                apachectl -k stop

                发送TERM或stop信号到父历程可以使它连忙杀死所有子历程  。这将破费一些时间来杀死所有子历程 。然后父历程自己也退出  。所有举行中的请求将被强行中止  ,而且不再接受其它请求  。

                优雅重启

                信号: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已经绑定了这些端口)  。若是是由于其他缘故原由那么就可能是一个设置文件发生的错误  ,你就应当在举行优雅重启之前纠正这个错误  。立刻重启

                信号:HUP

                apachectl -k restart

                向父历程发送HUP或restart信号会使它象收到TERM信号一样杀掉所有的子历程  ,差别之处在于父历程自己并不退出 。它重新读入设置文件、重新打开日志文件 。然后发生一系列新的子历程来继续服务  。

                使用mod_status的用户会注重到在HUP信号发出后  ,服务器统计信息会被清零 。

                若是你重启时设置文件有误  ,那么父历程将不会重启  ,而是报错并退出  。参见上文中制止的要领 。优雅制止

                信号:WINCH

                apachectl -k graceful-stop

                WINCH或graceful-stop信号使得父历程建议子历程在完成它们现在的请求退却出(若是他们没有举行服务 ,将会连忙退出) 。然后父历程删除PidFile并制止在所有端口上的监听  。父历程仍然继续运行并监视正在处置惩罚请求的子历程  ,一旦所有子历程完成使命并退出或者凌驾由GracefulShutdownTimeout指令划定的时间 ,父历程将会退出  。在超时的情形下  ,所有子历程都将吸收到TERM信号并被强制退出 。

                在"优雅"状态下  ,TERM信号将会立刻中止父历程和所有子历程  。由于PidFile已经被删除  ,你将无法使用apachectl或httpd发送该信号  。

                graceful-stop允许你同时运行多个相同设置的httpd实例  。这在对Apache举行平滑升级的时间是一个很是有用的特征 。不外它在某些设置的情形下同样可能会导致死锁和竞争条件 。

                必须注重确保诸如Lockfile和ScriptSock之类的磁盘文件包罗服务器的PID  ,而且能够宁静的共存 。然而若是一个设置指令、第三方模块或持久CGI使用任何磁盘锁或状态文件  ,必须注重确保多个httpd运行实例之间不会争抢文件 。

                你还必须防止潜在的竞争条件 ,好比使用rotatelogs气势派头的管道日志  。运行中的多个rotatelogs实例贪图同时转动统一个日志文件可能会导致相互破损对方的日志文件  。

                附录:信号和竞争条件

                在Apache 1.2b9 之前  ,有许多关于重启和殒命信号的竞争条件  。关 于竞争条件的一个简朴形貌是:一个时间敏感的问题  ,若是一些事情在不适当的时间或以不适当的顺序发生 ,它将作出你不期望的反映;若是同样的事情在适当的时 间发生 ,则不会泛起异常  。依附那些拥有"准确"特征设置的系统结构 ,我们只管制止了它们的泛起 。但值得注重的是  ,仍然有一些竞争条件存在于这样的系统结构 中  。

                使用物理磁盘的ScoreBoardFile就有损坏ScoreBoard的潜在危险 。这将发生在"bind: Address already in use"(HUP之后)或"long lost child came home!"(USR1之后)时  。前者是一个致命错误 ,尔后者则会使服务器丢失ScoreBoard的一个记载 。以是我们建议多使用优雅重启 ,偶然使用硬重启  。这些问题很难明决  ,但幸运的是大多数结构并不需要ScoreBoard文件  。而若是你需要这样的结构  ,你可以参考ScoreBoardFile文档  。

                当 每个子历程在一个HTTP的连续毗连(KeepAlive)中涉及到第二个并发的请求时  ,所有的结构都市或多或少存在竞争状态的问题  。它将在读取了请求而 没有读取任何请求头之后连忙退出 。这个修复对于1.2来说来得太晚了  。但由于连续毗连的客户端已经思量到网络延时和服务器超时会造成类似的情形  ,以是理论 上说  ,这不是一个太大的问题  。而现实上似乎也没有任何影响:在一个测试案例中服务器在一秒之内被重启了20次 ,而客户端却乐成的浏览了网站  ,而且没有任何 破损的图片或空文档 。