2012-06-24 35 views
6

Trong triển khai-file của tôi, tôi thiết lập các nhóm để www-data:Triển khai với capistrano không bỏ qua nhóm thiết

set :user,   "root" 
set :group,   "www-data" 

vì thế khi sử dụng nắp: thiết lập tôi mong đợi capistrano để chown các thư mục với thư mục gốc: www-data

Nhưng tất cả thư mục và tệp đều là root: root.

Bất kỳ ý tưởng nào về sự cố này có thể đến từ đâu?

Thông tin: Tôi đang sử dụng toàn bộ hệ thống rvm.

+2

Đây là một thực tiễn khá tồi để triển khai dưới dạng thư mục gốc, tôi khuyên bạn nên tạo người dùng và triển khai với nó. –

Trả lời

8

theo hiểu biết của mình, bạn nên thực hiện theo cách thủ công, việc thiết lập là gì để sử dụng người dùng để đăng nhập, không đặt quyền đối với thư mục.

Tôi không tìm thấy cài đặt nhóm cho capistrano, có thể bạn đang sử dụng một số tiện ích mở rộng cho nó?

gì bạn có thể làm gì để thay đổi nó có thể là:

after "deploy:setup", :setup_group 
task :setup_group do 
    run "chown -R :#{group} #{deploy_to} && chmod -R g+s #{deploy_to}" 
end 

Nhưng ở vị trí đầu tiên, bạn không nên sử dụng gốc cho việc triển khai, như @Julian đề cập trong bình luận thực hành tốt hơn là sử dụng người dùng riêng biệt cho điều này nhiệm vụ và đặt nhóm của mình thành nhóm thích hợp, sau đó nó sẽ không yêu cầu nhiệm vụ trên và sẽ hoạt động tự động.

+0

Không biết tại sao nó không hoạt động nữa, nhưng điều này sẽ giúp, THX. Làm việc trên sự thay đổi để triển khai không root nhưng điều này cung cấp rất nhiều vấn đề mới – PascalTurbo

+0

Thiên Chúa, tôi đã vô tư sử dụng 'set: group' trong nhiều năm! Không bao giờ nhận thấy, bởi vì thường tên người dùng và nhóm của tôi giống nhau :) –

2

Chỉ cần nói tiếng: có không đề cập đến: nhóm trong mã nguồn Capistrano nào theo số. Tôi cho rằng đó là một lựa chọn hàng hóa. Và tùy chọn: người dùng chỉ được sử dụng cho kết nối SSH.

Đối với câu hỏi, thư mục và tệp mà Capistrano tạo được tạo với quyền mặc định, nó không bao giờ là chown của chúng theo bất kỳ cách nào; nếu bạn đang triển khai dưới dạng root thì chúng sẽ thuộc về root:root.

2

Tốt hơn so với sửa chữa một vấn đề là không có nó ở nơi đầu tiên:

  1. Đầu tiên, tạo một người dùng khác để triển khai với (as Julien suggests).
    Giả sử chúng tôi gọi anh ta là deployer.
  2. Sau đó sử dụng nó cho các kết nối SSH
    set :user, 'deployer'
  3. Cuối cùng, chúng tôi không muốn để được sử dụng sudo, vì vậy tắt nó đi bằng cách thêm
    set :use_sudo, false
    để deploy.rb của bạn.
+0

Khi tôi làm điều này, apache không thể đọc các tệp vì nó đang chạy dưới một người dùng/nhóm khác với người dùng triển khai. Nếu sau đó tôi tự chown -R cho người dùng máy chủ web, trang web hoạt động. Bất kỳ đề xuất? –

+1

@ joshua.paling Còn việc thêm người triển khai vào nhóm dữ liệu www thì sao? Điều này làm việc cho tôi. (Ubuntu: '' 'sudo adduser deployer www-data''') – marvin

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