【问题标题】:Big things to do when deploying a rails app部署 Rails 应用程序时要做的大事
【发布时间】:2008-09-19 11:53:13
【问题描述】:

What little things do I need to do before deploying a rails application 的问题中,我得到了很多比“小事”更大的答案。所以这个问题略有不同。

在部署 Rails 应用程序之前,我需要采取哪些合理的主要步骤。在这种情况下,我的意思是需要 5 分钟以上的时间,因此需要安排。对于小的在线配置更改,请使用小问题。

【问题讨论】:

    标签: ruby-on-rails deployment


    【解决方案1】:

    设置 Capistrano 以进行部署 如果您还不了解 Capistrano,您会想学习它,并使用它以自动方式部署您的代码。这将涉及设置您的共享目录和共享资源,如 database.yml。

    安装基于 C 的 MySQL gem 如果您没有所有必需的库,这可能需要一点时间,但不到 20 分钟。

    确保您不会受到常见的 Web 应用程序攻击 会话固定、会话劫持、跨站点脚本、SQL 注入(可能您不必担心 SQL 注入)。在视图屏幕中输出用户输入的数据时,请确保使用 h()。网上有很多关于这个的好材料。

    选择服务器架构 Nginx、Mongrel、FastCGI、CGI、Apache、Passenger:有很多选择。考虑如何使用您的应用程序并确定最佳架构,然后进行设置。

    设置异常通知器或异常记录器您会希望您的应用程序在中断时向您发出警告。设置这些工具之一来跟踪生产异常。注意:异常通知器会在发生路由错误时警告您(即当人们使用胖手指 URL 或脚本小子攻击您时):因此请考虑在发生这种情况时您希望框架做什么并相应地进行调整。

    确保您的所有密码都在源代码管理之外 ,用 database.yml.example 替换它们,并将它们放在服务器上的 shared/ 文件夹中。

    确保您的数据库已锁定。很多人在设置新的生产 Rails 机器时忘记保护 MySQL。不要像他们一样。

    确保所有的小网络文件都在适当的位置如果您打算在 Google 中列出,请生成一个 sitemap.xml 文件。如果您打算使用 .htaccess 文件来做某事,请确保它存在。如果您需要一个 robots.txt 文件来防止您网站的某些区域被索引,请创建一个。如果您想要一个好看的 404 页面,请确保其设置正确。如果您希望在部署时出现“立即返回”页面,请确保您指定了 Capistrano 维护文件,并且 Nginx 或 Apache 知道如何以及何时重定向到它。

    准备好您的 SSL 证书 如果您要使用 SSL,请确保您获得在您的生产域中有效的证书,并进行设置。

    【讨论】:

      【解决方案2】:

      使用一些进程监控

      有时您的进程(在许多情况下是杂种)会死掉,或者其他坏事会发生在它们身上。例如,内存泄漏可能会导致内存消耗无限增加,或者某个进程可能会开始使用所有 CPU。

      monitgod 都是让你摆脱这种命运的好选择。也可以将它们设置为点击您网站上的 url 以检查 200 响应代码。

      设置服务器监控

      这个空间的一些建议:fiverunsnewrelicscout

      这些工具将在您的服务器上记录详细的指标,并且在出现问题并且您需要查看实际发生的情况时非常有用。它们还为您提供有关服务器负载的实时信息。

      如果您有一个集群,这种报告就更加关键了。

      备份

      编写一个脚本来定期备份您的数据库和您的用户可以上传的任何其他资产。 S3 可能是一个不错的选择。

      【讨论】:

        【解决方案3】:

        选择一个网络服务器/负载均衡器

        我的首选服务器是 nginx,但常见的模式是以 apache + mod_proxy_http 开头。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-09-09
          • 1970-01-01
          • 2019-02-23
          • 2012-10-06
          • 1970-01-01
          • 2014-11-15
          相关资源
          最近更新 更多