Đ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 sites
và mods
làm việc. Chỉ cần đặt các tập tin conf của bạn vào conf-available
thư 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.conf
có chỉ thị ServerName.
Để thực hiện công việc đó, tôi phải di chuyển nó vào conf-available
thư 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-available
không có phần mở rộng. Ví dụ /etc/apache2/sites-available/default
. Bây giờ một .conf
phầ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 .conf
và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-enabled
hoặ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.conf
củ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
/ Deny
chỉ 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 MultiViews
tù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.conf
tệp hoặcconf.d
thư mục. Nhưng có mộtapache2.conf
tập tin. Tôi đã thử di chuyển nó vàoconf-available
thư 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ì?