RoR 服务器构建和 Capistrano 支持

Posted

技术标签:

【中文标题】RoR 服务器构建和 Capistrano 支持【英文标题】:RoR Server Construction and Capistrano Support 【发布时间】:2010-10-03 14:48:49 【问题描述】:

我一直在使用 Ruby on Rails 创建一个网站,并将通过朋友托管它。他有空间和能力来托管服务器,我有一个系统致力于成为一个专用服务器。这是我在 Rails 网站上的第一次尝试,以及与朋友的自托管。

今天和明天我将使用以下软件配置格式化和准备服务器:

Apache2 Phusion 乘客(又名 mod_rails) Ruby 企业版 mysql 5

我确实有很多问题,对于它们的复杂性,我深表歉意。我还没有找到这个配置的指南,而且我是 Rails 的新手,我还没有经验来解决这个问题。

最推荐用于此配置的 Linux 版本是什么?

我一直计划在 CentOS 上进行部署。需要注意的是,我从早期开始就是 Windows 用户,并且只使用 Linux 作为虚拟主机和很少 开发命令(例如 CVS)。因此我对 Linux 的了解比较少,经验也比较少。如果我遇到任何部署障碍、由于 Linux 发行版而导致的技术问题,或者任何类似的问题......我完全被晾干了。

这包括从源代码构建任何东西。

如何在我的服务器上设置 Capistrano 以进行远程部署?

我知道这是矛盾的(Capistrano 是客户端,而不是服务器端),但我不知道它在服务器上需要什么。需要FTP吗? SFTP? SSL? SSH?什么?

我应该在我的服务器上配置什么以及如何配置它,以使 Capistrano 能够顺利运行?

另外,我如何向 Capistrano 介绍我的 SCM 位于 localhost 并且由 Mercurial 提供的事实? (我使用的是 TortoiseMg。)我可以转换为 SVN,并且可能会在服务器上设置一个存储库,但我不完全确定该怎么做。

从 localhost 开发部署到在完全不同的操作系统上部署时,您要注意的最大障碍是什么?

杂项

那为什么不部署到 Windows 上呢? 因为我要买单,而且我不想再购买 XP 或 2000 的副本;我拒绝使用 Vista。此外,对于服务器环境,Linux 比 Windows 安全得多。

为什么不阅读现有的指南? 我是;这是我第一个使用 Ruby on Rails 的站点,我的预算现在不到两位数,我正在尝试通过进行服务器配置和远程部署(以进一步开发站点)来扩展我的视野我。过去,我的 php 网站依赖于主机,但它们的配置更加同质化。 Ruby 服务器很贵,对我来说太贵了,而且了解它的配置也不会有什么坏处。

【问题讨论】:

【参考方案1】:

最推荐用于此配置的 Linux 版本是什么?

任何发行版都可以正常运行,只要它们可以运行 Apache2(几乎是所有发行版)并且您可以安装Passenger(以及 ruby​​ 和 rails)。 我个人使用 CentOS,发现它的包管理器非常易于使用 (yum)。

yum install -y httpd ruby
gem install rails passenger

然后您只需在/etc/httpd/conf/httpd.conf 中进行一些配置即可添加Passenger(在Passenger passenger-install-apache2-module 的安装文件之后)并将其指向您的部署文件夹.../app_name/current/public

由于您使用的是Passenger,因此您应该覆盖重新启动任务来为它工作。

config/deploy.rb

namespace :deploy do
  desc "Restart Application"
  task :restart, :roles => :app do
    run "touch #current_path/tmp/restart.txt"
  end
end

如何在我的服务器上设置 Capistrano 以进行远程部署?

Capistrano 所需要的只是具有足够权限的 SSH 访问,以部署、迁移、重新启动应用服务器等。只需在 Capistrano website 关注 getting started guide,您将立即启动并运行。

Capistrano 需要访问您的 SCM,您需要允许它连接到您的计算机。 Capistrano 所做的只是将您的代码签出到发布文件夹中,然后将符号链接从旧版本中移出并重新启动您的应用服务器。

从 localhost 开发部署到在完全不同的操作系统上部署时,您要注意的最大障碍是什么?

最大的障碍是迁移,测试,测试,测试,再测试。您的应用程序中的错误很容易修复和重新部署,但迁移中的错误可能最终导致数据丢失的巨大痛苦。

【讨论】:

感谢山姆的回答。您如何看待在服务器上创建一个 SVN 存储库?该应用程序是闭源的,我不知道任何允许闭源托管的免费 SVN 主机。 在服务器上制作 SVN 存储库很好。让我试着回忆一下我在哪里读到过一个为您提供免费私有 SVN 存储库的网站。 您可以查看***.com/questions/59791/free-online-svn-repositories,我认为其中一些提供免费的私人SVN。【参考方案2】:

我发现在 Slicehost.com(一家 VPS 托管公司)上发布的文章很有帮助。

完整的文章列表位于:http://articles.slicehost.com/sitemap。您会在那里找到许多与 Ruby on Rails 应用程序的生产部署相关的文章。

【讨论】:

【参考方案3】:

我建议使用 Ubuntu 服务器和 deprec,因为它提供了大量的系统管理员配方,让事情变得更加简单。

【讨论】:

以上是关于RoR 服务器构建和 Capistrano 支持的主要内容,如果未能解决你的问题,请参考以下文章

使用 capistrano 从不同的 git 分支进行部署

ruby Capistrano部署策略支持git子模块(需要Capistrano v3.1.0或更高版本)

使用 Rails 为 capistrano 3.8.0 运行“cap production deploy”时不知道如何构建任务“start”

Capistrano、防火墙和隧道

为 Web 开发提供的 10 个 Ruby on Rails Gems

Capistrano多服务器配置