2016-01-22 32 views
5

Tôi gặp khó khăn khi đặt quyền cho thư mục web trên Cây đậu đàn hồi. Tôi chạy nhiều container bằng cách sử dụng hình ảnh docker tùy chỉnh trong một ví dụ: apache-php, mysql, memcached, vv .. Đối với container "apache-php" tôi ánh xạ một thư mục với ứng dụng yii2 của tôi đến/var/www/html /.Cách đặt quyền cho thư mục cho một vùng chứa cụ thể trên Cây đậu đàn hồi

Khi tôi tạo nhóm theo cách thủ công và tải lên/triển khai thông qua bảng điều khiển Cây đậu đàn hồi, tôi chắc chắn có quyền phù hợp cho thư mục và mọi thứ hoạt động tốt.

Bây giờ, khi tôi triển khai ứng dụng bằng cách sử dụng "eb deploy", nó sẽ xóa tất cả quyền và tôi gặp lỗi máy chủ và "Thư mục không thể ghi bởi quy trình Web:/var/www/html/backend/web/nội dung "trong nhật ký.

Tôi có thể kết nối qua ssh và đặt quyền cần thiết theo cách thủ công, nhưng chắc chắn điều này không thuận tiện, vì cần phải thực hiện mỗi lần tôi triển khai lại ứng dụng.

Vì vậy, câu hỏi của tôi là cách tốt nhất để tự động đặt quyền cho thư mục cụ thể trong vùng chứa cụ thể trên Cây đậu phụ là gì?

Có lẽ, tôi có thể sử dụng .bextensions, nhưng tôi không tìm cách chạy "container_commands" cho vùng chứa cụ thể.

Trả lời

9

AWS EB triển khai bắt đầu ứng dụng của bạn trong /var/app/ondeck

  1. Khi triển khai cây đậu đàn hồi, ứng dụng của bạn là lần đầu tiên giải nén vào /var/app/ondeck/
    • Nhiều khả năng, thư mục địa phương của bạn được triển khai không có quyền mà bạn muốn về họ.
  2. Nếu bạn cần điều chỉnh ứng dụng hoặc vỏ, trong khi triển khai, .ebextensions/*.config là nơi phù hợp để thực hiện.

lệnh container nên chạy đến con đường

Nhưng hãy nhớ, rằng các lệnh này sẽ chạy mỗi khi bạn triển khai, cho dù cần thiết hay không, trừ khi bạn sử dụng một số phương pháp để kiểm tra trước khi config.

container_commands: 
    08user_config: 
    test: test ! -f /opt/elasticbeanstalk/.preconfig-complete 
    command: | 
     echo "jail-me" > /home/ec2-user/.userfile 
    09writable_dirs: 
    command: | 
     chmod -R 770 /var/app/ondeck/backend/web/assets 
     chmod -R 770 /var/app/ondeck/[path] 
    99complete: 
    command: | 
     touch /opt/elasticbeanstalk/.preconfig-complete 

files: 
    "/etc/profile.d/myalias.sh": 
    mode: "000644" 
    owner: root 
    group: root 
    content: | 
     alias webroot='cd /var/www/html/backend/web; ls -al --color;' 
     echo " ========== " 
     echo " The whole point of Elastic Beanstalk is that you shouldn't need to SSH into the server. " 
     echo " ========== " 
+1

Hi @Tony, bạn có thể xin vui lòng kiểm tra làm thế nào tôi có thể nhận được lỗi trong khi tôi đang cố gắng 'lệnh: 03_attachment_directory_permission: lệnh: chmod 777/var/app/ondeck/manellen/vé/file đính kèm/' và nó trả về lỗi 'bởi vì: (ElasticBeanstalk :: ExternalInvocationError)' trong tệp nhật ký – Manellen

+0

@Manellen, bạn không nên sử dụng các bình luận để đặt câu hỏi. Câu hỏi này [đã được yêu cầu và trả lời] (https://stackoverflow.com/questions/40357270/running-a-script-from-ebextensions-folder-in-aws-elastic-beanstalk), và thường là do cố gắng để truy cập các tệp trên đường dẫn chưa tồn tại. I.E .: '/ home' không tồn tại khi ứng dụng đang triển khai. Tệp được tạo trong câu trả lời này '/ etc/profile.d/myalias.sh' không tồn tại. Mọi thứ đang được chuẩn bị trong '/ var/app/ondeck'. –

-1

Có, bạn nên sử dụng ebextensions.

Tạo thư mục trong gốc nguồn ứng dụng của bạn được gọi là .ebextensions. Tạo tệp có phần mở rộng là .config nói 01-folder-permissions.config. Các tệp được xử lý theo thứ tự từ điển của tên của chúng.

Nội dung của tập tin có thể là:

container_commands: 
    change_permissions: 
     command: chmod 777 /var/www/some-folder 

Replace with thư mục và cho phép thích hợp. Đọc về các lệnh vùng chứa here.

+0

'/ var/www' không tồn tại khi các lệnh vùng chứa được chạy. –

+6

chmod 777 là xấu. Không bao giờ 777. Không đâu cả. Đó là jackpot của hacker. –

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