如何使用Capistrano与Apache或Nginx?

sup*_*777 3 apache deployment capistrano ruby-on-rails nginx

运行时cap deploy可以创建一些文件夹,如发布共享.那么它们与Apache或Nginx服务器根目录之间的关系是什么?

这个方法对吗?(这是一个Nginx配置)

server {
  listen 80;
  server_name www.yourhost.com;
  root /releases/...;   # Which path to be here???
  passenger_enabled on;
}
Run Code Online (Sandbox Code Playgroud)

而且,运行后cap deploy,web服务器可以自动重启吗?

Sam*_*cey 7

部署时,capistrano会在releases文件夹中创建一个文件夹,然后将该文件夹符号链接到/your_app/current.

由于您向公众公开的rails应用程序部分是public文件夹,因此您需要将nginx配置中的根目录设置为:

root /path_to_your_app/current/public; 
Run Code Online (Sandbox Code Playgroud)

每次部署current都会有效地从源代码刷新内容,任何未提交给源代码控制的数据都将丢失,这就是共享文件夹的来源.共享文件夹将包含不会出现的内容.版本控制,但您不希望丢失每个部署 - 应用程序日志,上载的图像等.

以下是如何使用共享文件夹上传的一个很好的示例:http://www.simonecarletti.com/blog/2009/02/capistrano-uploads-folder/

可以使用deploy.rb中的以下任务重新启动Web服务器:

namespace :deploy do
  task :restart do
    run "touch #{current_path}/tmp/restart.txt"
  end
end
Run Code Online (Sandbox Code Playgroud)

Phusion乘客监视此文件,并在创建时触发重启.