2011-08-02 30 views
6

Tôi đang chạy Ruby on Rails 3.0.9 trong phương thức sản xuất trên một máy VPS từ xa chạy Ubuntu 10.04 LTS (trong chế độ phát triển tôi sử dụng ROR trên MAC OS Tuyết Leopard) và tôi muốn biết cách quản lý kịch bản sau đây.Xử lý Kẹp giấy thư mục và tập tin cho phép sử dụng Ruby on Rails

tôi sử dụng Apache2 và hành kháchPhusion và tôi đã thiết lập Virtual Host như-như thế này:

<VirtualHost *:80> 
    ServerName project_name.com 
    DocumentRoot /srv/www/project_name.com/public 

    <Directory /srv/www/project_name.com/public> 
    AllowOverride all 
    Options -MultiViews 
    </Directory> 
</VirtualHost> 

hơn, tôi sử dụng Kẹp giấy đá quý và, như rất nhiều người dân trên web sử dụng nó trong chế độ sản xuất, tôi nhận được lỗi sau đây về xử lý (hình ảnh) tập tin:

Errno::EACCES (Permission denied - /srv/www/project_name.com/public/images/001): 
... 

Tôi nghe nói rằng một giải pháp để tránh những ki thứ lỗi là đặt đúng quyền truy cập thư mục (thủ công! - Tôi không biết nếu nó có thể tự động hóa quá trình "thiết lập" ... BTW: là nó có thể?) Nhưng tôi nghĩ rằng có một cách tốt hơn để giải quyết điều đó. Nếu có, tôi có thể làm gì?

Trả lời

2

@M. Cypher đã đóng, mặc dù vấn đề lớn nhất tôi thấy là bạn cho phép người dùng tải lên các tệp tùy ý và sau đó đánh dấu tất cả các tệp đó là có thể thực thi được. Đây là một thảm họa tìm kiếm một nơi để xảy ra.

find /srv/www/project_name.com/public -type d -exec chmod 755 {}\; 
find /srv/www/project_name.com/public -type f -exec chmod 644 {}\; 

Điều này sẽ đặt thực thi trên thư mục (cần thiết) nhưng không được thực hiện trên tệp.

1

Tại sao tự động hóa, nó chỉ yêu cầu một lệnh đơn giản trên máy chủ.

sudo chmod -R 777 /srv/www/project_name.com/public 

Edit: Tôi có tất cả các hình ảnh Kẹp giấy của tôi trong một thư mục chia sẻ, ví dụ /srv/www/project/shared/... Bằng cách đó, chúng không bị ảnh hưởng khi triển khai phiên bản mới với Capistrano và tôi chỉ phải thiết lập quyền truy cập thư mục một lần (với lệnh trên hoặc tương tự). Đó là lý do tại sao tôi nghĩ rằng tự động hóa là không cần thiết, vì bạn cần phải chạy lệnh chính xác một lần, không phải sau mỗi lần triển khai.

Btw, chmod -R 777 có thể không phải là lựa chọn tốt nhất vì nó bừa bãi đặt mọi tệp trong mọi thư mục con đều có thể truy cập được bởi mọi người. Nó hoạt động, nhưng tôi chắc rằng ai đó có nhiều kỹ năng Linux có thể chỉ ra tại sao một phiên bản ít khắc nghiệt hơn sẽ thông minh hơn.

+1

Tôi nghĩ 755 là lựa chọn tốt hơn 777 – slotishtype

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