Nhắc đến một web server được sử dụng rộng rãi nhất trên thế giới thì không thể bỏ qua cái tên Apache.
Qua bài viết này, BKHOST sẽ hướng dẫn bạn cách cài đặt Apache web server trên CentOS 7. Ok, hãy cùng bắt đầu ngay thôi nào!
Điều kiện cần thiết để có thể cài đặt Apache trên CentOS 7
Để cài đặt thành công được Apache trên CentOS 7, bạn cần chuẩn bị:
- Non-root user account có quyền sudo và có thể hoạt động trên cloud server của bạn.
- Tường lửa (firewall) đã được cấu hình cơ bản.
Bước 1: Cài đặt Apache bằng yum package manager
Trong kho phần mềm của CentOS 7, Apache là web server có sẵn, vì thế bạn hoàn toàn có thể cài đặt nó bằng yum package manager.
Trước tiên, bạn cần cập nhật httpd package index cục bộ để nhận những thay đổi mới nhất.
{{EJS0}}
Sau đó, bạn cần cài đặt các gói:
{{EJS1}}
Khi đã xác nhận, yum package manager sẽ cài đặt Apache và các phần dependencies bắt buộc khác.
Tiếp đến, bạn cần cài đặt tường lửa (Firewall) trên server và mở cổng 80 để phục vụ những yêu cầu qua HTTP. Lệnh bật dịch vụ được thực hiện như sau:
{{EJS2}}
Nếu như muốn cấu hình Apache để sử dụng website ở giao thức HTTPs, bạn cần phải mở cổng 443 bằng cách bật dịch vụ theo lệnh sau:
{{EJS3}}
Sau khi cài đặt, bạn cần tải lại firewall để các quy tắc có hiệu lực và có thể sử dụng:
{{EJS4}}
Cuối cùng của bước 1, bạn cần khởi động lại web server và chuyển sang bước 2: Kiểm tra web server.
Bước 2: Kiểm tra Web Server
Apache sẽ không tự khởi động trên CentOS mà nó cần được khởi động thủ công. Bạn cần thao tác theo lệnh sau đây để nó có thể hoạt động trên CentOS 7.
{{EJS5}}
Để biết chính xác dịch vụ có hoạt động hay không, cần có thêm bước xác minh bằng lệnh sau:
{{EJS6}}
Khi thực hiện lệnh, trạng thái hoạt động của dịch vụ đang chạy sẽ được thể hiện như sau:
{{EJS7}}
Từ output này, bạn có thể thấy rằng việc cài đặt đã có bước tiến triển tốt. Tuy nhiên để kiểm tra một cách chính xác, bạn cần yêu cầu một trang nào đó từ Apache.
Bạn cũng có thể truy cập trang đích của web server Apache này để xác nhận phần mềm có đang hoạt động hay không thông qua địa chỉ IP của bạn. Trong trường hợp không rõ địa chỉ IP của bạn là gì, hãy sử dụng các lệnh như sau:
Vào command prompt của server và nhập lệnh sau:
{{EJS8}}
Lệnh hostname này cho phép hiển thị tất cả các địa chỉ mạng của host và được phân tách nhau bằng dấu cách. Bạn hãy thử chúng trong trình duyệt để kiểm tra việc hoạt động của chúng.
Sau khi có địa chỉ IP máy chủ, bạn cần nhập nó vào thanh địa chỉ của trình duyệt web:
{{EJS9}}
Và trình duyệt sẽ hiển thị giao diện mặc định trang web CentOS 7 Apache:
Trong đó có tất cả thông tin cơ bản về các file và vị trí tệp. Lúc này, khi các dịch vụ đã hoạt động, bạn có thể sử dụng các lệnh systemctl để quản lý.
Bước 3: Thiết lập quy trình hoạt động cho Apache
Sau khi cài đặt, bạn cần thiết lập quy trình hoạt động và chạy cho Apache trên CentOS 7. Bạn có thể sử dụng một số lệnh cơ bản sau đây:
Muốn dừng máy chủ web, hãy nhập lệnh sau:
{{EJS10}}
Khởi động lại máy chủ bằng lệnh:
{{EJS11}}
Để dừng và bắt đầu lại dịch vụ trên server, hãy nhập:
{{EJS12}}
Nếu bạn chỉ cần thay đổi cấu hình, Apache sẽ có thể tự tải lại và không làm mất kết nối, lệnh đó được dùng như sau:
{{EJS13}}
Apache được cấu hình mặc định có thể tự khởi động khi máy chủ được khởi động. Nếu như không muốn điều này, bạn có thể tắt chức năng đó bằng cách dùng lệnh:
{{EJS14}}
Trong trường hợp đã tắt chức năng tự khởi động nhưng muốn bật lại, hãy dùng lệnh:
{{EJS15}}
Cấu hình mặc định của Apache trên CentOS 7 sẽ cho phép nó lưu trữ cho một trang web duy nhất. Nếu như bạn muốn lưu trữ nhiều hơn 1 domain, bạn cần cấu hình lại virtual host trên web server. Đọc tiếp ở bước 4.
Bước 4: Cấu hình virtual server (Vhost)
Nếu như muốn lưu trữ nhiều tên miền, bạn có thể sử dụng virtual host trên Apache. Bước này sẽ giúp bạn có thể thiết lập một tên miền riêng cho mình. Các bước thực hiện như sau:
Ở Apache CentOS 7 có một block server được dùng để cấp tài liệu từ folder /var/www/html. Dù việc sử dụng block server này sẽ tốt cho website nhưng bạn sẽ khó sử dụng nếu như host nhiều trang web. Do vậy thay vì sửa đổi /var/www/html, bạn có thể tạo folder mới bên trong /var/www cho website riêng của bạn. Phần /var/www/html được giữ nguyên làm folder mặc định nếu request của client không phù hợp với bất kỳ trang web nào.
Các phần hướng dẫn dưới đây, chúng tôi sẽ sử dụng tên miền example.com để làm ví dụ.
Cách tạo folder virtual server
Để tạo folder cho tên miền example.com, hãy sử dụng lệnh:
{{EJS16}}
Tiếp theo, tạo một folder bổ sung để lưu trữ file log cho website:
{{EJS17}}
Chỉ định quyền sở hữu folder html với biến $USER:
{{EJS18}}
Để đảm bảo trang web có quyền mặc định, hãy sử dụng lệnh:
{{EJS19}}
Bước kế tiếp là tạo một trang index.html mẫu bằng lệnh:
{{EJS20}}
Bạn hãy nhấn i để chuyển sang chế độ INSERT và thêm HTML mẫu vào file /var/www/example.com/html/index.html bằng cách như sau:
{{EJS21}}
Cuối cùng để lưu lại file và đóng, bạn có thể sử dụng ba bước: nhấn ESC, nhập :wq và nhấn ENTER.
Trước khi tạo virtual server, bạn cần tạo một directory sites-available để lưu trữ chúng. Bên cạnh đó, bạn cũng cần tạo thêm một directory sites-enabled (là nơi chứa các symbolic link cho các virtual host là bạn muốn publish). Lệnh để tạo cả 2 directory nói trên được thực hiện như sau:
{{EJS22}}
Sau khi đã tạo directory, Apache sẽ tìm kiếm các virtual server trong đó. Bạn cần chỉnh sửa lại cấu hình của Apache sau đó dùng thêm một dòng lệnh sau đây:
{{EJS23}}
Tiếp theo, bạn hãy thêm vào cuối file bằng dòng lệnh sau đây:
{{EJS24}}
Cuối cùng, lưu lại và đóng file để hoàn tất công việc tạo folder virtual host.
Cách tạo file virtual host
Lệnh tạo file mới trong directory sites-available như sau:
{{EJS25}}
Hãy nhớ thay đổi example.com thành tên miền của bạn.
Tiếp theo, mở file: /etc/httpd/sites-available/example.com.conf
Copy và paste đoạn mã sau vào:
{{EJS26}}
Lưu và đóng file.
Việc thực hiện bước này sẽ giúp Apache tìm được nơi lưu trữ các file của website mà được publish. Bên cạnh đó, Apache cũng sẽ biết được nơi lưu trữ lỗi và yêu cầu log của web.
Đến bước này, các file virtual host đã được tạo thành công. Tiếp theo hãy kích hoạt chúng để Apache biết để phục vụ khách truy cập. Trước tiên, bạn cần tạo một liên kết cho virtual host trong directory sites-enabled:
Đến bước này, các file virtual host đã được tạo thành công. Tiếp theo hãy kích hoạt chúng để Apache biết để phục vụ khách truy cập. Do đó, bạn cần tạo một liên kết cho virtual host trong directory sites-enabled:
{{EJS27}}
Bây giờ, việc cấu hình cho virtual host đã hoàn thành, chúng đã sẵn sàng cung cấp nội dung. Việc cần thiết tiếp theo là bạn hãy đảm bảo rằng SELinux có chính sách phù hợp với virtual host và điều chỉnh quyền của nó để có thể cài đặt Apache trên CentOS 7.
Bước 5: Quản lý quyền SELinux
Vì bạn đã thiết lập một custom log directory nên có thể sẽ có lỗi xảy ra khi khởi động Apache. Bạn cần phải cập nhật các chính sách của SELinux để Apache ghi lại và có thể có khả năng bảo mật tốt hơn. Vì thế bạn không nên tắt hết các module kernel.
Để cài đặt các chính sách của SELinus, bạn có thể sử dụng các cách khác nhau tùy vào mức độ bảo mật. Có hai cách thông dụng nhất thường được sử dụng là điều chỉnh chính sách của Apache trên phạm vi toàn bộ và chỉ trên directory. Tuy nhiên việc điều chỉnh trên directory cụ thể được đánh giá an toàn hơn nên đây là phương pháp được các chuyên gia khuyên dùng.
Quản lý các chính sách Apache chung
Các chính sách Apache trên phạm vi rộng sẽ yêu cầu SELinux xử lý bằng boolean http unified. Tuy cách này khá tiện dụng nhưng nhược điểm của nó là không đem đến cho bạn mức độ kiểm soát chặt như tiếp cận vào các file hay directory.
Để cài đặt chính sách Apache chung, bạn có thể chạy lệnh sau đây:
{{EJS28}}
Lệnh này có thể thay đổi giá trị boolean của module SELinux. Flag -P sẽ nhận các cập nhật từ boot-time, nhờ đó sau mỗi lần khởi động lại thì các thay đổi vẫn được giữ nguyên. Http unified sẽ là boolean yêu cầu SELinux xử lý các quy trình cùng một loại, do đó hãy bật với giá trị bằng 1.
Quản lý chính sách Apache trên directory
Để cung cấp nhiều quyền kiểm soát hơn, các quyền SELinux cho directory /var/www/example.com/log sẽ được đặt riêng.
Tuy nhiên điều này cũng yêu cầu việc bảo trì nhiều hơn. Để thực hiện, bạn cần cài đặt context thủ công cho từng log directory mới trong cấu hình của virtual host. Các bước để thực hiện như sau:
Đầu tiên cần kiểm tra loại context mà SELinux đã cung cấp:
{{EJS29}}
Lệnh trên cho phép liệt kê và hiển thị context của directory. Bạn sẽ nhận được kết quả:
{{EJS30}}
Như trong output đã nhận trên, context là httpd_sys_content_t, điều này thể hiện rằng Apache sẽ chỉ có thể đọc được dữ liệu có trong directory này. Tiếp đến, bạn có thể thay đổi loại directory từ directory /var/www/example.com/log sang httpd_log_t. Điều này giúp Apache tạo và kết nối các log lại với nhau:
{{EJS31}}
Sau đó, để các thay đổi vẫn giữ nguyên sau mỗi lần khởi động, hãy sử dụng lệnh restorecon:
{{EJS32}}
Flag -R sẽ cập nhật các file hiện có thể sử dụng context mới. Flag -v sẽ in ra các thay đổi về context mà lệnh đã thực hiện, sau đó trả về kết quả như sau:
{{EJS33}}
Các thay đổi có thể xem bằng cách liệt kê lại theo lệnh:
{{EJS34}}
Các loại context được cập nhật sẽ phản ánh lại thông qua output:
{{EJS35}}
Cuối cùng, bạn cần kiểm tra lại virtual host để đảm bảo việc cài đặt Apache được thành công.
Bước 6: Kiểm tra Virtual Host
Sau khi cập nhật xong SELinux context, Apache đã có thể ghi dữ liệu vào directory/var/www/example.com/log. Hãy khởi động lại web server:
{{EJS36}}
Sau đó, hãy liệt kê các context để xác nhận việc tạo file của Apache.
{{EJS37}}
Lúc này Apache có thể tạo file error.log và request.log đã được chỉ định trong cấu hình virtual host.
{{EJS38}}
Đến lúc này, virtual host và các quyền SELinux đều đã được cập nhật. Bạn có thể truy cập vào tên miền riêng mình đã đặt và xem được kết quả như sau:
Đây là thông tin xác nhận server đã được tạo thành công, khí đó bạn có thể làm lại các bước 4 và 5 để tạo một virtual host mới cho miền bổ sung. Đây cũng là bước cuối cùng trong quy trình cài đặt Apache trên CentOS 7.
Tổng kết
Vậy là bạn đã biết cách cài đặt và cấu hình Apache cho CentOS 7.
Nếu bạn có bất kỳ thắc mắc nào, hãy để lại comment ở bên dưới, BKHOST sẽ trả lời bạn trong thời gian sớm nhất.
Bạn cũng có thể truy cập vào Blog của BKHOST để đọc thêm những bài viết chia sẻ kinh nghiệm quản trị hosting, vps, server, website, domain, email… Chúc bạn thành công.