#

Hướng dẫn cài đặt Apache Web Server trên CentOS 7

 14/03/2022 - 10:37 Trịnh Duy Thanh

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!

Có thể bạn quan tâm: Các câu lệnh cơ bản trong CentOS.

Điều kiện cần có để cài đặt Apache trên CentOS 7

cách cài dặ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.

sudo yum update httpd

Sau đó, bạn cần cài đặt các gói:

sudo yum install httpd

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: 

sudo firewall-cmd --permanent --add-service=http

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:

sudo firewall-cmd --permanent --add-service=https

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:

sudo firewall-cmd --reload

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.

sudo systemctl start httpd

Để 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:

sudo systemctl status httpd

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:

Output
Redirecting to /bin/systemctl status httpd.service
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2019-02-20 01:29:08 UTC; 5s ago
     Docs: man:httpd(8)
           man:apachectl(8)
 Main PID: 1290 (httpd)
   Status: "Processing requests..."
   CGroup: /system.slice/httpd.service
           ├─1290 /usr/sbin/httpd -DFOREGROUND
           ├─1291 /usr/sbin/httpd -DFOREGROUND
           ├─1292 /usr/sbin/httpd -DFOREGROUND
           ├─1293 /usr/sbin/httpd -DFOREGROUND
           ├─1294 /usr/sbin/httpd -DFOREGROUND
           └─1295 /usr/sbin/httpd -DFOREGROUND
...

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:

hostname -I

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.

Xem thêm: Cách kiểm tra IP website.

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:

http://your_server_ip

Và trình duyệt sẽ hiển thị giao diện mặc định trang web CentOS 7 Apache:

Cài đặt Apache trên CentOS 7 - bước 2

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:

sudo systemctl stop httpd

Khởi động lại máy chủ bằng lệnh:

sudo systemctl start httpd

Để dừng và bắt đầu lại dịch vụ trên server, hãy nhập:

sudo systemctl restart httpd

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:

sudo systemctl reload httpd

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:

sudo systemctl disable httpd

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:

sudo systemctl enable httpd

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:

sudo mkdir -p /var/www/example.com/html

Tiếp theo, tạo một folder bổ sung để lưu trữ file log cho website:

sudo mkdir -p /var/www/example.com/log

Chỉ định quyền sở hữu folder html với biến $USER:

sudo chown -R $USER:$USER /var/www/example.com/html

Để đảm bảo trang web có quyền mặc định, hãy sử dụng lệnh:

sudo chmod -R 755 /var/www

Bước kế tiếp là tạo một trang index.html mẫu bằng lệnh:

sudo vi /var/www/example.com/html/index.html

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:

<html>
  <head>
    <title>Welcome to Example.com!</title>
  </head>
  <body>
    <h1>Success! The example.com virtual host is working!</h1>
  </body>
</html>

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:

sudo mkdir /etc/httpd/sites-available /etc/httpd/sites-enabled

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:

sudo vi /etc/httpd/conf/httpd.conf

Tiếp theo, bạn hãy thêm vào cuối file bằng dòng lệnh sau đây: 

IncludeOptional sites-enabled/*.conf

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:

sudo vi /etc/httpd/sites-available/example.com.conf

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:

<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>

Lưuđó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:

sudo ln -s /etc/httpd/sites-available/example.com.conf /etc/httpd/sites-enabled/example.com.conf

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: 

sudo setsebool -P httpd_unified 1

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: 

sudo ls -dZ /var/www/example.com/log/

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ả:

Output
drwxr-xr-x. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/example.com/log/

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:

sudo semanage fcontext -a -t httpd_log_t "/var/www/example.com/log(/.*)?"

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:

sudo restorecon -R -v /var/www/example.com/log

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:

Output
restorecon reset /var/www/example.com/log context unconfined_u:object_r:httpd_sys_content_t:s0->unconfined_u:object_r:httpd_log_t:s0

Các thay đổi có thể xem bằng cách liệt kê lại theo lệnh:

sudo ls -dZ /var/www/example.com/log/

Các loại context được cập nhật sẽ phản ánh lại thông qua output:

Output
drwxr-xr-x. root root unconfined_u:object_r:httpd_log_t:s0 /var/www/example.com/log

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:

sudo systemctl restart httpd

Sau đó, hãy liệt kê các context để xác nhận việc tạo file của Apache.

ls -lZ /var/www/example.com/log

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.

Output
-rw-r--r--. 1 root root 0 Feb 26 22:54 error.log
-rw-r--r--. 1 root root 0 Feb 26 22:54 requests.log

Đế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:

Cài đặt Apache trên CentOS 7 - bước 6

Đâ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.


Bắt đầu một website chia sẻ thông tin cùng tên miền .INFO.

Đăng ký ngay tên miền .INFO chỉ với 140k/năm đầu tại BKHOST

Chương trình ưu đãi có một không hai tại BKHOST – Giảm giá sâu nhiều loại tên miền


Tôi là Trịnh Duy Thanh, CEO & Founder Công ty Cổ Phần Giải Pháp Mạng Trực Tuyến Việt Nam - BKHOST. Với sứ mệnh mang tới các dịch vụ trên Internet tốt nhất cho các cá nhân và doanh nghiệp trong nước và quốc tế, tôi luôn nỗ lực hết mình nâng cấp đầu tư hệ thống phần cứng, nâng cao chất lượng dịch vụ chăm sóc khách hàng để đem đến những sản phẩm hoàn hảo nhất cho người tiêu dùng. Vì vậy, tôi tin tưởng sẽ đem đến các giải pháp CNTT mới nhất, tối ưu nhất, hiệu quả nhất và chi phí hợp lý nhất cho tất cả các doanh nghiệp.
Bình luận

Thanh toán linh hoạt

Chúng tôi chấp nhận thanh toán như ATM, Visa, Internet Banking, Paypal, Baokim, Ngân lượng

Gọi ĐT tư vấn ngay
Chat ngay qua Zalo
Chat ngay qua Messenger