我有这样一个场景,我想使用 capistrano 来部署我的 ruby on rails 应用程序:
- Web 应用程序位于一个瘦集群上,配置文件存储在 /etc/thin 下。在 /etc/init.d/thin 中还有一个 init 脚本,因此只要我的服务器需要重新启动,它就会自动启动
- nginx 也以同样的方式执行(作为一个 init 脚本守护进程)
- 为了确保万一有人入侵了我的网络服务器,我不希望他们做一些太可怕的事情,所以不允许网络用户使用 sudo。
- Thin 和 nginx 都以网络用户身份运行以强制执行此类安全性
现在,当我需要进行部署时,我需要将文件安装在 /home/webuser/railsapps/helloworld 下,然后我需要 cap 脚本重新启动我的瘦身。我想保留网络用户拥有的所有文件,因此 cap 脚本主要用户以网络用户身份运行。现在当我想重新启动瘦守护程序时出现问题,因为 webuser 不能 sudo。
我正在考虑是否可以调用两个单独的会话- webuser 进行文件部署,然后调用一个特殊的 sudoer 来重新启动守护进程。谁能给我一个示例脚本?