2011-12-05 24 views
6

Tôi đang cố gắng định cấu hình Capistrano để nó hoạt động cho thiết lập máy chủ của chúng tôi. Chúng tôi đang triển khai các dự án symfony vì vậy tôi cũng đang sử dụng capifony. Tôi vẫn gặp phải một số vấn đề với quyền.Capistrano triển khai cách sử dụng use_sudo và admin_runner

Trên máy chủ của chúng tôi, mọi dự án đều hoạt động như một người dùng dự án, vì vậy mọi dự án đều có người dùng riêng. Vì vậy, tôi đã cấu hình use_sudo và đặt nó thành true và tôi đã cấu hình admin_runner làm người dùng của dự án. Nhưng nó vẫn không hoạt động vì vậy tôi đã sửa đổi capifony để bắt đầu sử dụng try_sudo thay vì chạy thường xuyên. Mà làm cho nó hoạt động tốt hơn một chút. Nhưng tôi là một chút bối rối về những gì để sử dụng trong trường hợp đó. Bạn có try_sudo, sudo và chạy. Nhưng điều gì là cần thiết cho trường hợp sử dụng nào?

  • Khi bạn sử dụng chạy tôi nghĩ rằng nó sẽ luôn được người dùng địa phương của bạn
  • try_sudo tôi nghĩ rằng sẽ kiểm tra nếu cờ use_sudo là đúng nếu vì vậy nó sẽ sử dụng lệnh sudo nếu không nó sẽ sử dụng người dùng cục bộ. Nếu bạn đã cấu hình admin_runner nó sẽ sudo cho người sử dụng cấu hình như admin_runner
  • sudo sẽ luôn cố gắng để sudo

Bây giờ vấn đề của tôi là triển khai: Phương pháp liên kết tượng trưng này cũng chỉ là một lệnh chạy thường xuyên nên nó thực hiện như người dùng cục bộ, cho phép các vấn đề về quyền khi tôi cố gắng xem trang web.

Vì vậy, bất kỳ ai cũng có thể cho tôi biết nếu mô tả của tôi về 3 lệnh là chính xác không? và cũng có ai biết admin_runner và use_sudo được sử dụng như thế nào, để symlink cũng được thực hiện đúng (và tất cả các lệnh khác được thực hiện bởi capistrano)?

loại liên quan,

Daan

+0

Lưu ý rằng capifony không quan tâm đến ': use_sudo' hoặc' admin_runner'. –

Trả lời

4

Xin lỗi cho một câu trả lời trễ như vậy Daan. Sự hiểu biết của bạn về Capistrano là chính xác. Cũng lưu ý rằng cờ :use_sudo mặc định là true.

Trong Capistrano 2.11.2, bạn sẽ tìm thấy lib/capistrano/cấu hình/variables.rb:

_cset(:run_method)  { fetch(:use_sudo, true) ? :sudo : :run } 

và lib/capistrano/công thức nấu ăn/deploy.rb:

def try_sudo(*args) 
    options = args.last.is_a?(Hash) ? args.pop : {} 
    command = args.shift 
    raise ArgumentError, "too many arguments" if args.any? 

    as = options.fetch(:as, fetch(:admin_runner, nil)) 
    via = fetch(:run_method, :sudo) 
    if command 
    invoke_command(command, :via => via, :as => as) 
    elsif via == :sudo 
    sudo(:as => as) 
    else 
    "" 
    end 
end 

lẽ vấn đề quyền của bạn liên quan đến máy chủ của bạn, hoạt động như một người dùng bình thường, không thể đọc được nội dung của thư mục phát hành mà liên kết tượng trưng current trỏ đến?

Các vấn đề liên quan