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 html
và log
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 log
và access 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.log
và access-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: