Rails 4.2 capistrano 3部署

时间:2015-01-09 13:35:18

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

我对rails部署完全不熟悉。谷歌搜索后,我仍然觉得很难理解如何部署rails应用程序。

所以,我的问题是:

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

  2. 我应该上传整个rails app文件夹还是仅上传部分内容?我的rails应用程序中有paperclip,paperclip在system/文件夹中创建了一个public/目录,所以我应该上传system/吗?

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

  4. 感谢您的关注。

2 个答案:

答案 0 :(得分: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应用程序中的回形针,以及paperclip创建一个系统/目录   在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回购。那我应该输入什么?

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

答案 1 :(得分:0)

您可以set up your own private git server,然后在deploy.rb中添加类似

的内容

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

当您将更改提交到git repo时,您不必将应用程序上传到服务器。 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>

其中'server'是VPS中git repo的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