Cách cài đặt web server Apache trên CentOS 8 [Quickstart]
Server Apache HTTP là web server được sử dụng rộng rãi nhất trên thế giới. Nó cung cấp nhiều tính năng mạnh mẽ bao gồm các module có thể tải động, hỗ trợ phương tiện truyền thông mạnh mẽ và tích hợp rộng rãi với các phần mềm phổ biến khác.Trong hướng dẫn này, bạn sẽ cài đặt web server Apache với server ảo trên server CentOS 8 của bạn . Để có version chi tiết hơn của hướng dẫn này, hãy tham khảo Cách cài đặt Server Web Apache trên CentOS 8 .
Yêu cầu
Bạn cần những thứ sau để hoàn thành hướng dẫn này:
- User không phải root có quyền sudo được cấu hình trên server của bạn, hãy cài đặt theo hướng dẫn cài đặt server ban đầu cho CentOS 8 .
- Đảm bảo rằng firewall cơ bản được cấu hình theo Bước 4 của Cài đặt Server Ban đầu với CentOS 8 ( được khuyến khích ) trong hướng dẫn ở trên.
Bước 1 - Cài đặt Apache
 Apache có sẵn trong repository  mặc định của CentOS,  nghĩa là  bạn có thể cài đặt nó bằng trình quản lý gói dnf .
Khi user sudo không phải root được cấu hình trong yêu cầu , hãy cài đặt gói Apache:
- sudo dnf install httpd 
Sau khi xác nhận cài đặt, dnf sẽ cài đặt Apache và tất cả các  phụ thuộc .
Bước 2 - Điều chỉnh firewall
 Bằng cách hoàn thành Bước 4 của Hướng dẫn  Cài đặt   Server  Ban đầu với CentOS 8 được đề cập trong phần  yêu cầu , bạn đã cài đặt firewalld trên  server   của bạn  để phục vụ  các truy cập qua  HTTP.
 Nếu bạn cũng  cấu hình  Apache để  cho truy cập qua  HTTPS, bạn  cũng cần  mở cổng 443 bằng cách bật dịch vụ https :
- sudo firewall-cmd --permanent --add-service=https 
Tiếp theo, cập nhật firewall để các luật mới này có hiệu lực:
- sudo firewall-cmd --reload 
Sau khi firewall reload , bạn đã sẵn sàng khởi động dịch vụ và kiểm tra web server .
Bước 3 - Kiểm tra Server Web của bạn
Apache không tự động khởi động trên CentOS sau khi quá trình cài đặt hoàn tất, vì vậy bạn cần khởi động Apache theo cách thủ công:
- sudo systemctl start httpd 
Xác minh dịch vụ đang chạy bằng lệnh sau:
- sudo systemctl status httpd 
Bạn sẽ nhận được trạng thái active khi dịch vụ đang chạy:
Output● httpd.service - The Apache HTTP Server    Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disa>    Active: active (running) since Thu 2020-04-23 22:25:33 UTC; 11s ago      Docs: man:httpd.service(8)  Main PID: 14219 (httpd)    Status: "Running, listening on: port 80"     Tasks: 213 (limit: 5059)    Memory: 24.9M    CGroup: /system.slice/httpd.service            ├─14219 /usr/sbin/httpd -DFOREGROUND            ├─14220 /usr/sbin/httpd -DFOREGROUND            ├─14221 /usr/sbin/httpd -DFOREGROUND            ├─14222 /usr/sbin/httpd -DFOREGROUND            └─14223 /usr/sbin/httpd -DFOREGROUND  ... Truy cập trang đích Apache mặc định để xác nhận phần mềm đang chạy đúng thông qua địa chỉ IP của bạn:
http://your_server_ip Bạn sẽ thấy trang web CentOS 8 Apache mặc định:
Trang này cho biết Apache đang hoạt động chính xác. Nó cũng bao gồm một số thông tin cơ bản về các file Apache quan trọng và vị trí folder .
Bước 4 - Cài đặt server ảo (Khuyến nghị)
 Khi sử dụng  web server  Apache, bạn có thể sử dụng các  server  ảo (nếu bạn quen thuộc hơn với Nginx, chúng tương tự như các khối  server ) để đóng gói các chi tiết cấu hình và lưu trữ nhiều domain  từ một  server  duy nhất. Trong bước này, bạn sẽ  cài đặt  một domain  có tên là example.com , nhưng bạn nên thay thế domain  này bằng domain   của bạn . Nếu bạn đang  cài đặt  domain  với DigitalOcean, vui lòng tham khảo Tài liệu về mạng của  ta .
 Tạo folder  html cho <p> example.com <^> như sau, sử dụng cờ -p để tạo bất kỳ folder  mẹ nào cần thiết:
- sudo mkdir -p /var/www/example.com/html 
Tạo một folder bổ sung để lưu trữ các file log cho trang web:
- sudo mkdir -p /var/www/example.com/log 
Tiếp theo, chỉ định quyền sở hữu folder  html với biến môi trường $USER :
- sudo chown -R $USER:$USER /var/www/example.com/html 
Đảm bảo rằng root web của bạn có các quyền mặc định được đặt:
- sudo chmod -R 755 /var/www 
Tiếp theo, tạo một trang index.html mẫu bằng vi hoặc trình soạn thảo yêu thích của bạn:
- sudo vi /var/www/example.com/html/index.html 
Nhấn i để chuyển sang chế độ INSERT và thêm HTML mẫu sau vào file :
<html>   <head>     <title>Welcome to Example.com!</title>   </head>   <body>     <h1>Success! The example.com virtual host is working!</h1>   </body> </html>  Lưu file   bằng cách nhấn ESC , nhập :wq và nhấn ENTER .
Với folder trang web và file index mẫu của bạn tại chỗ, bạn gần như đã sẵn sàng để tạo file server ảo. Các file server ảo chỉ cấu hình của các trang web riêng biệt của bạn và cho web server Apache biết cách phản hồi các yêu cầu domain khác nhau.
 Trước khi tạo  server  ảo, bạn  cần  tạo một folder  sites-available để lưu trữ chúng.  Bạn cũng cần tạo  folder  sites-enabled báo cho Apache rằng  server  ảo đã sẵn sàng phục vụ khách truy cập. Thư mục sites-enabled sẽ chứa các  softlink  đến các  server  ảo mà  ta  muốn xuất bản. Tạo cả hai folder  bằng lệnh sau:
- sudo mkdir /etc/httpd/sites-available /etc/httpd/sites-enabled 
Tiếp theo, bạn sẽ yêu cầu Apache tìm kiếm các  server  ảo trong folder  sites-enabled . Để thực hiện điều này, hãy chỉnh sửa file  cấu hình chính của Apache bằng vi hoặc editor  yêu thích của bạn và thêm một dòng khai báo folder  tùy chọn cho các file  cấu hình bổ sung:
- sudo vi /etc/httpd/conf/httpd.conf 
Nhấn viết hoa G để  chuyển  về cuối file . Sau đó nhấn i để chuyển sang chế độ INSERT và thêm dòng sau vào cuối file :
... # Supplemental configuration # # Load config files in the "/etc/httpd/conf.d" directory, if any. IncludeOptional conf.d/*.conf IncludeOptional sites-enabled/*.conf Lưu file khi bạn hoàn tất việc thêm dòng đó. Đến đây bạn đã có các folder server ảo của bạn , bạn sẽ tạo file server ảo của bạn .
 Bắt đầu bằng cách tạo một file  mới trong folder  sites-available trên sites-available :
- sudo vi /etc/httpd/sites-available/example.com.conf 
Thêm  đoạn cấu hình  sau và thay đổi domain  example.com domain  của bạn:
<VirtualHost *:80>     ServerName www.example.com     ServerAlias example.com     DocumentRoot /var/www/example.com/html     ErrorLog /var/www/example.com/log/error.log     CustomLog /var/www/example.com/log/requests.log combined </VirtualHost> Điều này sẽ cho Apache biết nơi để tìm trực tiếp root chứa các tài liệu web có thể truy cập . Nó cũng cho Apache biết nơi lưu trữ lỗi và yêu cầu log cho trang web cụ thể này.
Lưu file khi bạn hoàn tất.
  Đến đây bạn  đã tạo các file   server  ảo, bạn sẽ kích hoạt chúng để Apache biết để phục vụ chúng cho khách truy cập. Để thực hiện việc này, hãy tạo một  softlink  cho từng  server  ảo trong folder  sites-enabled :
- sudo ln -s /etc/httpd/sites-available/example.com.conf /etc/httpd/sites-enabled/example.com.conf 
Server ảo của bạn hiện đã được cấu hình và sẵn sàng cung cấp nội dung. Trước khi khởi động lại dịch vụ Apache, hãy đảm bảo SELinux có các policy phù hợp cho các server ảo của bạn.
Bước 5 - Điều chỉnh quyền SELinux cho Server ảo (Được khuyến nghị)
SELinux là một module bảo mật nhân Linux mang lại khả năng bảo mật cao hơn cho các hệ thống Linux. CentOS 8 được trang bị SELinux được cấu hình để hoạt động với cấu hình Apache mặc định. Vì bạn đã thay đổi cấu hình mặc định bằng cách cài đặt folder log tùy chỉnh trong file cấu hình server ảo, bạn sẽ gặp lỗi nếu cố khởi động dịch vụ Apache. Để giải quyết vấn đề này, bạn cần cập nhật các policy của SELinux để cho phép Apache ghi vào các file cần thiết.
Có nhiều cách khác nhau để đặt policy dựa trên nhu cầu của môi trường vì SELinux cho phép bạn tùy chỉnh mức độ bảo mật của bạn . Bước này sẽ bao gồm hai phương pháp điều chỉnh các policy của Apache: phổ biến và trên một folder cụ thể. Điều chỉnh các policy trên folder an toàn hơn và do đó là cách tiếp cận được khuyến khích .
Điều chỉnh policy Apache phổ biến
 Việc đặt policy  Apache  trên phạm vi global  sẽ yêu cầu SELinux xử lý tất cả các  tiến trình Apache  giống nhau bằng cách sử dụng httpd_unified Boolean. Mặc dù cách tiếp cận này thuận tiện hơn, nhưng nó sẽ không cung cấp cho bạn mức độ kiểm soát giống như cách tiếp cận tập trung vào policy  file  hoặc folder .
Chạy lệnh sau để đặt một policy Apache chung:
- sudo setsebool -P httpd_unified 1 
Lệnh setsebool thay đổi các giá trị SELinux Boolean. Cờ -P sẽ cập nhật giá trị thời gian khởi động, làm cho thay đổi này vẫn tồn tại qua các lần khởi động lại. httpd_unified là Boolean sẽ yêu cầu SELinux xử lý tất cả các  tiến trình Apache  là cùng một loại, vì vậy bạn đã bật nó với giá trị 1 .
Điều chỉnh policy Apache trên một folder
 Việc đặt riêng các quyền SELinux cho folder  /var/www/ example.com /log sẽ giúp bạn kiểm soát nhiều hơn các policy  Apache  của bạn , nhưng cũng có thể yêu cầu bảo trì nhiều hơn. Vì tùy chọn này không phải là policy   cài đặt   trên phạm vi global , bạn  cần  phải đặt loại ngữ cảnh theo cách thủ công cho bất kỳ folder  log  mới nào được chỉ định trong cấu hình  server  ảo của bạn.
 Đầu tiên, hãy kiểm tra kiểu ngữ cảnh mà SELinux đã cung cấp cho folder  /var/www/ example.com /log :
- sudo ls -dlZ /var/www/example.com/log/ 
Lệnh này liệt kê và đưa ra ngữ cảnh SELinux của folder . Bạn sẽ nhận được kết quả tương tự như sau:
Outputdrwxr-xr-x. 2 root root unconfined_u:object_r:httpd_sys_content_t:s0 6 Apr 23 23:51 /var/www/example.com/log/ Bối cảnh hiện tại là httpd_sys_content_t , cho SELinux biết rằng  tiến trình Apache  chỉ có thể đọc các file  được tạo trong folder  này. Trong hướng dẫn này, bạn sẽ thay đổi kiểu ngữ cảnh của folder  /var/www/ example.com /log thành httpd_log_t . Loại này sẽ cho phép Apache tạo và nối vào các file  log  ứng dụng web:
- sudo semanage fcontext -a -t httpd_log_t "/var/www/example.com/log(/.*)?" 
Tiếp theo, sử dụng lệnh restorecon để áp dụng những thay đổi này và để chúng tồn tại qua các lần khởi động lại:
- sudo restorecon -R -v /var/www/example.com/log 
Cờ -R chạy lệnh này một cách đệ quy,  nghĩa là  nó sẽ cập nhật mọi file  hiện có để sử dụng ngữ cảnh mới. Cờ -v sẽ in ra các thay đổi ngữ cảnh mà lệnh được thực hiện. Bạn sẽ nhận được kết quả sau xác nhận các thay đổi:
OutputRelabeled /var/www/example.com/log from unconfined_u:object_r:httpd_sys_content_t:s0 to unconfined_u:object_r:httpd_log_t:s0 Bạn có thể liệt kê các bối cảnh để xem các thay đổi:
- sudo ls -dlZ /var/www/example.com/log/ 
Đầu ra phản ánh loại ngữ cảnh được cập nhật:
Outputdrwxr-xr-x. 2 root root unconfined_u:object_r:httpd_log_t:s0 6 Apr 23 23:51 /var/www/example.com/log/ Bây giờ, folder  /var/www/ example.com /log đang sử dụng kiểu httpd_log_t , bạn đã sẵn sàng để kiểm tra cấu hình  server  ảo  của bạn .
Bước 6 - Kiểm tra Server ảo (Được khuyến nghị)
 Khi ngữ cảnh SELinux đã được cập nhật bằng một trong hai phương pháp, Apache sẽ có thể ghi vào folder  /var/www/ example.com /log .  Đến đây bạn  có thể khởi động lại thành công dịch vụ Apache:
- sudo systemctl restart httpd 
Liệt kê nội dung của folder  /var/www/ example.com /log để xem Apache có tạo các file  log  hay không:
- ls -lZ /var/www/example.com/log 
Bạn sẽ nhận được  xác nhận  Apache đã có thể tạo ra các error.log và requests.log file quy định trong cấu hình  server  ảo:
Output-rw-r--r--. 1 root root system_u:object_r:httpd_log_t:s0 0 Apr 24 00:06 error.log -rw-r--r--. 1 root root system_u:object_r:httpd_log_t:s0 0 Apr 24 00:06 requests.log   Đến đây bạn  đã  cài đặt   server  ảo  của bạn  và cập nhật các quyền SELinux, Apache bây giờ sẽ phân phát domain  của bạn. Bạn  có thể kiểm tra  bằng cách  chuyển  đến http:// example.com , nơi bạn sẽ thấy  thông tin như  sau: 
Điều này xác nhận server ảo của bạn đã được cấu hình thành công và cung cấp nội dung. Lặp lại các bước 4 và 5 để tạo các server ảo mới với quyền SELinux cho các domain bổ sung.
Kết luận
Trong hướng dẫn này, bạn đã cài đặt và quản lý web server Apache. Đến đây bạn đã cài đặt web server của bạn , bạn có nhiều tùy chọn cho loại nội dung bạn có thể phân phát và các công nghệ bạn có thể sử dụng để tạo ra trải nghiệm phong phú hơn.
Nếu bạn muốn xây dựng một ứng dụng hoàn chỉnh hơn, bạn có thể xem bài viết này về cách cấu hình LAMP trên CentOS 8 .
Các tin liên quan
Cách bảo mật Apache bằng Let's Encrypt trên Ubuntu 20.042020-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
Cách cài đặt web server Apache trên CentOS 8
2020-04-24
Cách thiết lập server ảo Apache trên Ubuntu 18.04 [Quickstart]
2020-02-19
Các bước được đề xuất để ngăn chặn HTTP Apache trên FreeBSD 12.0
2020-02-12
Cách thiết lập server ảo Apache trên Ubuntu 18.04
2020-02-10
Cách thiết lập xác thực mật khẩu với Apache trên Ubuntu 18.04 [Quickstart]
2020-02-04
Cách thiết lập xác thực mật khẩu với Apache trên Ubuntu 18.04
2020-02-03
Cách cài đặt Apache Kafka trên Debian 10
2019-12-20
 

