部署rails应用程序时要做的大事

在问题在部署rails应用程序之前我需要做些什么我得到的答案比“小事情”要大得多。 所以这个问题略有不同。

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

设置Capistrano进行部署如果您还不了解capistrano,请使用它来自动部署代码。 这将涉及设置共享目录和共享资源,如database.yml。

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

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

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

设置exception通知程序或exception记录程序您希望应用程序在发生故障时向您发出警告。 设置其中一个工具以跟踪生产exception。 注意:exception通知程序会在发生路由错误时向您发出警告(即,当人们使用胖手指URL或脚本小子攻击您时):因此,请考虑您希望框架在发生这种情况时执行的操作并进行相应调整。

确保所有密码都不受源代码控制如果你有source.yml,mail.yml(如果使用yaml_mail_config)或源代码管理中的其他敏感文件,请将它们从那里取出,用database.yml.example替换它们,并将它们放在服务器上的共享/文件夹中。

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

确保所有小网页文件都已到位如果您计划在Google中列出,请生成sitemap.xml文件。 如果您打算使用。 htaccess文件的东西,确保它在那里。 如果您需要robots.txt文件以防止对您网站的某些区域编制索引,请创建一个。 如果你想要一个好看的404页面 ,请确保它已正确设置。 如果您希望在部署时出现“Be Right Back”页面,请确保指定了Capistrano维护文件,并且Nginx或Apache知道如何以及何时重定向到它。

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

使用一些过程监控

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

monit和god都是帮助你摆脱这种命运的好选择。 它们也可以设置为访问您网站上的url以检查200响应代码。

设置服务器监控

这个领域的一些建议: fiveruns , newrelic , scout

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

如果您有一个集群,这种报告就更为重要。

备用

编写脚本以定期备份数据库以及用户可以上载的任何其他资产。 S3可能是一个很好的选择。

选择Web服务器/负载平衡器

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