Điều đã xảy ra là cú pháp của các tệp cấu hình trong apache2.4 đã thay đổi.
Nguồn: Điều này cũng đã xảy ra với tôi sau khi tôi nâng cấp lên 13.10
tập tin conf.d
Tất cả các tập tin đã /etc/apache2/conf.dđược chuyển đến /etc/apache2/conf-available.
Bây giờ họ làm việc theo cùng một cách sitesvà modslàm việc. Chỉ cần đặt các tập tin conf của bạn vào conf-availablethư mục và kích hoạt cái bạn muốn a2enconf <config-file-name>.
Thí dụ:
Tôi đã có một tập tin conf.d/httpd.confcó chỉ thị ServerName.
Để thực hiện công việc đó, tôi phải di chuyển nó vào conf-availablethư mục và kích hoạt nó bằng tay.
sudo mv /etc/apache2/conf.d/httpd.conf /etc/apache2/conf-available/httpd.conf
sudo a2enconf httpd
tập tin trang web
Trước đây, các tập tin trong /etc/apache2/sites-availablekhông có phần mở rộng. Ví dụ /etc/apache2/sites-available/default. Bây giờ một .confphần mở rộng là cần thiết.
Thí dụ:
Nếu bạn đã có /etc/apache2/sites-available/some-site, trong 13.04 bạn chỉ có thể kích hoạt nó bằng cách sử dụng sudo a2ensite some-site. Bây giờ nó sẽ cung cấp cho bạn một lỗi nói
LRI: Trang web một số trang web không tồn tại!
Để khắc phục điều này, hãy thêm a .confvào tất cả các tệp cấu hình của bạn sites-available. Bạn có thể thực hiện tương tự sites-enabledhoặc bạn có thể xóa tất cả các tệp và bật lại từng tệp một cách thủ công.
Tôi khuyên bạn nên thực hiện chúng một cách thủ công vì có thể bạn cần sửa từng Vhost (bước tiếp theo).
sudo find /etc/apache2/sites-available/ ! -iname '*.conf' -type f -exec mv '{}' '{}'.conf \;
nếu bạn quyết định làm chúng bằng tay:
sudo rm /etc/apache2/sites-enabled/*
sudo a2ensite your-site-name
Chỉ thị máy chủ ảo:
cho phép / từ chối vs Yêu cầu
Nếu bạn đã có những điều sau đây:
<Directory /path/to/your/site/>
order allow,deny
allow from all
</Directory>
Nó sẽ trở thành:
<Directory /path/to/your/site/>
Require all granted
</Directory>
Để biết thêm thông tin, hãy kiểm tra các nhận xét của DaveRandom về câu trả lời trên Stack Overflow.
Một cách đơn giản, nếu bạn nâng cấp lên apache2.4 và giữ cái cũ httpd.confcủa apache2.2, cho phép chỉ nên giữ làm việc tốt. Nếu bạn đã nâng cấp httpd.conf(mà tôi muốn đề xuất), bạn sẽ nhận được 403 lỗi cho đến khi bạn thay đổi Order/ Allow/ Denychỉ thị thành tương đương Require.
Tùy chọn thư mục
Nếu bạn có lựa chọn Directory, lưu ý rằng tất cả họ đều phải được thêm vào phía trước với một +hoặc -hoặc ai trong số họ cả. Một kết hợp của cả hai không được phép:
Thí dụ:
Điều này được cho phép:
<Directory /path/to/your/site/>
Options +Indexes +FollowSymLinks -MultiViews
</Directory>
Đây cũng vậy (Lưu ý rằng các ví dụ này không làm cả hai cùng làm một việc, ví dụ trước sẽ vô hiệu hóa MultiViewstùy chọn, ví dụ tiếp theo không):
<Directory /path/to/your/site/>
Options Indexes FollowSymLinks MultiViews
</Directory>
Điều này không còn được cho phép:
<Directory /path/to/your/site/>
Options Indexes FollowSymLinks -MultiViews
</Directory>
Tùy chọn cấu hình cuối cùng sẽ đưa ra lỗi cú pháp cho biết:
Tất cả các Tùy chọn phải bắt đầu bằng + hoặc - hoặc không có Tùy chọn nào có thể.
Khởi động lại apache
Khi mọi thứ đã hoàn tất, bạn cần khởi động lại máy chủ apache của mình để các thay đổi có hiệu lực:
sudo apache2ctl restart
Bạn có thể tìm thấy hướng dẫn nâng cấp chi tiết từ 2.2 lên 2.4 trên tài liệu chính thức.
httpd.conftệp hoặcconf.dthư mục. Nhưng có mộtapache2.conftập tin. Tôi đã thử di chuyển nó vàoconf-availablethư mục và gặp lỗi sau khi tôi khởi động lại apache2: apache2: Không thể mở tệp cấu hình /etc/apache2/apache2.conf: Không có tệp hoặc thư mục như vậy - Lý do có thể là gì?