Kiến thức cơ bản về Apache: Khắc phục sự cố cài đặt và cấu hình
Web server Apache là một web server open-souce phổ biến vì tính linh hoạt, mạnh mẽ và hỗ trợ rộng rãi. Trong hướng dẫn này, ta sẽ xem xét một số quy trình phổ biến để quản lý server Apache, bao gồm dừng, khởi động và bật dịch vụ, làm việc với các file và folder server ảo cũng như định vị các file và folder quan trọng trên server của bạn.Hướng dẫn này dành cho user làm việc với Apache trên Ubuntu. User làm việc trên CentOS và các bản phân phối dựa trên RHEL khác có thể xem phần một trong hướng dẫn này để biết thông tin về cách cài đặt Apache trên CentOS.
Cách sử dụng Hướng dẫn này:
- Mỗi phần được dùng độc lập với những phần khác, vì vậy hãy bỏ qua các phần có liên quan đến nhu cầu của bạn.
- Mỗi lệnh là độc lập, cho phép bạn thay thế các giá trị của riêng mình cho các giá trị có màu đỏ.
- Mỗi phần có các tài nguyên được liên kết, mà bạn có thể tham khảo để biết thêm thông tin về các chủ đề được đề cập.
Cài đặt Dịch vụ Apache
Để cài đặt dịch vụ Apache, hãy cập nhật index gói của bạn, sau đó cài đặt:
- sudo apt-get update
- sudo apt-get install apache2
Để biết thêm chi tiết về quá trình cài đặt, hãy làm theo hướng dẫn của ta về Cách cài đặt Server Web Apache trên Ubuntu 16.04 .
Bật và tắt đơn vị Apache
Dịch vụ Apache của ta được cấu hình để bắt đầu tự động khi khởi động. Tuy nhiên, nếu ta muốn sửa đổi hành vi này, ta có thể nhập như sau:
- sudo systemctl disable apache2.service
Để cho phép Apache khởi động lại khi khởi động:
- sudo systemctl enable apache2.service
Dừng, Bắt đầu và Reload Apache
Để dừng server Apache, hãy nhập lệnh sau:
- sudo systemctl stop apache2
Để khởi động server Apache, hãy nhập:
- sudo systemctl start apache2
Để dừng dịch vụ và bắt đầu lại, hãy nhập:
- sudo systemctl restart apache2
Nếu bạn đang thực hiện thay đổi cấu hình, bạn có thể reload Apache mà không làm mất kết nối . Nhập lệnh sau:
- sudo systemctl reload apache2
Để tìm hiểu thêm về systemd
init và lệnh systemctl
, hãy xem phần giới thiệu này về những điều cần thiết trong systemd .
Kiểm tra trạng thái server
Để kiểm tra trạng thái của server Apache của bạn, hãy nhập:
- sudo systemctl status apache2
Đầu ra từ lệnh này sẽ cho bạn biết Apache có đang chạy hay không và sẽ hiển thị cho bạn vài dòng cuối cùng trong file log .
Tạo folder root tài liệu cho trang web tĩnh
Khi sử dụng Apache để xây dựng trang web, các nhà phát triển thường sử dụng virtual hosts
đơn vị bao gồm các trang web hoặc domain riêng lẻ. Quá trình này bao gồm việc tạo một folder cho document root
, folder cấp cao nhất Apache kiểm tra khi cung cấp nội dung.
Tạo folder :
- sudo mkdir -p /var/www/example.com/public_html
Chỉ định quyền sở hữu folder cho user không phải root của bạn:
- sudo chown -R $USER:$USER /var/www/example.com/public_html
Cho phép truy cập đọc vào folder web chung:
- sudo find /var/www -type d -exec chmod 775 {} \;
Để biết thêm về các quyền, hãy xem phần giới thiệu của ta về các quyền của Linux . Lưu ý các quyền của bạn có thể thay đổi theo nhu cầu và trường hợp sử dụng của bạn.
Tạo folder root tài liệu cho module xử lý động
Nếu bạn đang làm việc với một module xử lý động như PHP, bạn sẽ tạo folder root tài liệu của bạn như sau:
- sudo mkdir -p /var/www/example.com/public_html
Chỉ định quyền sở hữu folder cho user không phải root của bạn và quyền sở hữu group cho group www-data
:
- sudo chown -R sammy:www-data /var/www/example.com/public_html
Sửa đổi cài đặt cấu hình
Khi làm việc với server ảo, cần phải sửa đổi cài đặt cấu hình để phản ánh thông tin cụ thể của domain , để Apache có thể phản hồi chính xác các yêu cầu domain .
Mở file cấu hình server ảo của bạn:
- sudo nano /etc/apache2/sites-available/example.com.conf
Sửa đổi những điều sau:
ServerAdmin admin@example.com ServerName example.com ServerAlias www.example.com DocumentRoot /var/www/example.com/public_html
Với các sửa đổi, file sẽ trông như thế này (miễn là nó chưa được sửa đổi trước đó):
<VirtualHost *:80> ServerAdmin admin@example.com ServerName example.com ServerAlias www.example.com DocumentRoot /var/www/example.com/public_html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
Khi khắc phục sự cố, hãy nhớ kiểm tra kỹ file này và các lệnh của nó.
Để biết thêm chi tiết về cách làm việc với server ảo, hãy xem cuộc thảo luận của ta về cách làm việc với server ảo Apache trên Ubuntu 16.04 .
Bật và tắt file cấu hình
Tệp server ảo
Để bật file cấu hình server ảo:
- sudo a2ensite example.com.conf
Để tắt file cấu hình (trong ví dụ cụ thể này, file cấu hình server ảo mặc định của Apache):
- sudo a2dissite 000-default.conf
Mô-đun
Để bật các module có trong /etc/apache2/mods-available
, hãy sử dụng lệnh sau:
- sudo a2enmod example_mod
Để tắt một module cụ thể:
- sudo a2dismod example_mod
Tệp cấu hình
Để bật các file cấu hình trong /etc/apache2/conf-available
các file không được liên kết với server ảo — hãy nhập:
- sudo a2enconf example-conf
Để tắt file cấu hình:
- sudo a2disconf example-conf
Kiểm tra cấu hình
Bất kỳ lúc nào bạn thực hiện thay đổi đối với file cấu hình trong Apache, hãy đảm bảo chạy lệnh sau để kiểm tra lỗi cú pháp:
- sudo apache2ctl configtest
Tệp và folder quan trọng
Khi bạn tiếp tục làm việc với Apache, bạn sẽ gặp phải các folder và file sau:
Nội dung
-
/var/www/html
: Thư mục này chứa nội dung web của trang web và là folder root mặc định của nó. Bạn có thể sửa đổi cài đặt cấu hình mặc định của Apache để trỏ đến các folder khác trongvar/www
.
Cấu hình server
/etc/apache2
: Thư mục cấu hình trong Apache, nơi lưu trữ tất cả các file cấu hình của nó./etc/apache2/apache2.conf
: Tệp cấu hình chính của Apache, nơi lưu trữ các cài đặt cấu hình chung của nó. Các file khác trong folder cấu hình được tải từ file này. Nó cũng lưu trữ các chỉ thịFollowSymLinks
, điều khiển việc bật và tắt cấu hình./etc/apache2/sites-available/
: Thư mục này chứa các file cấu hình server ảo, được kích hoạt thông qua các liên kết đến foldersites-enabled
. Việc sửa đổi file khối server xảy ra trong folder này và được kích hoạt thông qua lệnha2ensite
./etc/apache2/sites-enabled/
: Các file cấu hình server ảo đã kích hoạt được lưu trữ tại đây. Khi Apache khởi động hoặc reload , nó sẽ đọc các file cấu hình và liên kết trong folder này vì nó tuân theo cấu hình đầy đủ./etc/apache2/conf-available
và/etc/apache2/conf-enabled
: Trong mối quan hệ tương tự nhưsites-available
vàsites-enabled
, các folder này chứa các phân đoạn cấu hình không được đính kèm với các file cấu hình server ảo./etc/apache2/mods-available
và/etc/apache2/mods-enabled
: Chứa các module có sẵn và được bật, các folder này có hai thành phần: file kết thúc bằng.load
, chứa các phân đoạn tải các module cụ thể và file kết thúc bằng.conf
, lưu trữ cấu hình của các module này.
Nhật ký server
/var/log/apache2/access.log
: Tệp này chứa mọi yêu cầu đến web server trừ khi cài đặt cấu hình của Apache đã được sửa đổi./var/log/apache2/error.log
: Tệp này có lỗi. Để sửa đổi số lượng chi tiết trong log lỗi, hãy sửa đổi chỉ thịLogLevel
trong/etc/apache2/apache2.conf
.
Một cách khác để truy cập thông tin về đơn vị Apache là thông qua thành phần journald
, thành phần này thu thập thông tin log từ các ứng dụng và kernel . Để xem các mục nhập cho đơn vị Apache, hãy nhập:
- sudo journalctl -u apache2
Kết luận
Trong hướng dẫn này, ta đã đề cập đến một số quy trình phổ biến để quản lý server Apache, bao gồm dừng, khởi động và bật dịch vụ, làm việc với các file và folder server ảo cũng như định vị các file và folder quan trọng trên server của bạn. Để tìm hiểu thêm về cách làm việc với Apache, hãy xem các tài nguyên sau:
- Cách cài đặt LAMP Stack trên Ubuntu 16.04 .
- Cách di chuyển root Web Apache đến vị trí mới trên Ubuntu 16.04 .
- Cách bảo mật Apache bằng Let's Encrypt trên Ubuntu 16.04 .
- Cách sử dụng file .htaccess .
- Cách viết lại URL bằng mod_rewrite cho Apache trên Ubuntu 16.04 .
- Cách sử dụng Apache làm Reverse Proxy với mod_proxy trên Ubuntu 16.04 .
Các tin liên quan
Cách cài đặt web server Apache trên Ubuntu 16.042017-05-26
Cách thiết lập server ảo Apache trên Debian 8
2017-02-06
Cách sử dụng Apache làm reverse-proxy với mod_proxy trên CentOS 7
2017-02-02
Cách sử dụng Apache làm Reverse Proxy với mod_proxy trên Ubuntu 16.04
2017-02-01
Cách sử dụng Apache làm reverse-proxy với mod_proxy trên Debian 8
2017-02-01
Cách viết lại URL bằng mod_rewrite cho Apache trên Debian 8
2017-01-27
Cách viết lại URL bằng mod_rewrite cho Apache trên Ubuntu 16.04
2017-01-25
Cách mã hóa kết nối Tomcat 8 với Apache hoặc Nginx trên CentOS 7
2017-01-24
Cách tạo chứng chỉ SSL trên Apache cho CentOS 7
2017-01-04
Cách bảo mật Apache bằng Let's Encrypt trên Debian 8
2016-12-20