我从一个开发者那里inheritance了一个我不能再联系的项目。 这是一个Ruby on Rails项目,在Linode上以SVN作为vcs。
我可以SFTP到服务器和更改文件,但更改不显示在网站上,直到我ssh和重新启动服务器。 这些不是对configuration文件的更改,只是对某些erb.html视图的简单更改。
在我以前使用Linode的经验中,我只是推了一下,所做的改变就显现出来了。 也许老开发者用svn钩子设置了一些东西?
我可以想到两种可能导致这种情况的可能性:
stat设置切换到Off 。 对Ruby不够熟悉,我只能猜测内置了一个OpCodecaching,并且重新启动整个服务器刷新caching。 您可能只需重新启动HTTP守护程序即可脱身。 SVN post-commit hook当然可以用来完成这里所做的任何事情,甚至是重新启动服务器,但是我会提醒注意的是, 将代码部署到生产服务器应该有一定的控制权,并且应该与开发过程分开。 开发人员提出并自动立即部署的想法给了我heebie-jeebies。
你并不需要重启服务器,特别是不用Rails项目。 在最坏的情况下,您可能需要重新加载Apache / Nginx / Web服务器,但实际上,您可以在内部重新启动项目。
你可以做两件事之一。 假设您的项目由Phusion Passenger提供服务,您可以在服务器上的回购库中添加提交挂钩以重新加载应用程序…
cd /wherever/your/svn/repository/is/hooks touch post-commit chmod 755 post-commit
接着
#!/bin/sh #post-commit hook. This will force Phusion to reload your RoR project echo "Some message. Just letting you know I'm doing my job" /bin/touch /wherever/your/project/is/tmp/restart.txt
或者重新加载web服务器(你需要确保你有sudo-without-password权限,否则这将失败,即使你不使用Phusion也会强制刷新)
#!/bin/sh #post-commit hook. This will reload the webserver, forcing everything to reload. echo "Some message. Just letting you know I'm doing my job" sudo /sbin/service whatever-your-webserver-init-is reload
嘿presto。 您的项目现在在您提交时重新加载,您应该能够立即看到您的更改*(重新加载页面后)。
*这些钩子是SVN的。 他们可能在Git工作,谁知道,直到你尝试。 有人可能想检查我的情况下,我错了