2010-10-16 31 views
12

Tôi đang sử dụng Phusion Passenger để triển khai một ứng dụng đường ray bằng cách sử dụng apache2 trên CentOS 5.5. Đối với một số lý do, tôi tiếp tục nhận được thông báo này khi tôi khởi động apache:apache nói thư mục DocumentRoot của tôi không tồn tại

> service start httpd
Starting httpd: Warning: DocumentRoot [/home/deploy/my_app/public] does not exist
[ OK ]

Thư mục chắc chắn nhất không tồn tại. Dưới đây là một số tác phẩm quan trọng từ cấu hình của tôi:

/etc/httpd/conf/httpd.conf
...
tài triển khai
Nhóm triển khai
...

/etc/httpd/conf.d/my_app.conf
< VirtualHost *:80>
    ServerName my_app.com
    DocumentRoot /home/deploy/my_app/public
    < Directory /home/deploy/my_app/public>
        Allow from all
        Options -MultiViews
    < /Directory>
< /VirtualHost>

Các thư mục/home/deploy,/home/deploy/my_app/public đều thuộc về người dùng triển khai.

+0

các điều khoản trên thư mục là gì? Tôi không phải là chuyên gia, nhưng điều đầu tiên bạn nghĩ đến là mặc dù bạn đã đặt tên đúng người dùng trong httpd.conf, nhưng không nhất thiết * người dùng * đó kiểm tra xem thư mục có tồn tại hay không ... – vonconrad

+0

Tôi đã đặt mọi thứ cho rwxrwxrwx hoặc rwxrw-rw-. root sở hữu/home và deploy sở hữu mọi thứ khác trên đường đến/home/deploy/my_app/public. Cảm ơn, mặc dù. – muirbot

Trả lời

16

Tôi cũng gặp sự cố này. Bạn đang chạy SELinux? Kiểm tra/etc/sysconfig/selinux hoặc thử echo "0" >/selinux/enforce làm thư mục gốc để xem việc vô hiệu hóa có giúp ích hay không.

Nếu có, bạn có thể sửa đổi chính sách selinux của mình để cho phép truy cập vào các tệp này hoặc chỉ tắt hoàn toàn selinux.

+2

Tôi đang gặp phải vấn đề tương tự như @muirbot và giải pháp này không hữu ích. – Randell

+0

Tương tự. Sử dụng 'setenforce 0' tạm thời hoạt động, nhưng giải pháp vĩnh viễn thì không. Bất kỳ ý tưởng? –

+0

cảm ơn giải pháp. Không chắc chắn rằng đó là giải pháp vĩnh viễn – RAJ

0

Vui lòng kiểm tra xem tệp /etc/sysconfig/selinux có thực thi quyền riêng tư hay không. Nếu không, cấp quyền thực thi, khởi động lại máy chủ web và sau đó thử lại để truy cập trang

2

Thay vì tắt SELinux, bạn sẽ có thể khắc phục vấn đề ngữ cảnh khá dễ dàng.

Bạn có thể kiểm tra ngữ cảnh hiện tại của thư mục public bằng lệnh sau.

ls -Z /home/deploy/my_app/ 

Nếu bạn có một con đường khác nhau trên máy chủ của bạn mà đang làm việc (ví dụ:/home/triển khai/foo/bar /), kiểm tra nó bằng cách sử dụng lệnh giống nhau và so sánh với các kết quả trước đó.

ls -Z /home/deploy/foo/ 

Cách khắc phục: Sau đó bạn có thể chỉ cần sao chép các bối cảnh từ thư mục làm việc như thế này ...

chcon /home/deploy/my_app/public/ --reference=/home/deploy/foo/bar/ 
0

tôi đã cùng một vấn đề và thấy điều này:

https://www.centos.org/forums/viewtopic.php?t=1742#p9988

Bằng cách sử dụng công cụ semanage không phải là khó và theo như tôi có thể nói, là cách SELinux là suppo sed được sử dụng. Tôi tin rằng điều này an toàn hơn là tắt hoàn toàn.

ví dụ từ liên kết được cung cấp:

[[email protected] user]# semanage fcontext -a -t public_content_rw_t '/home/user(/.*)?' 
[[email protected] user]# restorecon -R /home/user 
Các vấn đề liên quan