在本教程中,我们将在Ubuntu上安装Ruby和Nginx,并在我们的Web应用程序中配置Puma和Capistrano。...RVM允许您在同一系统上轻松安装和管理多个rubies,并根据您的应用使用正确的一个。当您必须升级Rails应用程序以使用更新的ruby时,这会让生活变得更加轻松。...注意:如果第二个命令失败并显示消息“GPG签名验证失败”,则表示GPG密钥已更改,只需从错误输出中复制命令并运行它以下载签名。然后运行用于RVM安装的curl命令。...首先与GitHub,Bitbucket或任何其他Gits Remote握手,在Gits Remote中托管Rails应用程序的代码库: deploy@droplet:~$ ssh -T git@github.com...输入以下命令来捆绑您的Rails应用程序: $ bundle 捆绑后,运行以下命令配置Capistrano: $ cap install 这将创建: Capfile 在您的Rails应用程序的根目录中
介绍 当您准备部署Ruby on Rails应用程序时,需要考虑许多有效的设置。...本教程将帮助您部署Ruby 在 Rails应用程序中的生产环境,使用PostgreSQL作为数据库,在Ubuntu 14.04上使用Unicorn和Nginx。...在您喜欢的文本编辑器中打开应用程序的数据库配置文件。...要安装rbenv-vars插件,只需更改到.rbenv/plugins目录中并从GitHub克隆它。...例如,如果在主目录中安装了rbenv,请运行以下命令: cd ~/.rbenv/plugins git clone https://github.com/sstephenson/rbenv-vars.git
本文章假设你还没有在 Ubuntu 环境中安装 Ruby/Rails/Postgres/Redis 环境,让我们开始开发环境的配置吧!...安装 Discourse 依赖 作为一般的用户,可以在控制台中运行下面的命令: this script 。上面的命令将会帮助你在本地的开发环境中快速设置 Rails。...克隆(Clone)Discourse 克隆 Discourse 到 ~/discourse 文件夹中 git clone https://github.com/discourse/discourse.git...因为我们使用的是 WSL 子系统,因此我们实际上是把文件克隆到我的 D 盘下了。...rake db:migrate RAILS_ENV=test bundle exec rake db:create db:migrate 如果在运行的时候出现错误,请仓库: Discourse 开发环境安装运行
介绍 当您准备部署Ruby on Rails应用程序时,需要考虑许多有效的设置。...本教程将帮助您部署Ruby on Rails应用程序的生产环境,使用PostgreSQL作为数据库,在Ubuntu 14.04上使用Puma和Nginx。...在您喜欢的文本编辑器中打开应用程序的数据库配置文件。...要安装rbenv-vars插件,只需更改到.rbenv/plugins目录并从GitHub克隆它。...=production rake db:migrate 您还应该预编译资产: RAILS_ENV=production rake assets:precompile 要测试您的应用程序是否有效,您可以运行生产环境
本文章假设你还没有在 Ubuntu 环境中安装 Ruby/Rails/Postgres/Redis 环境,让我们开始开发环境的配置吧!...基于 Ubuntu/Debian 开发环境的使用不同,你可能在对 Ubuntu/Debian 进行开发的时候需要参考下下面的信息: 有关在 Ubuntu 20.04 及其后续版本上安装 Discourse...安装 Discourse 依赖作为一般的用户,可以在控制台中运行下面的命令: this script 。上面的命令将会帮助你在本地的开发环境中快速设置 Rails。...克隆(Clone)Discourse克隆 Discourse 到 ~/discourse 文件夹中git clone https://github.com/discourse/discourse.git...因为我们使用的是 WSL 子系统,因此我们实际上是把文件克隆到我的 D 盘下了。
gitlab简介 GitLab,是一个使用 Ruby on Rails 开发的开源应用程序,与Github类似,能够浏览源代码,管理缺陷和注释,非常适合在团队内部使用。...注意事项 1. gitlab在创建备份的过程中会先备份出许多(db、repo等文件),再通过这些文件合并成一个备份压缩包,最后删除文件,只剩一个备份压缩包。...,可以给足权限,然后再恢复。...查看/var/log/gitlab/gitlab-rails/production.log日志,发现上述错误 。 这是gitlab数据迁移时的一个缺陷。...解决方法: 1、覆盖原来gitlab的 db_key_base 到新的gitlab db_key_base 位置在 /etc/gitlab/gitlab-secrets.json 2、EE版本执行
安装rbenv 我们先从Git克隆rbenv存储库,您应该使用计划运行Ruby的用户帐户完成这些步骤。...作为一个例子,让我们安装Ruby版本2.3.3: rbenv install 2.3.3 如果要安装和使用其他版本,请使用不同的版本号运行命令,如rbenvrbenv install 2.3.0和rbenv...通过rehash子命令,rbenv在该目录中维护填充程序,以匹配服务器上每个已安装的Ruby版本的每个命令。...每当您安装新版本的Ruby或提供命令的gem时,您应该运行: rbenv rehash 由于在安装成功后没有提示,我们可以通过使用以下命令来验证Rails是否已正确安装: rails -v 如果安装正确...卸载Ruby版本 当您下载更多版本的Ruby时,~/.rbenv/versions目录中可能会有很多残留文件。 使用ruby-build插件子命令自动执行删除。
介绍 Ruby on Rails是创建网站和Web应用程序的开发人员最受欢迎的应用程序堆栈之一。Ruby编程语言与Rails开发框架相结合,使应用程序开发变得简单。...将rbenv存储库从GitHub克隆到目录~/.rbenv中: git clone https://github.com/rbenv/rbenv.git ~/.rbenv 接下来,添加~/.rbenv/...Ruby,你对上面命令的输出应该如下所示: ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux] 要安装和使用不同版本的Ruby,请运行rbenv...通过rehash子命令,rbenv在该目录中维护填充程序,以匹配服务器上每个已安装的Ruby版本的每个Ruby命令。...第六步 - 卸载Ruby版本 当您下载其他版本的Ruby时,您可能会累积比~/.rbenv/versions目录中更多的版本。
/presidentbeef/brakeman 介绍:Ruby 的代码安全审计工具,用于检查 Ruby on Rails 应用程序的安全漏洞 开发语言:Ruby 推荐理由:Brakeman 可以在开发周期的任何时间运行...,因为它只需要源代码,并且安装后需要零设置或配置,并且它也比黑盒扫描仪快得多,但只能静态扫描,不能动态扫描,同时它带有许多扫描选项,例如扫描指定路径,使每次扫描都在单个线程中运行或强制制动器在 Rails...3 或 4 中运行 5.SocialPwned github链接:https://github.com/MrTuxx/SocialPwned 介绍:开源情报工具,允许从目标获取电子邮件,发布在 Instagram...公司员工在社交网络上发布电子邮件是很常见的,无论是专业的还是个人的,因此如果这些电子邮件的凭据泄露,则发现的密码可能已在审核环境中重复使用。...开发语言:C# 推荐理由:可通过简单地运行 .exe 文件来执行,将输入的密码根据 Active Directory 或本地计算机进行验证,以确保其正确,然后显示到控制台或保存到磁盘 7.httpx
介绍 在本教程中,我们将向您展示如何使用Git hooks自动将Rails应用程序的生产环境部署到远程Ubuntu 14.04服务器。...您还需要一个在本地开发机器上的git存储库中管理的Rails应用程序。如果您没有并希望跟进,我们将提供一个简单的示例应用程序。 让我们开始吧!...准备你的Rails应用程序 在您的开发机器上,很可能是您的本地计算机,我们将准备您要部署的应用程序。 可选:创建Rails应用程序 理想情况下,您已经拥有了要部署的Rails应用程序。...在开发计算机上,确保您位于应用程序的目录中: cd ~/appname 然后添加一个名为“production”的新git远程,它指向您在生产服务器上创建的裸git存储库appname_production...当生产远程接收推送时,它将执行我们之前设置的post-receivehook脚本。如果正确设置了所有内容,现在应该可以在生产服务器的公共IP地址上使用您的应用程序。
使用多台机器 — 使用 USB 记忆棒/HDD 当安全策略允许对记忆棒或便携式硬盘驱动器进行读/写访问时,可以在此设备上创建远程存储库。 在一台开发机器上安装记忆棒。...确保记忆棒是您备份例程的一部分。 使用多台机器 — 使用 CD/DVD 在锁定的开发环境中,内存条可能会被阻止。使用Git还是可以的,但是稍微有点不方便。...在第一台机器上使用以下命令创建捆绑包: git bundle create repoName.bundle --all 选项捆绑整个存储库,包括所有分支和标签。可以使用 或 选择特定分支或标签。...例如,仅包含 master 分支上的最后 5 次提交,请使用: git bundle create repoName.bundle -5 master 重要的是,捆绑包中的提交与存储库上的提交之间没有间隙...,在该间隙中将发生合并,否则该过程将失败。
机器上没安装ROR开发环境的朋友,请先参看 ruby on rails + mysql 开发环境搭建 架好环境 注:ROR的经典著作“Web开发敏捷之道--应用Rails进行敏捷Web开发”目前中文的只有第二版...,作者写书的环境是rails 1.x,现在rails的版本已经更新至2.3.5,很多东西已经变了,如果参考第二版的书上一步步来做的话,根本做不下去。...,同时在mysql中把database.yml对应的数据库建好(注意编码建议选择为utf8) 注意:mysql不要安装最新的5.1版本,建议用5.0版本,否则rake在做数据库迁移时,可能会出现问题....:migrate 执行完后,mysql数据库depot_development中将自动生成一张表products 注:回想一下.net中的linq to sql/entity,是先在数据库中建表,然后自动映射成实体类...,而在ROR中是反过来的。
15年前,GitHub作为一个Ruby on Rails应用程序开始,只有一个MySQL数据库。...确保应用程序兼容性 我们为所有使用MySQL的应用程序添加了MySQL 8.0到持续集成(CI)。我们在CI中并行运行MySQL 5.7和8.0,以确保在长时间的升级过程中不会出现退化。...在很大程度上,升级我们的 Vitess 集群与升级 MySQL 集群并无太大不同。我们已经在 CI 中运行 Vitess,因此能够验证查询兼容性。在我们针对分片集群的升级策略中,我们逐个升级每个分片。...例如,某个应用程序使用了一个 Java 客户端,在 5.7 服务器上禁用了查询缓存——因为在 8.0 中移除了查询缓存,对他们来说这会产生阻塞错误。...这是很重要的,因为一个失败的查询会阻塞整个集群的升级,而不同的工作负载分区允许我们分阶段升级,减少在过程中遇到的未知风险的影响范围。这里的权衡是,这也意味着我们的 MySQL 集群规模变大了。
十多年前,与当时的大多数 Web 应用程序一样,GitHub 也是一个使用 Ruby on Rails 开发的网站,它的大部分数据都保存在 MySQL 数据库中。...例如,我们单独将某些功能的数据保存在独立的 MySQL 数据库中;我们增加了读副本数量,将读负载分摊到多台机器上;我们还使用了 ProxySQL,减少主 MySQL 实例打开的连接数。...在 Rails 应用程序中,这些信息保存在 db/schema-domains.yml 配置文件中,如下所示: gists: - gist_comments - gists - starred_gists...在一开始,新集群被加到旧集群的复制树中,然后再用一个脚本快速执行一些变更来实现切换。...在进行写切换之前的 MySQL 集群 在运行脚本之前,我们先调整应用程序和数据库复制结构,将目标集群 cluster_b 作为现有集群 cluster_a 的子集群。
在/etc/cassandra/cassandra.yaml文件末尾增加一行start_rpc: true,然后重启sudo service cassandra restart 参考: 安装Cassandra...克隆analytics及编译Canvas 依次执行以下命令 cd /var/canvas git clone https://github.com/instructure/analytics.git gems...exec rake db:migrate_pageviews_to_cassandra 第5行:进入rails控制台,自己从网上找的命令进入的,script目录下没有console… 其中第一个canvas...第6行:执行第5行之后,会进入rails控制台,然后输入Setting…带命令完成后输入exit 4....在管理员设置中会出现你分析菜单,发布的课程右侧出现查看课程分析 效果如下
:2.8 Ansible 会查看这个文件,并且通知 Docker 加载正确的镜像,然后在容器中启动。...最后,Dockerfile 为应用指定了一个端口号,将容器内部端口号为3000的端口映射到主机(运行着 Docker 的机器)的一个随机分配的端口上。...Docker 容器内运行 Rails 应用 没有本地 Docker 镜像,从零开始部署一个中级规模的 Rails 应用大概需要100个 gems,进行100次整体测试,在使用2个核心实例和2GB内存的情况下...尽管是无意的,Docker 可以变成一套简单的持续集成环境,当测试失败后,Docker 会把“test-only”这个容器保留下来,用于分析出错原因。...能获得一个免费的持续集成环境,可以查看不同版本的应用之间的区别,不会影响到同主机上已经在运行的应用,这些功能强大到难以置信,让我感到很兴奋。在文章的最后,我只希望你能感受到我的兴奋!
前言15 年前,GitHub 最初是一个带有单个 MySQL 数据库的 Ruby on Rails 应用程序。...我们在 CI 中并行运行 MySQL 5.7 和 8.0,以确保在长时间的升级过程中不会出现回归。...然后,我们启用生产流量并继续监控查询延迟、系统指标和应用程序指标。我们逐渐将8.0副本上线,直到升级整个数据中心,然后迭代其他数据中心。...我们已经在 CI 中运行 Vitess,因此我们能够验证查询兼容性。在我们的分片集群升级策略中,我们一次升级一个分片。...这很重要,因为一个失败的查询会阻止整个集群的升级,并且对不同的工作负载进行分区允许我们进行零碎升级并减少在此过程中遇到的未知风险的影响范围。这里的权衡是,这也意味着我们的 MySQL 机群已经增长。
为什么呢?...以下是我们在 AWS 上的安装步骤: ```shell sudo rpm — import https://pkg.jenkins.io/debian/jenkins.io.key sudo wget...它能将 GitHub 的组织中符合规则的项目自动添加到 Jenkins 中。唯一的约束就是在每一个分支下都必须有一个 Jenkinsfile,用于描述如何构建项目。...你只需要在该目录下(https://github.com/Wolox/wolox-ci/tree/development/vars)添加,然后告诉共享库该服务是如何被转换的,如https://github.com...并且,当检查到 GitHub 组织中的新项目(项目中有 Jenkinsfile)时,Jenkins GitHub Branch Source 插件会自动添加新的 Jenkins 项目。
每次上线新功能的时候,都需要先更新数据库,然后再部署代码。当数据库的更新部分很多时,难免会忘掉,造成升级失败。...另外一个问题的是,当你的服务是允许客户自己私有部署的时候,每个客户可能都在不同的数据库版本上,这时候对于不同的客户给与不同的升级机制就相当重要了。...脚本进行打包;执行项目文件后,会将打包中的sql脚本进行迁移合并(运行指定目录下的sql脚本)。...开发者对某个A版本号的sql脚本迁移到了数据库,然后又修改了这个A版本号的脚本,这样就会产生不同机器下的迁移结果不一致的情况。...= # 迁移脚本的位置,默认db/migration. # 这个配合Profile,能给与不同的环境不同的测试数据 spring.flyway.locations = classpath:/db/
我们的团队构建和维护着大量的应用程序,运行着不同的软件栈和版本,并且能够将开发环境打包,这让不同项目的切换和开发人员快速上手新项目变得非常容易。...1 不要将代码或应用级的依赖项放入镜像中 你的主 Dockerfile 文件,也就是运行应用程序所需的文件,应该包含运行应用程序所需的所有软件,但不应该包含应用程序代码本身——当 docker-compose...3 只在 docker-compose.yml 中引用一次 Dockerfile 如果你将同一个镜像用于多个服务(你应该这么做),只需要在一个服务的定义中提供构建说明,给它起一个名字,然后在其他服务中引用这个名字...5 将临时的东西放入命名卷中 上一点提到使用命名卷来提高性能,这里有另一个有用的技巧:将保存只读文件的目录放入命名卷中,阻止它们被同步回本地机器(这会带来很大的性能开销),特别是 log 和 tmp...6 在 apt-get 更新后进行清理 如果在 Dockerfiles 中引用了基于 Debian 的镜像,你就必须运行 apt-get update,然后才能通过 apt-get install 安装依赖项
领取专属 10元无门槛券
手把手带您无忧上云