在开始本文之前,您应该已经用 Capistrano 配置了大部分 Ruby on Rails。 此时,我们需要检查 Capistrano 的配置文件并添加所需的内容。

快速细节

在本文中,我们将解释每个配置设置是什么以及它的用途。 虽然文章很长,但是每个步骤都有详细的说明,这样您就可以成功地执行所有的配置。

3. Deploy.rb

首先,我们将移动到位于本地工作站的 Ruby on Rails 应用程序文件夹。

 cd ~/dev/MyTestProject1

打开 deploy.rb 文件

 nano config/deploy.rb

文件应该是这样的:

set :application, "set your application name here"
set :repository,  "set your repository location here"
# If you aren't deploying to /u/apps/#{application} on the target
# servers (which is the default), you can specify the actual location
# via the :deploy_to variable:
# set :deploy_to, "/var/www/#{application}"
# If you aren't using Subversion to manage your source code, specify
# your SCM below:
# set :scm, :subversion
role :app, "your app-server here"
role :web, "your web-server here"
role :db,  "your db-server here", :primary => true

设置‘ application’、‘ username’和‘ repository’的变量

系统地工作,我们将从顶部开始,一直工作到文件的结尾。 文件中的第一个变量是‘ application’。 您可以使用任何应用程序名称,但最好使用您的域名。 这将使它符合我们用于 vhost 等的协议。

在下面的行中写入应用程序名称

set :application, "domain.com"

现在我们要设置用户名。 这将防止使用本地工作站用户名而不是液滴用户名可能出现的任何权限问题。

加上这一行

set :user, "username"

对于仓库,我们输入用于检验项目“ MyTestProject1”的详细信息

set :repository,  "svn+MyTestProject1ssh://12.34.56.789/home/username/repository/MyTestProject1"

设置 SSH 端口

Ssh 端口在默认情况下不设置。 Capistrano 使用默认的 SSH 端口22通过 SSH 连接到液滴。 因此,我们需要让 Capistrano 知道,在设置液滴时,我们将 SSH 端口定义为“22”。

下面一行定义了 SSH 端口。

 set :port, 22

设置部署路径

接下来,我们将设置部署路径。在设置液滴和 vhosts 时,我们使用“ public html”文件夹。

部署路径应编写如下:

set :deploy_to, "/home/username/public_html/#{application}"

注意,变量‘ application’在结尾处使用。 如果我们将‘ set: application’从 domain. com 更改为其他内容,那么这个设置也会反映这种更改。

设置‘ app’、‘ web’和‘ db’的变量

应用程序、 web 和数据库是在这个阶段需要设置的最后三个设置。 许多用户将这三个变量指向同一个位置,这可能会使事情有点混乱。 然而,它也可能有你的应用程序,网页和数据库指向不同的位置。 在这种情况下,此设置将让 Capistrano 知道每个变量的位置。

我们可以定义一个新的变量“ location”。这三个设置将指向分配给这个变量的 URL。

set :location, "domain2.com"
role :app, location
role :web, location
role :db,  location, :primary => true

另一方面,如果一切都发生在单个液滴上,我们可以只使用应用程序变量。

设置如下:

role :app, application
role :web, application
role :db, application , :primary => true

文件

因此,我们的最终文件应该包括以下信息:

set :application, "domain.com"
set : user, "username"
set :repository,  "svn+MyTestProject1ssh://12.34.56.789/home/username/repository/MyTestProject1"
# If you aren't deploying to /u/apps/#{application} on the target
# servers (which is the default), you can specify the actual location
# via the :deploy_to variable:
# set :deploy_to, "/var/www/#{application}"

set :port, 30000

set :deploy_to, "/home/username/public_html/#{application}"

# If you aren't using Subversion to manage your source code, specify
# your SCM below:
# set :scm, :subversion

role :app, application
role :web, application
role :db, application , :primary => true

虽然文件的内容看起来很简单,但是在输入我们的第一个 Capistrano 命令时,它们会很有帮助..。

公开 html

现在,我们将登录到这个液滴并移动到公用 html 文件夹。

ssh -p 22 username@123.45.67.890

cd /home/username/public_html

如果你没有可以工作的液滴,那么液滴就是空的。 因为目录是空的,所以不会有任何输出。

ls

现在我们将输入我们的第一个 Capistrano 命令。

运行命令 deploy: setup

在本地工作站上输入此命令

 cap deploy:setup

这似乎是一个简单的短语,但会发生很多事情。 要查看发生了什么,我们将查看我们的液滴上的公共 html 文件夹。

ls
...
domain.com

目录结构

卡皮斯特拉诺创造了奇迹。 查看 Capistrano 的功能和易用性。 它登录到这个雾滴,从 deploy.rb 获取设置,并创建了我们将用于未来开发的目录结构。 在父文件夹中,您可以看到另外两个文件夹,分别名为“ releases”和“ shared”。 “共享”文件夹包含系统信息、日志和 pid 等子文件夹。