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
Cách khắc phục các lỗi Apache thường gặp2020-07-30
Lỗi mạng Apache AH00072: make_sock: không thể liên kết với địa chỉ
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
 

