【问题标题】:Rails 4.2 capistrano 3 deploymentRails 4.2 capistrano 3 部署
【发布时间】:2015-03-07 20:19:53
【问题描述】:

我对 Rails 部署完全陌生。谷歌搜索后,我仍然很难理解如何部署 Rails 应用程序。

所以,我的问题是:

  1. 在设置了具有所有 Rails 依赖项的 VPS 后,我在哪里存储我的代码库? VPS 的根目录或某些特定位置,例如www/public/?

  2. 我应该上传整个 rails app 文件夹还是只上传其中的一部分?我的rails 应用程序中有回形针,回形针在public/ 文件夹中创建了一个system/ 目录,那么我应该上传system/ 吗?

  3. 在 Capistrano 3 中,有一个 repo_url 字段,我知道他们支持file://, https://, ssh://, or svn+ssh://,但大多数关于 capistrano 的文章都将 github 存储库放入其中。但是,我没有这样的 github 存储库。那我应该输入什么?

感谢您的关注。

【问题讨论】:

  • 关于#3,如果你不使用github,你用什么来管理源代码?

标签: ruby-on-rails git deployment capistrano vps


【解决方案1】:

对提出的具体问题的回答:

用所有 Rails 依赖项设置 VPS 后,我在哪里存储 我的代码库? VPS的根目录或某些特定位置 例如www/ 还是 public/?

它将被部署到:deploy_to参数指向的文件夹。如果未指定,:deploy_to 默认为 /var/www/#{fetch(:application) 请参阅:https://github.com/capistrano/capistrano/blob/05f63f5f333bb261f2a4c4497174361c48143252/lib/capistrano/defaults.rb#L3

我应该上传整个 rails app 文件夹还是只上传其中的一部分?我有 我的 rails 应用程序中的回形针,回形针创建一个 system/ 目录 在 public/ 文件夹中,我应该上传 system/ 吗?

Paperclip system 文件夹是特定于环境的;每个环境(开发、生产……)都有自己的system 文件夹,用于存储上传到特定环境的文件。此文件夹不应是正在部署的代码的一部分。

处理此类文件夹的推荐方法是将它们保存在服务器上的共享文件夹中,并在当前版本的代码中创建符号链接,以便将同一文件夹用于存储/检索附件。请参阅http://robmclarty.com/blog/how-to-deploy-a-rails-4-app-with-git-and-capistrano 中的Section 3. Update custom links 部分了解有关此内容的更多详细信息。

如上所述,这同样适用于config/database.yml 文件,以及任何其他包含环境特定配置的文件。

在 Capistrano 3 中,有一个 repo_url 字段,我知道他们支持 file://、https://、ssh:// 或 svn+ssh://,但大多数文章 关于 capistrano 将 github 存储库放入其中。然而,我不 有这样一个github repo。那我应该输入什么?

取决于您要部署的代码的存储位置。如果在本地文件夹中,请使用file::// 格式指定文件所在的位置。

【讨论】:

    【解决方案2】:

    你可以set up your own private git server,然后在deploy.rb中你可以放类似

    set :repo_url, 'ssh://user@server_ip/path/to/your_git_repo.git'

    当您将更改提交到 git 存储库时,您不必将应用程序上传到服务器。 Capistrano 会在您部署时为您上传应用程序。

    我将代码库放在哪里?这取决于您在deploy.rb 中输入的内容,例如

    set :deploy_to, '/path/to/my_codebase'

    是否上传/system 目录将取决于您是否希望版本控制中的回形针图像。如果没有,您可以将目录添加到gitignore。这是关于如何在 ubuntu 14.04 乘客和 NGINX 上部署的tutorial。如果您不使用Passenger 和Nginx,您可以跳到如何配置capistrano 并根据您的设置进行调整。

    编辑

    您需要在您的开发机器上安装 git 并按照上面链接中的说明在您的 VPS 上设置一个 git 服务器,使用

    将您的远程服务器添加到本地机器

    git remote add origin <server>

    其中“服务器”是您在 VPS 中的 git 存储库的 url,例如

    ssh://VPS_user@VPS_ip/path/to/your_git_repo.git

    现在,当您提交更改并将更改推送到服务器时,capistrano 将在您的 git 服务器上部署最新版本。

    Here is a link with a guide on how to get started with git

    【讨论】:

    • 这是否意味着我必须有一个远程 git repo 才能通过 capistrano 进行部署?我对 git 很敏感,因为我很少使用 git...
    • 远程 git repo 可以在您部署应用程序的同一 VPS 中。唯一的条件是部署的用户应该对 repo 所在的目录具有读写权限。在这种情况下,您将其放入 deploy.rb set :repo_url, 'ssh://your_vps_username@your_vps_ip/path/to/git_repo.git'。我将很快编辑答案,并提供一个简单的 git 入门链接。
    • 感谢您的回复。我需要先将本地代码库 git push 到远程 git repo,然后运行 ​​cap deploy 命令吗?或者我只需要限制部署,Capistrano 会推送我最新的代码库并部署应用程序?
    • 每次修改都需要同时运行 git push 命令和 cap deploy 命令
    • 如果我使用repo_url, 'ssh://your_vps_username@your_vps_ip/path/to/git_repo.git'。这是否意味着任何能猜出我的 git 路径的人都有权克隆我的代码库?这里有保安吗??
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-08
    • 1970-01-01
    • 1970-01-01
    • 2015-07-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多