我们将使用Capistrano自动执行常见的部署任务,因此每次我们必须将新版本的Rails应用程序部署到服务器时,我们都可以通过一些简单的命令来实现。...install rails -v '4.2.0' -V --no-ri --no-rdoc 第五步 - 设置SSH密钥 由于我们要设置流畅的部署,因此我们将使用SSH密钥进行授权。...输入以下命令来捆绑您的Rails应用程序: $ bundle 捆绑后,运行以下命令配置Capistrano: $ cap install 这将创建: Capfile 在您的Rails应用程序的根目录中...,可帮助您管理应用程序版本并在进行部署时自动执行某些任务: 使用production作为Rails应用程序的默认环境 自动管理应用的多个版本 使用优化的SSH选项 检查您的git遥控器是否是最新的 管理您应用的日志...这会侦听端口80上的流量并将请求传递给您的Puma套接字,将nginx日志写入应用程序的“当前”版本,压缩所有资产并在浏览器中将其缓存到最大到期时间,在公共场合提供HTML页面文件夹作为静态文件,并设置默认的最大值
目录 1. Capistrano Ruby编程语言 Capistrano操作方式 系统/服务器管理 应用程序部署 2....应用程序部署 部署应用程序(无论是网站,API还是服务器)通常意味着从头开始(或从及时拍摄的快照)设置系统,通过更新所有内容,下载依赖项,设置文件来准备它结构和权限,然后最终上传您的代码库 - 或使用源控制管理器...安装: cap --version # Capistrano Version: 3.1.0 (Rake Version: 10.1.0) Capistrano 入门 一旦设置好所有必要的组件并准备就绪...注意:所推荐的Capistrano,不包含你仓库内的任何敏感信息(如数据库连接的安全凭证)。...我们现在准备使用Capistrano进行部署。 ---- 参考文献: 《 How To Use Capistrano to Automate Deployments: Getting Started》
介绍 当您准备部署Ruby on Rails应用程序时,需要考虑许多有效的设置。...教程准备 本教程假定您将在部署应用程序的用户上安装了安装了以下软件的Ubuntu 14.04服务器(没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器...使用以下命令退出PostgreSQL控制台: \q 现在,我们已准备好使用正确的数据库连接信息配置您的应用程序。 配置数据库连接 确保您位于应用程序的根目录(cd ~/appname)中。...安装rbenv-vars插件 在部署生产Rails应用程序之前,应使用环境变量设置生产密钥和数据库密码。...您已使用Nginx和Unicorn部署了Ruby在Rails应用程序的生产环境。 如果您希望改进生产Rails应用程序部署,您应该查看我们的如何使用Capistrano自动部署的教程系列。
我记得在十多年前曾将Capistrano用作远程服务器自动化工具。它会使用SSH按照脚本允许您将更新部署到目标服务器。...如果您需要在新站点上处理部署,除了您自己偏爱的工具之外,拥有一系列工具也很好。您甚至可能不得不在旧堆栈中使用Capistrano。因此,让我们来评估这件古董,看看它有多大的价值。...使用这些定义,Capistrano可以针对特定计算机执行操作。 任务和角色 Capistrano中的基本命令是任务。这些是在部署的不同阶段执行的。...更好的说法可能是,像Capistrano这样的工具出现在任何团队的部署之旅的路径上,作为在需要更广阔的视野之前的一个路径点。...但即使作为一个蒙尘的遗迹,Capistrano仍然是一个伟大的模块化工具,用于自动化Web应用程序的部署和维护。 至于加利福尼亚州的Capistrano?恐怕是坏消息。
最近我写了一篇关于 Capistrano 的文章,没想到会再次提及它,因为它是早期应用部署历史的遗迹。...但这是来自 37Signals 的,所以你可以想象他们部署一个 Rails 应用程序。因此,有关数据库、负载均衡器等方面都有所提及。...# env: # clear: # DB_HOST: 192.168.0.2 # secret: # - RAILS_MASTER_KEY 因此,您将为您的服务器设定目的地,并指定要部署的镜像名称...如预期的那样,如果我现在执行此操作,系统会迅速告诉我没有内容可以交流: 那么,Kamal 如何处理所有指定和可用的服务器呢? 连接到服务器后,如果需要,它将安装 Docker 和 curl。...在推送环境变量之后,它将使用当前版本的应用程序启动一个新容器,并停止旧容器。 如果您对应用程序进行了更改,那么在初始设置之后,kamal deploy 将更新您的系统。
但在这样的过程中,我们不可避免地要积累下一定的技术债务和复杂性。除了部署策略之外,我们还需要发明新的工具来管理这些堆栈,并创建贴合需求的 CI/CD 来支撑运营和编程。...这样就能保住多年以来投入并建设的资产,“单纯”把我们的工具重新部署在新位置。 另一个挑战是,我们的大部分应用程序在几年之前就完成了容器化,为了继续兼容遗留资产,我们希望保持这种状态。...我们既能保留大量现有容器化技术,又能以相当熟悉的全新方式运行应用程序。 多年以来,我们一直在数据中心内用 capistrano 部署。...这里的一切就是最基础的 Ruby、Rails 还有 Docker,Docker 还被包含在 mrsk 当中。 现在我们的部署时间从几分钟缩短到了大约一分钟,有时候还更短。...其实 K8s 里一切有价值的东西都不是现成的,需要稍后添加并自主管理。容器运行时、存储部署信息的数据库、网络设置和管理、存储设置和管理等等,这一切都不是 Kubernetes 的本体。
在生产中部署Rails应用程序时,开发人员可以从几个流行的应用程序服务器中进行选择,包括Puma,Unicorn和Passenger。...如果您不熟悉该sudo命令,可以查看我们的“ 用户和组”指南。 开始之前 按照入门和保护服务器指南进行操作,并设置Linode的主机名。...安装并正确配置后,发出以下命令: sudo apt-get install libmysqlclient-dev 部署Rails应用程序 将您的Rails应用程序复制到您的Linode。...导航到应用程序的根目录并安装所有依赖项: cd railsapp bundle install Rails需要JavaScript运行时。...您的Rails应用程序现在应该是活动的。 下一步 现在您的应用程序正在运行,请考虑使用Capistrano等构建工具或Travis或Jenkins等持续集成(CI)工具来加速部署工作流程。
代码片段在您的代码中输入最常用模式结构的实时模板。使用预定义的片段并创建自己的片段。智能编辑通过代码评论,扩展/缩小选择,内联正则表达式检查,同步标签编辑等功能提高工作效率。...在Rails应用程序中快速切换模型,视图和控制器。高级搜索选项跳转到任何类,文件或符号:按模式和文件夹过滤,或使用正则表达式。甚至可以找到任何IDE动作或工具窗口。...3.Ruby工具的使用集成的Rake,Bundler等等运行Rails生成器和服务器,Rake和Bundler任务。使用模型/类/ gem依赖关系图分析项目结构。...内置控制台通过使用集成的Rails,IRB,SSH控制台和本地终端,在不离开IDE的情况下运行脚本和应用程序。...部署工具通过FTP或SFTP配置自动部署,并使用Vagrant,Docker,Capistrano,Chef和/或Puppet轻松管理您的基础架构。
这个特殊的设置使用简单的“post-receive”Git hooks,除了Puma作为应用服务器,Nginx作为Puma的反向代理,PostgreSQL作为数据库。...准备你的Rails应用程序 在您的开发机器上,很可能是您的本地计算机,我们将准备您要部署的应用程序。 可选:创建Rails应用程序 理想情况下,您已经拥有了要部署的Rails应用程序。...保存并退出。这会将Puma配置为应用程序的位置,以及其接口,日志和PID的位置。随意修改文件,或添加您需要的任何其他选项。...我们将把我们的应用程序部署到用户主目录中名为“appname”的目录中。在我们的示例中,它将是以下内容(请务必更新应用程序所在的路径): /home/deploy/appname 保存并退出。...当生产远程接收推送时,它将执行我们之前设置的post-receivehook脚本。如果正确设置了所有内容,现在应该可以在生产服务器的公共IP地址上使用您的应用程序。
考虑因素 这是一个团队开发的项目,有一个独立团队负责 团队成员会发生变化,新加入的成员必须快速上手项目 应用程序必须易于理解并修改 期望能实现应用的持续集成与部署 必须可以多实例部署应用程序,以满足可伸缩性和可用性要求...想用比较新的技术(框架、编程语言等) 解决方案 使用单体架构,例如: 一个 Java WAR 文件启动的程序 一个单目录 Rails 或者 NodeJS 程序 举例 假设现在正在设计一个电商应用,功能包括接收来自客户的订单...Rails 应用程序由部署在 Nginx 或 Tomcat 上的 JRuby 或 Nginx 上的单一目录层次结构组成。可以在负载均衡器后面部署多个实例,以扩展和提高可用性。 ?...分析 这种解决方案的好处有: 开发简单,当前的 IDE 基本都是按照开发单体应用程序开发的。 部署简单,只要把一个文件或者目录部署到 Web 容器里即可。...单块应用程序的问题在于它阻止了团队独立工作。小组必须协调他们的开发工作和重新部署。对于一个团队来说,进行更改和更新生产要困难得多。 需要长期使用同一个技术栈。
介绍 当您准备部署Ruby on Rails应用程序时,需要考虑许多有效的设置。...自建服务器难免会遇到这样的问题,配置SSL很麻烦,虽然对一部分人来说这也是一种乐趣,但是如果您在生产环境使用,我还是建议您直接使用云关系型数据库,云关系型数据库让您在云中轻松部署、管理和扩展的关系型数据库...使用以下命令退出PostgreSQL控制台: \q 现在,我们已准备好使用正确的数据库连接信息配置您的应用程序。 配置数据库连接 确保您位于应用程序的根目录(cd ~/appname)中。...安装rbenv-vars插件 在部署生产Rails应用程序之前,应使用环境变量设置生产密钥和数据库密码。...保存并退出。这会将Puma配置为应用程序的位置,以及其套接字,日志和PID的位置。随意修改文件,或添加您需要的任何其他选项。
2.代码托管平台 GitLab GitLab是一个利用Ruby on Rails开发的开源应用程序,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。...事实上,由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目现在使用 Maven,而且公司项目采用 Maven 的比例在持续增长。...2.Capistrano Capistrano 是一个用来并行的在多台机器上执行相同命令的工具,使用用来安装一整批机器。它最初是被开发用来发布 Rails 应用的。...4.Powershell 5.OpenStack Heat 五、维护 日志记录 1.Logstash Logstash 是一个应用程序日志、事件的传输、处理、管理和搜索的平台。...你可以用它来统一对应用程序日志进行收集管理,提供 Web 接口用于查询和统计。
编者按:DevOps越来越流行,越来越成为加快产品研发速度、提升团队效率的有效工具。现在,在开发、测试、部署、交付、维护以及监控分析等工作中,有越来越多的开源DevOps工具可以使用。...开源中国 Git 代码托管平台:http://git.oschina.net/ 代码托管平台 GitLab GitLab 是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的Git...Capistrano Capistrano 是一个用来并行的在多台机器上执行相同命令的工具,使用用来安装一整批机器。它最初是被开发用来发布 Rails 应用的。...Powershell OpenStack Heat 维护 日志记录 Logstash Logstash 是一个应用程序日志、事件的传输、处理、管理和搜索的平台。...你可以用它来统一对应用程序日志进行收集管理,提供 Web 接口用于查询和统计。
译者自序: 熟悉我的朋友都知道,我很不喜欢翻译东西,因为在两种语言的思维方式之间做频繁切换对我来说是件很痛苦的事情。...单个Rails或者NodeJS代码目录层级。 举例 假设需要构建一款电子商务应用程序,使其能够接收来自客户的订单、验证库存信息与可用信用额度,而后进行发货。...一个Rails应用由单一目录层级构成,该目录层级的部署通过在Apache/Nginx上使用Phusion Passenger,或者在Tomcat上使用JRuby得以实现。...易于部署——你只需要将该WAR(或者目录层级)部署在合适的运行环境中即可。 易于扩展——你可以在负载均衡器后面运行多个应用副本实现扩展。...重新部署会增加风险,进而阻碍频繁更新。因为用户界面开发者经常需要进行快速迭代与频繁重新部署,所以这对用户界面开发者而言更加是个难题。 应用扩展困难——单体架构只能进行一维伸缩。
背景 本文的贡献者者参与过数以百计的应用程序的开发和部署,并通过 Heroku 平台间接见证了数十万应用程序的开发,运作以及扩展的过程。...通过打包系统安装的类库可以是系统级的(称之为 “site packages”),或仅供某个应用程序使用,部署在相应的目录中(称之为 “vendoring” 或 “bunding”)。...类似数据库的后端服务,通常由部署应用程序的系统管理员一起管理。除了本地服务之外,应用程序有可能使用了第三方发布和管理的服务。...比如, Capistrano 将所有发布版本都存储在一个叫 releases 的子目录中,当前的在线版本只需映射至对应的目录即可。该工具的 rollback 命令可以很容易地实现回退版本的功能。...但应用的所有部署,这其中包括开发、预发布以及线上环境,都应该使用同一个后端服务的相同版本。 XI. 日志 把日志当作事件流 日志 使得应用程序运行的动作变得透明。
导语: DevOps 越来越流行,越来越成为加快产品研发速度、提升团队效率的有效工具。现在,在开发、测试、部署、交付、维护以及监控分析等工作中,有越来越多的开源 DevOps 工具可以使用。...开源中国 Git 代码托管平台:http://git.oschina.net/ 代码托管平台 GitLab GitLab 是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的Git...事实上,由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目现在使用 Maven,而且公司项目采用 Maven 的比例在持续增长。...Capistrano Capistrano 是一个用来并行的在多台机器上执行相同命令的工具,使用用来安装一整批机器。它最初是被开发用来发布 Rails 应用的。...维护 日志记录 Logstash Logstash 是一个应用程序日志、事件的传输、处理、管理和搜索的平台。你可以用它来统一对应用程序日志进行收集管理,提供 Web 接口用于查询和统计。
,在开发过程中,需要将应用进行容器化配置和部署,经历了比较典型的 Ruby 老版本软件升级,过程中遇到了不少问题。...一来,目前线上运行的应用必须以容器方式进行交付运行,我们使用容器的方式注册应用,对外提供服务; 二来,个人倾向并坚持使用容器方案,可以方便后续快速水平扩展;以及最重要的一点,“代码和命令皆有记录”,方便离线的问题排查...", require: false + gem 'capistrano-rvm', require: false + gem 'capistrano-rails', require: false...,Gemfile.lock 中除了依赖更新外,bundle 版本有变化: BUNDLED WITH - 2.0.2 + 1.17.3 基本需要关注的内容都介绍完毕了,我们先使用上面提到的...不过个人不推荐使用非治本的方式解决问题,如果没有从本质解决问题,那么应该让问题继续暴露出来,提醒维护者后面处理掉它,而不是进行选择性遗忘。
领取专属 10元无门槛券
手把手带您无忧上云