深入了解 Capistrano 的配置 #1
在开始本文之前,您应该已经使用 Capistrano 配置了 Ruby on Rails 的大部分内容。此时,我们需要检查 Capistrano 的配置文件并添加所需的内容。
快速详细信息
在本文中,我们将解释每个配置设置是什么以及它们的作用。虽然文章很长,但每个步骤都解释得非常详细,以便您可以成功完成所有配置。
部署.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
设置“应用程序”、“用户名”和“存储库”的变量
系统地工作,我们将从顶部开始,一直到文件末尾。文件中的第一个变量是“应用程序”。您可以使用任何应用程序名称,但最好使用域名。这将使其符合我们用于 vhost 等的协议。
在以下行中输入应用程序名称
set :application, "domain.com"
现在我们要设置用户名。这将防止使用本地工作站用户名而不是 droplet 用户名可能出现的任何权限问题。
添加此行
set :user, "username"
对于存储库,我们输入用于检出项目“MyTestProject1”的详细信息
set :repository, "svn+MyTestProject1ssh://12.34.56.789/home/username/repository/MyTestProject1"
设置 SSH 端口
默认情况下不设置 SSH 端口。Capistrano 使用默认的 ssh 端口 22 通过 SSH 连接到 droplet。因此,我们需要让 Capistrano 知道我们在设置 droplet 时将 SSH 端口定义为“22”。
下面一行定义了 SSH 端口。
set :port, 22
设置部署路径
接下来,我们将设置部署路径。在设置 droplet 和 vhosts 时,我们使用了“public_html”文件夹。
部署路径应该这样写:
set :deploy_to, "/home/username/public_html/#{application}"
请注意,变量“application”在最后使用。如果我们将“set :application”从 domain.com 更改为其他内容,则此设置也会反映该更改。
设置“app”、“web”和“db”的变量
App、web 和 db 是此阶段需要设置的最后三个设置。许多用户将这三个变量指向同一个位置;这可能会让事情变得有点混乱。但是,也可以让您的 app、web 和 db 指向不同的位置。在这种情况下,此设置将让 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
最终的 deploy.rb 文件
因此我们的最终文件应包含以下信息:
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 命令时,它们会很有帮助……
Public_html
现在,我们将登录到 droplet 并移动到 public_html 文件夹。
ssh -p 22 username@123.45.67.890 cd /home/username/public_html
如果你没有可用的 droplet,droplet 将会是空的。由于目录是空的,所以不会有任何输出。
ls
现在我们将输入第一个 Capistrano 命令。
运行命令 deploy:setup
在本地工作站上输入此命令
cap deploy:setup
这看起来似乎很简单,但实际上会发生很多事情。要了解发生了什么,我们将查看 droplet 上的 public_html 文件夹。
ls ... domain.com
目录结构
Capistrano 创造了奇迹。看看 Capistrano 的强大功能和易用性。它登录到 droplet,从 deploy.rb 获取设置并创建我们将用于未来开发的目录结构。在父文件夹中,您可以看到另外两个名为“releases”和“shared”的文件夹。“shared”文件夹包含系统信息、日志和 pid 等子文件夹。