Lời mở đầu

Apache httpd là một trong các 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 nhiều module có hoạt động riêng biệt có thể được cài đặt thêm, hỗ trợ nhiều định dạng media và có khả năng tích hợp với các phần mềm khác một cách dễ dàng. Trong bài viết này, chúng ta sẽ cùng tìm hiểu về cách cài đặt Web server Apache trên hệ điều hành CentOS 7.

Yêu cầu

Để thực hiện thành công hướng dẫn cài đặt web server theo bài viết theo đây, bạn cần có:

  • Một user không phải root nhưng có quyền sudo được cài đặt trên máy chủ của bạn

  • Một tên miền được trỏ đến máy chủ của bạn

  • Máy chủ đã được cấu hình tường lửa cơ bản

Bước 1: Cài đặt Apache

Apache là một phần mềm được cung cấp và duy trì nâng cấp bởi chính repository của Centos, do đó bạn hoàn toàn có thể cài đặt nó bằng cách sử dụng package manager của Centos(yum).

Đầu tiên, bạn update package httpd trước khi thực hiện cài đặt nó. Hãy luôn nhớ rằng, trong bài viết này chúng ta sẽ chỉ sử dụng user non-root của OS, do đó ta sẽ thực hiện update package bằng câu lệnh sau:

sudo yum update httpd

Sau khi đã update thành công, cài đặt Apache

sudo yum install httpd

Trình cài đặt sẽ yêu cầu người dùng thực hiện xác nhận cài đặt package, thực hiện xác nhận và sau đó yum sẽ thực hiện cài đặt Apache và các package cần thiết để có thể khởi chạy ứng dụng

Nếu bạn đã cài đặt firewall, đến bước này ta sẽ thực hiện mở port 80 để cho phép Apache tiếp nhận các request bằng giao thức http. Bạn có thể thực hiện việc này bằng câu lệnh sau:

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

Nếu bạn muốn cấu hình Apache trả lời các request có thực hiện mã hóa qua giao thức https thì bạn cần thực hiện mở thêm port 443 bằng cách đăng ký thêm giao thức https cho firewall

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

Sau khi thực hiện thêm các service, ta cần thực hiện tải lại các cấu hình cho firewall bằng lệnh

sudo firewall-cmd --reload

Đến đây, web server đã có thể sẵn sàng để khởi chạy trên máy chủ của bạn.

Bước 2: Các bước khởi tạo ban đầu với web server

Đầu tiên bạn cần khởi động Apache httpd bằng câu lệnh sau:

sudo systemctl start httpd

Kiểm tra lại trạng thái của dịch vụ bằng câu lệnh:

systemctl status httpd

Trạng thái của service sẽ là active khi nó đang chạy

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

Bạn hoàn toàn có thể thử request tới web server để kiểm tra xem nó đang hoạt động hay không bằng cách sử dụng curl tới ip hoặc domain mà bạn đã trỏ mới máy chủ của mình, bạn có thể lấy ip tương ứng với domain bằng lệnh sau:

curl -4 <your_domain>

Sau khi đã lấy được ip của máy chủ, ta thực hiện truy cập vào đường dẫn như sau trên trình duyệt:

http://<your_server_ip>

Kết quả thu được là bạn sẽ truy cập vào trang mặc định của Web server Apache trên CentOS 7

Bước 3: Quản lý tiến trình Web Server

Khi web server đã chạy, chúng ta có thể dùng một số lệnh cơ bản sau để quản lý nó:

Để dừng web server, chạy lệnh:

sudo systemctl stop httpd

Để chạy web server, chạy lệnh:

sudo systemctl start httpd

Để chạy lại web server, chạy lệnh:

sudo systemctl restart httpd

Nếu bạn có thay đổi cấu hình của web server và muốn web server chấp nhận các cấu hình mới này nhưng không đóng các kết nối hiện tại ta sẽ sử dụng lệnh sau:

sudo systemctl reload httpd

Mặc định, Apache sẽ được tự động bật lên cùng hệ thống, nếu bạn không muốn nó chạy cùng hệ thống nữa thì có thể dùng lệnh sau để thực hiện:

sudo systemctl disable httpd

Để cấu hình cho Apache httpd khởi chạy cùng hệ thống ta dùng lệnh:

sudo systemctl enable httpd

Mặc định cấu hình của Apache cho phép nó có thể cung cấp một website. Nếu bạn muốn quản lý nhiều tên miền trên máy chủ của mình, bạn cần thực hiện thêm một số bước cấu hình khác. Để có thể làm được điều này, ta cần tìm hiểu các cấu hình tên miền ảo(virtual host) trên web server Apache.

Bước 4: Cấu hình các tên miền ảo

Cấu hình tên miền ảo(virtual hosts) trên Apache cho phép chúng ta có thể sử dụng đóng gói các cấu hình của web server và cung cấp nhiều tên miền chỉ từ một máy chủ.

Apache được cài đặt trên CentOS 7 có một tên miền được cấu hình mặc định và nó được cấu hình để thực hiện cung cấp các tài nguyên tại thư mục /var/www/html. Mặc dù việc này có thể hoạt động tốt cho một website duy nhất nó sẽ trở nên khó khăn khi cần cung cấp nhiều hơn một tên miền tại máy chủ. Thay vì cấu hình thư mục /var/www/html, bạn nên tạo một thư mục bên trong thư mục /var/www cho website sử dụng tên miền của bạn, thư mục /var/www/html sẽ là thư mục mặc định có nhiệm vụ nhận vào các yêu cầu không phù hợp với các website khác đã được cấu hình.

Cấu trúc thư mục dành cho tên miền(từ đây xin được gọi là your_domain) mới được cấu hinh sẽ có dạng như sau: /var/www/<your_domain>. Tạo thêm thư mục htmllog bên trong thư mục này, html sẽ lưu các tài nguyên để web server có thể trả về cho người dùng, log sẽ là thư mục để cấu hình ghi log vào đây.

Sau đó, bạn nên chuyển quyền sở hữu thư mục html cho người dùng hiện tại sử dụng biến môi trường $USER

sudo chown -R $USER:$USER /var/www/<tên miền>/html

Kiểm tra lại quyền thư mục gốc của web server, hãy chắc chắn nó có quyền cần thiết là 755

sudo chmod -R 755 /var/www

Tiếp theo, bạn sẽ cần tạo một file index.html để web server có thể trả về cho người dùng khi truy cập vào trang web

/var/www/your_domain/html/index.html

<html>

<head>

<title>Page Title</title>

</head>

<body>



<p>This document is served for domain my_domain in virtual host my_domain</p>



</body>

</html>

Tới đây, bạn đã có thư mục lưu trữ các tài nguyên cần thiết cho website của mình và bạn đã hoàn toàn có thể thực hiện cấu hình một file cấu hình tên miền ảo cho website của mình. File cấu hình tên miền ảo sẽ chỉ định ra cấu hình dành cho các website riêng biệt được cấu hình trên web server, nó sẽ có web server biết phải trả lời các yêu cầu tới các tên miền khác nhau.

Trước khi bạn thực hiện cấu hình các tên miền ảo của mình, bạn sẽ phải tạo thư mục sites-available để lưu chúng. Cùng với đó, bạn cũng cần tạo thư mục sites-enabled để cho Apache biết được tên miền ảo nào đã sẵn sàng để nó có thể phục vụ người dùng. Thư mục sites-enabled sẽ giữ các đường link động tới các tên miền ảo mà chúng ta muốn xuất bản. Bạn có thể tạo cả hai thư mục bằng lệnh dưới đây:

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

Tiếp đó, bạn cần chỉ định cho Apache biết nó cần thực hiện tìm kiếm các cấu hình domain ảo trong thư mục sites-enabled. Để thực hiện công việc này, bạn cần cấu hình file cấu hình chính của Apache và thêm một dòng cấu hình thư mục tùy chọn bằng lệnh sau:

sudo vim /etc/httpd/conf/httpd.conf

Thêm dòng dưới đây vào cuối của file cấu hình: IncludeOptional sites-enabled/*.conf Lưu file và tới đây, bạn sẽ tiếp tục tạo các file cấu hình cho tên miền ảo của mình. Bắt đầu, bạn sẽ tạo một file mới trong thư mục sites-available:

sudo vi /etc/httpd/sites-available/<your_domain>.conf

Cấu hình một block cấu hình cho tên miền như sau:

<VirtualHost *:80>

     ServerName www.your_domain

     ServerAlias your_domain

     DocumentRoot /var/www/your_domain/html

     ErrorLog /var/www/your_domain/log/error.log

     CustomLog /var/www/your_domain/log/access-log.log combined

</VirtualHost>

Các cấu hình này sẽ cho Apache biết cần tìm thư mục gốc có chứa các tài nguyên được cung cấp công khai tương ứng với các tên miền. Nó cũng chỉ cho Apache biết nên thực hiện ghi error logaccess log cho các website cụ thể vào các file nào.

Sau khi đã thực hiện xong việc cấu hình tên miền, bạn sẽ cần lưu lại các thay đổi và đóng file.

Đến đây, như chúng ta đã đề cập ở trên, Apache sẽ chỉ thực hiện cung cấp các website được cấu hình trong sites-enabled. Để cho Apache biết website nào đã sẵn sàng cho việc khởi chạy, bạn sẽ cần tạo một đường link động(symbolic link) từ sites-available vào thư mục sites-enabled:

sudo ln -s /etc/httpd/sites-available/<your_domain>.conf /etc/httpd/sites-enabled/<your_domain>.conf

Để chấp nhận các thay đổi này, bạn cần thực hiện restart lại Apache httpd

Bước 5: Kiểm tra lại tên miền ảo đã cấu hình

Restart lại Apache httpd:

sudo systemctl restart httpd

Xem các file log đã cấu hình cho tên miền ảo trong thư mục: /var/www/your_domain/log. Bạn cần kiểm tra lại xem Apache có tạo các file log hay chưa:

ls -l /var/www/your_domain/log

Nếu cấu hình thành công, bạn sẽ thấy hai file log đã được Apache tạo thành công là file error.logaccess-log.log . Đây là các file đã được chỉ định trong file cấu hình tên miền ảo.

Bạn có thể thử truy cập vào website http://your_domain để kiểm tra lại kết quả. Tại đây, bạn có thể thấy kết quả như sau:

Tới đây, việc cấu hình một tên miền ảo đã hoàn tất, bạn hoàn toàn có thể lặp lại bước 4 để tạo thêm nhiều tên miền ảo khác

Kết luận

Trong bài viết này, bạn đã thực hiện cài đặt và cấu hình thành công Apache web server. Một khi web server đã được cài đặt thành công, bạn có rất nhiều lựa chọn về các loại tài nguyên mà mình có thể cung cấp cũng như nhiều công nghệ khác nhau để có thể làm cho website của mình tốt hơn.

Stringee Communication APIs là giải pháp cung cấp các tính năng như gọi thoại, gọi video, tin nhắn chat, SMS hay tổng đài chăm sóc khách hàng có thể tích hợp trực tiếp vào các ứng dụng/website của doanh nghiệp nhanh chóng. Bộ giải pháp này giúp tiết kiệm đến 80% thời gian và chi phí cho doanh nghiệp bởi thông thường nếu tự phát triển các tính năng này có thể mất từ 1 - 3 năm.

Mời quý bạn đọc đăng ký dùng thử và nhận tư vấn tại đây: