2013-08-06 53 views
10

Tôi đã chạy Vagrant thành công trong khoảng một tuần. Đêm qua tôi chạy tải lại âm đạo và bây giờ tôi không còn có thể truy cập vào các trang web của tôi nữa.Vagrant 403 Forbidden

My files sống ở/lang thang/Sites . Ban đầu, "trang chào mừng" của tôi có tại/vagrant/Sites được hiển thị tại

http://localhost:4567/ 

Tất cả các dự án của tôi là các thư mục trong Trang web. Ví dụ:/vagrant/Sites/test sẽ không hiển thị index.html. Tôi nhận được thông tin sau đây

Bị cấm

Bạn không được phép truy cập/trên máy chủ này. Apache/2.4.6 (Ubuntu) Server tại localhost Cảng 4567

Các vhost trông giống như:

<VirtualHost *:80> 
    DocumentRoot "/vagrant/Sites/test" 
    ServerName test 
    <Directory "/vagrant/Sites/test"> 
    AllowOverride All 
    </Directory> 
</VirtualHost> 

Các vhosts được sở hữu bởi root. Các tệp dự án của tôi thuộc sở hữu của vagrant và chmod'ed 0777.

Sau khi không thành công, tôi đã phá hủy hoàn toàn theo sau bởi sự lang thang và sau đó trang chào đón máy chủ lưu trữ cục bộ ngừng hiển thị cùng với lỗi bị cấm.

Trả lời

7

Linh cảm của tôi là đây không phải là vấn đề mơ hồ chút nào mà chỉ là trục trặc cấu hình Apache. Có một vài điều tôi có thể nghĩ để kiểm tra.

Đầu tiên, rõ ràng, là để xác nhận rằng người dùng mà apache đang chạy dưới có quyền đọc và thực thi cho thư mục DocumentRoot.

Vì bạn đã đề cập đến Apache 2.4, there have been changes in the configs from 2.2. Đảm bảo câu hỏi Allow from all của bạn hiện đã đọc Require all granted. (Nếu bạn vẫn còn trên 2,2, bạn muốn chắc chắn rằng họ đã nói Allow from all thay vì Deny from all.) Trong cả hai trường hợp, bạn có thể đặt điều này trong từng cá nhân <VirtualHost> hoặc đặt mặc định trong khối <Directory /> của tệp chính httpd.conf.

Làm mờ hơn, bạn có thể kiểm tra selinux, mặc dù tôi khá chắc chắn điều này không có trong Ubuntu theo mặc định. (Ví dụ: trong CentOS).

+0

Cảm ơn, "Yêu cầu tất cả đã được cấp" đã nhận được phần của tôi ở đó. Nội dung trong thư mục gốc của tôi nơi các điểm cục bộ kết xuất, tuy nhiên tôi không thể truy cập vào nội dung trong thư mục thử nghiệm tại 'http: // test: 4567 /' nhưng tôi có thể truy cập nó tại địa chỉ 'http: // localhost: 4567/test 'mà không phải là mong muốn. – Kris

+0

Chỉ để trang trải các căn cứ, bạn đã xác minh bạn có '127.0.0.1 test' trong tệp'/etc/hosts' của bạn chưa? –

+0

Cảm ơn bạn đã kiểm tra, vâng tôi có trong máy Mac của tôi. Thiết lập của tôi như mô tả làm việc hoàn hảo với các phiên bản trước của Apache, nhưng đã sụp đổ sau khi nâng cấp. – Kris

2

Điều này được giải quyết và cuối cùng là một số thứ rất đơn giản.

  • Sử dụng "yêu cầu tất cả cấp" thay vì "Allow from all"
  • Đặt nội dung từng các trang web ở cùng một mức độ cụ thể là /vagrant/Sites/default, /vagrant/Sites/test, /vagrant/Sites/real-site
  • Thêm conf mở rộng vhost tên như thử nghiệm .conf và real-site.conf
  • Thêm AllowOverride All vào vhost để tôn trọng trang web '.htaccess file (Tôi nhận ra rằng đó là trong bài viết gốc của tôi, nó đã bị mất khi tôi cố gắng giải quyết điều này)

Tất cả những điều rất cơ bản đã làm tôi khó khăn hơn trong một tuần. Tôi hy vọng điều này có thể giúp người khác.

0
cd /etc/apache2/sites-available 
for file in `ls *`; do sed 's/\(.*<\/Directory.*>\)/Require\ all\ granted\n\1/' $file > $file.new;mv $file.new $file ; done; 

vì nó làm việc trước đây, tôi sẽ không lãng phí thời gian trong hồ sơ sửa chữa bởi tập tin

2

tôi đã cùng một vấn đề khi thay đổi DocumentRoot.

Vì bạn đã thay đổi DocumentRoot bạn-"/ bất kỳ/path/foo/bar", chắc chắn rằng bạn có quyền đặt trên "apache2.conf" cho con đường này.

Tìm kiếm:

<Directory /any/path/foo/bar> 

trong apache2.conf

Và thêm một khối mới như thế này:

<Directory /any/path/foo/bar> 
     Options Indexes FollowSymLinks 
     AllowOverride All 
     Require all granted 
</Directory> 

Và tôi đoán là mọi thứ đều sẽ ổn thôi!