介绍 在本教程中,我们将向您展示如何使用Git hooks自动将Rails应用程序的生产环境部署到远程Ubuntu 14.04服务器。...初始化Git Repo 如果您的应用程序由于某种原因尚未存在于Git存储库中,请初始化它并执行初始提交。 在开发计算机上,切换到应用程序的目录。...更新数据库配置 在您的开发计算机上,如果您还没有,请更改到您的应用程序目录。...您可以使用此命令轻松地在服务器上执行此操作: grep -c processor /proc/cpuinfo 现在,在您的开发计算机上,在config/puma.rb中添加Puma配置。...在开发计算机上,确保您位于应用程序的目录中: cd ~/appname 然后添加一个名为“production”的新git远程,它指向您在生产服务器上创建的裸git存储库appname_production
部署应用程序:无论您是否安装了HTTP服务器应用程序,都可以使用Mina在部署计算机上更新应用程序的源代码,无需处理FTP或其他工具即可自动启动并运行新版本。...RAKE - Ruby Make Web开发人员,程序员以及任何与科学或计算机打交道的人都应该很好地理解他们使用的工具。在Mina的案例中,RAKE最为关键。 但是,什么是RAKE?...获取Mina 使用Mina时,您需要确保拥有一个稳定的Ruby环境,并且安装了必要的依赖项并且运行正常 - 例如gem。 在本节中,我们将首先在CentOS 6系统上创建Ruby环境。...ruby环境和rails,可以参考腾讯云开发者实验室在 Linux 上部署 Ruby On Rails 环境,腾讯云社区也提供Ruby中文开发者手册,欢迎使用。...在Deployment Server上创建部署者用户 创建除root之外的用户来执行Mina将使用和调用的部署操作是一个理智的选择。为此,让我们在远程主机上创建一个deployer用户。
本教程将帮助您部署Ruby 在 Rails应用程序中的生产环境,使用PostgreSQL作为数据库,在Ubuntu 14.04上使用Unicorn和Nginx。...随意替换突出显示的“appname”与其他东西: rails new appname -d postgresql 然后切换到应用程序目录: cd appname 我们花一点时间来创建将会在Rails应用程序的生产环境使用的...安装rbenv-vars插件 在部署生产Rails应用程序之前,应使用环境变量设置生产密钥和数据库密码。...我们现在开始吧: sudo service unicorn_appname start 现在你的Rails应用程序的生产环境在Unicorn下运行,它正在侦听shared/sockets/unicorn.sock...您已使用Nginx和Unicorn部署了Ruby在Rails应用程序的生产环境。 如果您希望改进生产Rails应用程序部署,您应该查看我们的如何使用Capistrano自动部署的教程系列。
本教程将帮助您部署Ruby on Rails应用程序的生产环境,使用PostgreSQL作为数据库,在Ubuntu 14.04上使用Puma和Nginx。...随意替换突出显示的“appname”与其他东西: rails new appname -d postgresql 然后切换到应用程序目录: cd appname 我们花一点时间来创建将由Rails应用程序的生产环境使用的...安装rbenv-vars插件 在部署生产Rails应用程序之前,应使用环境变量设置生产密钥和数据库密码。...管理环境变量的一种简单方法是使用rbenv-vars插件,我们可以使用它来在运行时将密码和机密加载到我们的应用程序中。...应用程序的生产环境在Puma下运行,它正在监听shared/sockets/puma.sock套接字。
---- 本文只针对在 Ubuntu 环境下的开发进行设置,因为 Discourse 是基于 Ruby 开发的,Ruby 的开发环境在 Ubuntu 下设置最为简便,所以 Discourse 的生产环境运行也是是官方建议在...本文章假设你还没有在 Ubuntu 环境中安装 Ruby/Rails/Postgres/Redis 环境,让我们开始开发环境的配置吧!...本开发指南在 Ubuntu 18 上验证过不需要任何其他的步骤就可以完成开发环境设置。 ...测试环境 有关在 Ubuntu 低于 20.04版本上安装 Discourse 测试环境 根据我们进行测试的经验来看,Ubuntu 22 的版本中可能有无法编译和包找不到的情况,我们还只在 20.04...安装 Discourse 依赖 作为一般的用户,可以在控制台中运行下面的命令: this script 。上面的命令将会帮助你在本地的开发环境中快速设置 Rails。
要解决这问题,我们需要重新审视 Rails 在 Web 应用开发中的定位。Rails 只是一个 Web 框架,它不是一个应用开发框架,不能也不应该负责 Web 应用中领域相关的部分。...在应用中,一个 PORO 对象通过工厂类产生,工厂类负责完成依赖注入,在这个过程中,可能需要调用其他 PORO 的工厂类来产生对象。...我们除了生产环境之外,还有多个沙盒环境供线上测试使用。为了保证测试的有效性,这些沙盒环境都要做到尽量跟生产环境一致。...对于一个运维工程师来说,手动创建完成并测试通过一个沙盒环境往往需要2~3天的时间,并且无法完全保证这个沙盒环境和生产环境的一致性。...具体来说,我们不仅仅需要容器来封装服务和它的运行环境,我们更需要一个容器调度、编排和集群管理方案,可以帮助我们管理下层的基础设施和计算资源,并作为资源池的形式提供给上层的服务容器消费。
介绍 Prometheus是由SoundCloud开发的开源监控系统。与其他监控系统(如InfluxDB和Graphite)一样,Prometheus将其所有数据存储在时间序列数据库中。...第6步 - 设置Rails环境 创建一个目录来存储与PromDash关联的SQLite3数据库。.../databases/mydb.sqlite3" >> ~/.bashrc 在本教程中,您将在生产模式下运行PromDash,因此请将RAILS_ENV环境变量设置为production。...您的页面将说服务器已成功创建。您可以在顶部菜单中单击返回仪表板。...即使您在单个CentOS计算机上安装了所有组件,您也可以通过在每个计算机上仅安装节点导出程序,并将新节点导出程序的URL添加到prometheus.yml数组中的targets来轻松监视更多计算机。
----本文只针对在 Ubuntu 环境下的开发进行设置,因为 Discourse 是基于 Ruby 开发的,Ruby 的开发环境在 Ubuntu 下设置最为简便,所以 Discourse 的生产环境运行也是是官方建议在...本文章假设你还没有在 Ubuntu 环境中安装 Ruby/Rails/Postgres/Redis 环境,让我们开始开发环境的配置吧!...本开发指南在 Ubuntu 18 上验证过不需要任何其他的步骤就可以完成开发环境设置。 ...测试环境 有关在 Ubuntu 低于 20.04版本上安装 Discourse 测试环境根据我们进行测试的经验来看,Ubuntu 22 的版本中可能有无法编译和包找不到的情况,我们还只在 20.04...安装 Discourse 依赖作为一般的用户,可以在控制台中运行下面的命令: this script 。上面的命令将会帮助你在本地的开发环境中快速设置 Rails。
第8章 监控应用程序 首先,考虑的一些高级设计模式和原则 ---- 8.1 应用程序监控入门 应用程序开发中存在一种常见的反模式,即把监控和其他运维功能(如安全性)视为应用程序的增值组件而非核心功能。...不构建指标或监控将存在严重的业务和运营风险,这将导致 无法识别或诊断故障 无法衡量应用程序的运行性能 无法衡量应用程序或组件的业务指标以及成功与否,例如跟踪销售数据或交易价值 另一种常见的反模式是监控力度不足...一种有效的方法是首先关注并修改保留时间,以便在减少存储的同时又不丢失有用的信息 第三点需要注意的是,如果你使用多个环境(例如开发、测试、预生产和生产),那么请确保为监控配置提供标签,以便明确数据来自哪个特定环境...在绝大多数情况下,放置这些指标的最佳位置是在我们的代码中,尽可能接近试图监控或测量的操作 我们想要创建一个实用程序库:一个允许我们从集中设置创建各种指标的函数。...email-payment指标用于计算发送的付款电子邮件的数量 8.2.5 外部模式 如果你不能控制代码库,无法在代码中插入监控或测量内容,或者可能无法更改或更新旧应用程序,那么该怎么办?
也正是得益于此,Docker 容器内运行的应用和宿主机上运行的应用性能差距几乎可以忽略不计。 但是 Docker 本身并不是一个容器系统,而是一个基于原有的容器化工具 LXC 用来创建虚拟环境的工具。...例如:宿主机是 Linux,只能通过虚拟机运行 Windows,Docker 便无法做到。...你可以在同一台主机上运行多个服务、可以不用去限制容器所消耗的资源、可以去限制资源、可以在不需要的时候停止容器,也不用担心启动已经停止的程序时会带来过多的资源消耗。...但是第三方镜像的安全性无法保证,所以请谨慎下载第三方镜像。生产环境下可以只使用第三方提供的 Dockerfile 构建镜像。...当然,有了 Docker,我们在生产、测试和开发中的运行环境得到统一。
Elixir 的优势 经得起时间考验的解决方案(指 Elixir 运行在 Erlang VM 上) 上面已经提到,Elixir 是运行在 Erlang 虚拟机上(BEAM),不仅仅是因为 Erlang...),当然也是由于这些语言设计与单核计算机时代。...轻量级进程 在 Elixir 中,代码通过进行来执行,Elixir 并发的核心就是每个进程都是轻量级的继承,仅消耗极少的内存和 CPU,可以同时创建成千上万个轻量级进程。...使用 Elixir 无需在应用程序的架构中添加更多服务器来满足越来越多的用户产生的带宽需求。...在 Ruby 中 惯例优于配置,以保持代码简洁并使开发人员更有效率。但是,当经验较少的开发人员不知道 Rails 背后的细节时,可能会导致阻碍生产力和维护的错误发生。
AlmaLinux 9 备份 GitLab 社区版实战 本文仍基于在腾讯云购买的轻量机 cn-tx-bj7-a9 上安装,AlmaLinux 9.4 版本,配置为 4C4G60G 上一篇文章基于 AlmaLinux...9 安装 GitLab 社区版实战中介绍了最基础的安装步骤,这篇文章来介绍安装后的配置 本文中的配置均是工作中实际使用多年的生产环境配置,供参考 0x01.申请 SSL 证书 回到上一篇文章安装时的命令...运行 gitlab-ctl reconfigure 注意每次配置完成后都需运行,否则不会生效 3....运行 gitlab-ctl reconfigure 这里因为自己的环境目前还没有 LDAP 就不做演示了,之后如果有环境再来补充 0x05.后记 一口气写了 2h+,算是把工作中的生产环境中配置都介绍完毕了...,之后的文章会继续介绍其他 GitLab 相关的实践 也欢迎购买轻量机进行尝试,双十一拼团有优惠:https://cloud.tencent.com/act/pro/double11-2024?
介绍 Prometheus是由SoundCloud开发的开源监控系统。与其他监控系统(如InfluxDB和Graphite)一样,Prometheus将其所有数据存储在时间序列数据库中。...第6步 - 设置Rails环境 创建一个目录来存储与PromDash关联的SQLite3数据库。.../databases/mydb.sqlite3" >> ~/.bashrc 在本教程中,您将在生产模式下运行PromDash,因此请将RAILS_ENV环境变量设置为production。...您的页面将说服务器已成功创建。您可以在顶部菜单中单击返回仪表板。...即使您在单个Ubuntu计算机上安装了所有组件,也可以通过在每个计算机上仅安装节点导出程序并将新节点导出程序的URL添加到prometheus.yml数组中的targets来轻松监视更多计算机。
当你一遍又一遍地运行此操作时,这一天只需要几分钟的时间:在开发过程中运行大约 20 次的脚本上总共需要 1.2 秒,然后可能每周运行一次。 虽然我只关注 CPU,但内存也是一个重要问题。...虽然有些 Ruby 项目不使用 Rails,但大部分生产中运行的 Ruby 代码都是基于 Rails 开发的。...20 毫秒的减速几乎无法衡量,数百个 20 毫秒的速度减慢在几个月内逐渐增加,使响应变得令人无法接受。最糟糕的是,这些 “错误” 被团队贴上了 “以 Rails 方式完成” 的标签。...[5] 具有讽刺意味的是,在这种非 http、非 rails 的环境中,性能问题变得不那么明确了,然而在这些情况下,人们通常会因为 ruby 的性能问题而将其作为选项。...在典型的生产设置中,Postgresql 更适合这一点。 [8] 请注意,虽然 DateTime:parse 很慢,但这个函数是用 C 编写的。
如果您的应用程序需要客户端/服务器SQL数据库(如PostgreSQL或MySQL)提供的可伸缩性,集中化和控制(或任何其他功能),则需要执行一些其他步骤才能启动并运行它。...本教程将向您展示如何设置开发Ruby on Rails环境,该环境允许您的应用程序在Ubuntu 14.04服务器上使用PostgreSQL数据库。首先,我们将介绍如何安装和配置PostgreSQL。...现在您可以输入以下命令退出PostgreSQL控制台: \q 我们现在创建一个Rails应用程序。 创建新的Rails应用程序 在主目录中创建一个新的Rails应用程序。...例如,要运行开发环境(缺省值),请使用以下命令: rails server 这将在端口3000上的本地主机上启动Rails应用程序。...3000上的服务器公共IP地址在Web浏览器中访问您的Rails应用程序: 访问网络浏览器: http://server_public_IP:3000 如果您看到“欢迎登陆”Ruby on Rails页面
如果您的应用程序需要客户端/服务器SQL数据库(如PostgreSQL或MySQL)的可伸缩性,集中化和控制(或任何其他功能),则需要执行一些额外的步骤才能启动并运行它。...安装完成后,我们需要运行一些额外的命令来安全地设置MySQL环境。首先,我们需要告诉MySQL创建其数据库目录结构,它将存储其信息。...对于其他问题,您只需在每个提示中单击“ENTER”键即可接受默认值。这将删除一些示例用户和数据库,禁用远程root登录,并加载这些新规则,以便MySQL立即尊重我们所做的更改。...创建新的Rails应用程序 在主目录中创建一个新的Rails应用程序。...例如,要运行开发环境(缺省值),请使用以下命令: rails server 这将在端口3000上的本地主机上启动Rails应用程序。
首先,我可以在任何供应商提供的主机上运行 Docker 和 Ansible;其次,相比于方便性,我更偏向于喜欢灵活性。我可以在这种组合中运行任何程序,而不仅仅是 web 应用。...除了 Python 和 SSH,Ansible 不再依赖其他软件,在它的远端主机上不需要部署代理,也不会留下任何运行痕迹。...:2.8 Ansible 会查看这个文件,并且通知 Docker 加载正确的镜像,然后在容器中启动。...Docker 容器内运行 Rails 应用 没有本地 Docker 镜像,从零开始部署一个中级规模的 Rails 应用大概需要100个 gems,进行100次整体测试,在使用2个核心实例和2GB内存的情况下...能获得一个免费的持续集成环境,可以查看不同版本的应用之间的区别,不会影响到同主机上已经在运行的应用,这些功能强大到难以置信,让我感到很兴奋。在文章的最后,我只希望你能感受到我的兴奋!
在Ruby on Rails应用程序中,它可以轻易地映射到表示层的Web服务器,应用程序层的Rails服务器和数据层的数据库。...拥有SSH隧道的专用用户有助于提高设置的安全性:如果入侵者能够访问您的某个服务器上的 sammy 用户,他们将无法访问三层设置中的其他服务器。...同样,如果入侵者要获得对 隧道 用户的访问权限,他们既不能编辑Rails应用程序目录中的文件,也不能使用sudo命令。 在每台服务器上,创建一个名为 tunnel 的其他用户。...在每台服务器上运行以下命令以添加 tunnel 用户: $ sudo adduser tunnel 在 Web服务器 计算机上,切换到 tunnel 用户。...您的Rails应用程序现已投入生产。
我们用Dockerfile配置Rails项目运行所需的环境,并将Dockerfile和项目同时放在Git代码仓库中进行版本管理。...验收后的用户故事卡会被部署到生产环境(Production)。...在上述团队工作的流程下,如果持续部署流水线仅对Master分支进行打包、测试、发布,在开发阶段(即:代码还在分支)时,无法从持续集成上得到反馈,直到代码被合并到Master并运行构建后才能得到反馈,通常会造成...Pull Request上只运行单元测试,Master运行完成全部构建并自动将代码部署到测试环境。 为生产环境部署引入手动操作,在验收测试完成之后再手动触发生产环境部署。...经过调整后的持续部署流水线可以使团队在开发阶段快速从持续集成上得到反馈,并且对生产环境的部署有更好的控制。 4 版本化一切 版本化一切,即将服务开发、部署相关的系统都版本化控制。
领取专属 10元无门槛券
手把手带您无忧上云