Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
可以在提交后svn钩子中强制apache重新启动吗?_Svn_Apache_Post Commit - Fatal编程技术网

可以在提交后svn钩子中强制apache重新启动吗?

可以在提交后svn钩子中强制apache重新启动吗?,svn,apache,post-commit,Svn,Apache,Post Commit,我已设置并运行以下提交后挂钩: #!/bin/bash /usr/bin/svn update /var/www/html/dev > /var/www/svnrepo/hooks/post-commit-log 我正在使用Python/Django进行开发,每当我对任何“.py”文件进行任何更改时,我都必须使用SSH和“sudo/sbin/service httpd restart”是否有办法将其添加到提交后文件的底部? 我看到和/或想到的一些障碍: 我正在为apache的SVN回购

我已设置并运行以下提交后挂钩:

#!/bin/bash
/usr/bin/svn update /var/www/html/dev > /var/www/svnrepo/hooks/post-commit-log
我正在使用Python/Django进行开发,每当我对任何“.py”文件进行任何更改时,我都必须使用SSH和“sudo/sbin/service httpd restart”是否有办法将其添加到提交后文件的底部?

我看到和/或想到的一些障碍:

  • 我正在为apache的SVN回购服务 (例如:。, ),因此在 “确认”被发回 提交后可能会导致 问题
  • 我认为后提交钩子运行 在用户的“apache”下。。。做 此用户有访问的权限 /sbin/服务httpd重启
-软呢帽芯8

谢谢!
-Tom

如果Apache进程正在侦听一个小于1024的端口,那么它需要是root才能停止并启动自身。如果您正在侦听1024以上的端口,则可以以非root用户身份启动它,然后使用提交后钩子重新启动它

如果Apache版本中有可用的优雅连接,那么您还需要使用/etc/init.d/httpd-gratence而不是restart来不终止正在工作的连接

最后,post-commit钩子可以在后台启动另一个子进程,该子进程在重新启动前休眠几秒钟,让客户端完全完成。您必须确保钩子脚本完全脱离stderr。例如,这在Subversion 1.6.1中用作提交后钩子,客户端将从服务器分离,睡眠仍将运行

#!/bin/sh
/bin/sleep 60 2>/dev/null &
如果您可以等待站点更新一分钟,那么您可以输入一个cron,由root运行一个运行“svn update”的脚本,如果有更新,则会跳转服务器