Lỗi cấu hình Apache AH00526: Lỗi cú pháp
Loạt bài hướng dẫn này giải thích cách khắc phục sự cố và sửa chữa một số lỗi phổ biến nhất mà bạn có thể gặp phải khi sử dụng web server Apache .Mỗi hướng dẫn trong loạt bài này bao gồm mô tả về các lỗi cấu hình Apache, mạng, hệ thống file hoặc quyền phổ biến. Loạt bài này bắt đầu với tổng quan về các lệnh và file log mà bạn có thể sử dụng để khắc phục sự cố Apache. Các hướng dẫn tiếp theo kiểm tra các lỗi cụ thể một cách chi tiết.
Apache AH00526: Syntax error
xảy ra khi có lỗi chính tả hoặc cài đặt cấu hình sai ở đâu đó trong file cấu hình Apache của bạn. Đó là một lỗi chung có thể là dấu hiệu của một số vấn đề cơ bản.
Lỗi có thể được phát hiện bằng cách sử dụng apachectl configtest
trước khi một cấu hình không hợp lệ được tải. Nó cũng có thể được tìm thấy bằng cách sử dụng lệnh systemctl
và journalctl
. Trong hai trường hợp sau, Apache sẽ không thể chạy do lỗi.
Nếu bạn đã phát hiện ra lỗi khi sử dụng apachectl
hãy chuyển đến phần Khắc phục sự cố bằng cách sử dụng Lệnh apachectl
tích hợp của hướng dẫn này. Nếu không, phần tiếp theo sẽ giải thích cách sử dụng systemctl
để khắc phục lỗi.
Khắc phục sự cố với systemctl
Thực hiện theo các bước khắc phục sự cố từ hướng dẫnCách khắc phục các lỗi Apache phổ biến ở phần đầu của loạt bài này, bước đầu tiên khi bạn khắc phục lỗi AH00526 là kiểm tra trạng thái của Apache bằng systemctl
. Điều quan trọng là phải hiểu liệu lỗi có ảnh hưởng đến quá trình đang chạy hay nó đang ngăn Apache khởi động.
Trên các bản phân phối Linux bắt nguồn từ Ubuntu và Debian, hãy chạy phần sau để kiểm tra trạng thái của Apache:
- sudo systemctl status apache2.service -l --no-pager
Trên hệ thống CentOS và Fedora, sử dụng lệnh này để kiểm tra trạng thái của Apache:
- sudo systemctl status httpd.service -l --no-pager
Cờ -l
sẽ đảm bảo systemctl
xuất ra toàn bộ nội dung của một dòng, thay vì thay thế bằng systemctl
( …
) cho các dòng dài. Cờ --no-pager
sẽ xuất toàn bộ log ra màn hình của bạn mà không cần gọi một công cụ như less
chỉ hiển thị màn hình nội dung tại một thời điểm.
Vì bạn đang khắc phục sự cố thông AH00526: Syntax error
, bạn sẽ nhận được kết quả tương tự như sau:
Output● apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) Drop-In: /lib/systemd/system/apache2.service.d └─apache2-systemd.conf Active: failed (Result: exit-code) since Wed 2020-07-15 13:45:49 UTC; 1min 37s ago . . . Jul 15 13:45:49 f17f01056c5b systemd[1]: Starting The Apache HTTP Server... Jul 15 13:45:49 f17f01056c5b apachectl[15860]: AH00526: Syntax error on line 2 of /etc/apache2/sites-enabled/000-default.conf: Jul 15 13:45:49 f17f01056c5b apachectl[15860]: Invalid command 'SSSLCertificateFile', perhaps misspelled or defined by a module not included in the server configuration Jul 15 13:45:49 f17f01056c5b apachectl[15860]: Action 'start' failed. Jul 15 13:45:49 f17f01056c5b apachectl[15860]: The Apache error log may have more information. Jul 15 13:45:49 f17f01056c5b systemd[1]: apache2.service: Control process exited, code=exited status=1 Jul 15 13:45:49 f17f01056c5b systemd[1]: apache2.service: Failed with result 'exit-code'. Jul 15 13:45:49 f17f01056c5b systemd[1]: Failed to start The Apache HTTP Server.
Trong trường hợp này, Apache không chạy do lỗi cú pháp. Lỗi do một ký tự S thừa ở đầu dòng SSSLCertificateFile
trong file /etc/apache2/sites-enabled/000-default.conf
. Chỉ thị chính xác phải là SSLCertificateFile
, vì vậy việc chỉnh sửa file để sửa tên chỉ thị trong ví dụ này sẽ giải quyết được lỗi và cho phép Apache khởi động.
Đầu ra systemctl
trong ví dụ này cũng bao gồm một số dòng từ tạp chí systemd
. Nếu kết quả của bạn cho biết một dòng cụ thể trong file cấu hình của bạn đang tạo ra lỗi cú pháp, bạn có thể bỏ qua các bước khắc phục sự cố kiểm tra cấu hình journalctl
và apachectl configtest
. Thay vào đó, bạn có thể truy cập trực tiếp vào file để kiểm tra và chỉnh sửa dòng sai sót để giải quyết lỗi.
Nếu kết quả của bạn không cung cấp thông tin cụ thể về vị trí lỗi trong file cấu hình của Apache, bạn cần phải kiểm tra kết quả journalctl
từ các bản ghi systemd
. Phần sau giải thích cách sử dụng journalctl
để khắc phục lỗi AH00526.
Khắc phục sự cố với log journalctl
Nếu kết quả systemctl
của bạn không bao gồm thông tin cụ thể về lỗi cú pháp AH00526, bạn có thể tiếp tục sử dụng lệnh journalctl
để kiểm tra log systemd
cho Apache.
Trên Ubuntu và các hệ thống có nguồn root từ Debian, hãy chạy lệnh sau:
- sudo journalctl -u apache2.service --since today --no-pager
Trên các hệ thống có nguồn root từ CentOS, Fedora và RedHat, hãy sử dụng lệnh này để kiểm tra log :
- sudo journalctl -u httpd.service --since today --no-pager
Cờ --since today
sẽ giới hạn kết quả của lệnh chỉ để ghi các mục nhập bắt đầu từ 00:00:00 của ngày hiện tại. Sử dụng tùy chọn này sẽ giúp hạn chế dung lượng các mục nhập log mà bạn cần kiểm tra khi kiểm tra lỗi.
Nếu bạn gặp lỗi AH00526 trong cấu hình Apache của bạn , hãy xem kết quả lệnh journalctl
cho các dòng như sau:
Output-- Logs begin at Tue 2019-11-05 21:26:44 UTC, end at Tue 2020-06-09 15:13:01 UTC. -- . . . Jun 09 15:12:28 f17f01056c5b apachectl[3157]: AH00526: Syntax error on line 3 of /etc/apache2/sites-enabled/000-default.conf: Jun 09 15:12:28 f17f01056c5b apachectl[3157]: Invalid command 'SSLCertificateFile', perhaps misspelled or defined by a module not included in the server configuration . . .
Dòng đầu tiên của kết quả là lỗi AH00526. Vì lỗi này là lỗi chung liên quan đến cài đặt không hợp lệ hoặc lỗi đánh máy trong file cấu hình, dòng tiếp theo giải thích nguyên nhân gây ra lỗi. Trong trường hợp này, nó là một chỉ thị được gọi là SSLCertificateFile
, sẽ chỉ có hiệu lực nếu module ssl
được bật.
Nếu bạn gặp phải lỗi AH00526 có liên quan đến chỉ thị SSLCertificateFile
không hợp lệ, bạn có thể giải quyết nó bằng cách bật module ssl
và sau đó khởi động lại Apache để làm cho lỗi biến mất.
Đối với hệ thống Ubuntu và Debian, hãy chạy phần sau để bật module :
- sudo a2enmod ssl
- sudo systemctl restart apache2.service
Trên hệ thống CentOS và Fedora, hãy đảm bảo gói mod_ssl
được cài đặt, sau đó tải module bằng cách thêm nó vào folder /etc/httpd/conf.modules.d
của Apache trong một file như sau:
- sudo yum install mod_ssl
- echo "LoadModule ssl_module modules/mod_ssl.so" | sudo tee > /etc/httpd/conf.modules.d/00-ssl.conf
- sudo systemctl restart httpd.service
Sau khi module được Apache tham chiếu và bạn khởi động lại nó bằng lệnh phù hợp với bản phân phối Linux của bạn , server sẽ khởi động nếu không có thêm lỗi nào trong cấu hình.
Tuy nhiên, nếu có nhiều lỗi hơn, systemctl status
Apache và systemctl status
sẽ tiếp tục báo cáo chúng và cố gắng giải thích lý do tại sao server không thể khởi động. systemctl
sẽ xuất ra các thông báo lỗi như thế này trên hệ thống Ubuntu và Debian:
Job for apache2.service failed because the control process exited with error code. See "systemctl status apache2.service" and "journalctl -xe" for details
Và trên các hệ thống dẫn xuất CentOS, Fedora và RedHat, thông báo khởi động không thành công sẽ tương tự như sau:
Job for httpd.service failed because the control process exited with error code. See "systemctl status httpd.service" and "journalctl -xe" for details.
Khi Apache vẫn không khởi động do lỗi, sử dụng lệnh apachectl configtest
có thể là cách hiệu quả nhất để chẩn đoán sự cố. Phần tiếp theo sẽ giải thích cách sử dụng trình để giải quyết lỗi AH00526 lại liên quan đến chỉ thị SSLCertificateFile
không hợp lệ.
Khắc phục sự cố với apachectl
Để khắc phục lỗi AH00526 bằng tiện ích apachectl
của Apache, bạn có thể kiểm tra cấu hình Apache của bạn bằng lệnh con configtest
. Công cụ này sẽ phân tích cú pháp các file Apache của bạn để xác định xem file đó có hợp lệ hay không và nếu không, xác định cài đặt không chính xác trong cấu hình Apache.
Lệnh apachectl configtest
hữu ích để bắt lỗi cú pháp trước khi reload apache với một cấu hình mới. Kiểm tra này có thể giúp bạn tránh ngừng dịch vụ trong trường hợp cấu hình sai cài đặt trong file Apache của bạn.
Lệnh kiểm tra cấu hình ví dụ sau sẽ trả về thông AH00526 Syntax error
và giải thích rằng vấn đề có thể xảy ra là Apache đang tham chiếu đến SSLCertificateFile
trống:
- sudo apachectl configtest
OutputAH00526: Syntax error on line 3 of /etc/apache2/sites-enabled/000-default.conf: SSLCertificateFile: file '/etc/ssl/certs/example.com.pem' does not exist or is empty
Trong kết quả ví dụ này, file /etc/ssl/certs/example.com.pem
không tồn tại như ghi chú thông báo lỗi. Thêm certificate SSL / TLS vào file hoặc xóa lệnh sẽ giải quyết được sự cố.
Một lệnh gọi cấu hình apachectl configtest
thành công sẽ dẫn đến kết quả như thế này:
OutputSyntax OK
Kết luận
Trong hướng dẫn này, bạn đã học cách khắc phục lỗi cú pháp Apache AH00526. Bước đầu tiên khi điều tra bất kỳ lỗi Apache nào là kiểm tra trạng thái của server với trạng thái systemctl status apache2
hoặc systemctl status httpd
tùy thuộc vào bản phân phối Linux của bạn. Từ đó, bạn có thể xác định xem Apache có đang chạy chính xác hay không hay không thể khởi động do lỗi.
Sau khi bạn đã xác định trạng thái của Apache, bạn có thể chẩn đoán nó thêm bằng cách sử dụng journalctl
để kiểm tra log systemd
cho quá trình. Bạn cũng có thể sử dụng lệnh apachectl configtest
để kiểm tra các file cấu hình để tìm lỗi trực tiếp.
Các tin liên quan
Lỗi mạng Apache AH00072: make_sock: không thể liên kết với địa chỉ2020-07-30
Cách khắc phục các lỗi Apache thường gặp
2020-07-30
Cách tạo chứng chỉ SSL tự ký cho Apache trong Ubuntu 20.04
2020-07-06
Cách tạo chứng chỉ SSL tự ký cho Apache trên CentOS 8
2020-06-30
Cách bảo mật Apache bằng Let's Encrypt trên CentOS 8
2020-06-29
Cách cấu hình Apache HTTP với MPM Event và PHP-FPM trên Ubuntu 18.04
2020-05-13
Cách cài đặt web server Apache trên CentOS 8 [Quickstart]
2020-05-08
Cách bảo mật Apache bằng Let's Encrypt trên Ubuntu 20.04
2020-04-29
Cách cài đặt web server Apache trên Ubuntu 20.04 [Quickstart]
2020-04-28
Cách cài đặt web server Apache trên Ubuntu 20.04
2020-04-27