如何在被 capistrano 禁用时访问 rails 应用程序,使用 deploy:web:disable 来更新内容?

Posted

技术标签:

【中文标题】如何在被 capistrano 禁用时访问 rails 应用程序,使用 deploy:web:disable 来更新内容?【英文标题】:How to access rails app when disabled by capistrano, using deploy:web:disable, to update content? 【发布时间】:2011-05-11 22:29:41 【问题描述】:

我正在使用 capistrano 部署 rails 3 网站,并且正在使用 deploy:web:disable 在网站更新时向用户显示维护页面。

只有一个问题,我希望能够通过管理界面访问该站点以向其添加内容。我正在使用设计作为身份验证解决方案。

有没有办法只向未登录的用户或类似的用户显示维护页面。或者是否有其他简单的方法可以为用户设置维护页面,同时仍然能够访问管理区域?

谢谢。

【问题讨论】:

可能想告诉我们一些关于你的堆栈的信息。什么是维护页面? nginx,阿帕奇? 【参考方案1】:

一种方法是将您自己的 IP 地址作为例外添加到您的 .htaccess 文件中。这将使您在维护期间可以完全访问您的 Rails 应用程序,但不能访问其他人

将此添加到 Rails 应用程序的 .htaccess 文件中,位于 RewriteRule 上方。 (显然将 127.0.0.1 更改为您的实际 IP 地址)

RewriteCond %REMOTE_ADDR !^127\.0\.0\.1$

如果你有一个静态 IP,你可以把它放进去,或者我可能会通过另一个具有静态 IP 的服务器设置一个 SOCKS 代理并使用该 IP,这样你就知道如果需要你可以从任何地方访问。

希望这会有所帮助。

【讨论】:

【参考方案2】:

另一种选择是使用一个特殊的管理端口来访问您的网站,并将其放在一个简单的 http auth 后面。这取决于您使用的是哪种服务器,但本质上您需要这样的东西(警告,伪配置):

listen 81
AuthType Basic
AuthName "Admin site"
AuthUserFile /usr/local/apache/passwd/passwords
Require user

只需确保虚拟主机指令不会像您的常规站点那样检查maintenance.html 文件的存在。然后它应该巧妙地绕过常规站点,并且它受密码保护以启动。

【讨论】:

以上是关于如何在被 capistrano 禁用时访问 rails 应用程序,使用 deploy:web:disable 来更新内容?的主要内容,如果未能解决你的问题,请参考以下文章

Capistrano 错误 tar:这看起来不像 tar 存档

如何禁用 UIButton 的高亮控制状态?

Capistrano 与 PostgreSQL,错误:其他用户正在访问数据库

如何在通过 Capistrano 部署 Rails 应用程序时输入 ssh 密钥的密码?

如何在 Capistrano 中切换远程用户

Capistrano & Bash:忽略命令退出状态