Cài Đặt Máy Chủ Apache Web Server Trên CentOS 7 Chi Tiết

Cài Đặt Máy Chủ Apache Web Server Trên CentOS 7 Chi Tiết

Máy chủ HTTP Apache là một trong những máy chủ web phổ biến và được sử dụng rộng rãi nhất hiện nay. Nó nổi bật với nhiều tính năng mạnh mẽ, chẳng hạn như hỗ trợ mô-đun có thể tải động, khả năng xử lý đa phương tiện hiệu quả và tích hợp tốt với các phần mềm phổ biến khác.

Nếu bạn đang tìm hiểu cách cài đặt Apache trên CentOS 7, việc sử dụng VPS server chất lượng là yếu tố then chốt. Khám phá các gói VPS server mạnh mẽ, ổn định tại danh mục dịch vụ của chúng tôi để đảm bảo website vận hành mượt mà, hỗ trợ cài đặt máy chủ dễ dàng.

DataOnline sẽ hướng dẫn bạn cách cài đặt và cấu hình máy chủ web Apache cùng với virtual hosts trên hệ thống CentOS 7 của mình.

Yêu cầu

Bạn sẽ cần những điều sau để hoàn thành hướng dẫn này:

● Một người dùng không phải root với quyền sudo đã được cấu hình trên máy chủ của bạn, được thiết lập theo hướng dẫn cài đặt ban đầu cho CentOS 7.

● Một tên miền đã được cấu hình để trỏ về máy chủ của bạn. Bạn có thể tìm hiểu cách trỏ tên miền về DataOnline Droplets bằng cách theo dõi hướng dẫn Cách Thiết Lập Tên Máy Chủ với DataOnline.

● Một firewall cơ bản được cấu hình theo hướng dẫn Các bước khuyến nghị bổ sung cho máy chủ CentOS 7 mới.

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

Apache có sẵn trong kho phần mềm mặc định của CentOS, điều này có nghĩa là bạn có thể cài đặt nó qua trình quản lý gói yum.

Với tư cách là người dùng sudo không phải root đã được cấu hình ở phần Yêu cầu, cập nhật chỉ mục gói Apache httpd cục bộ để phản ánh những thay đổi mới nhất từ upstream:

sudo yum update httpd

Sau khi các gói được cập nhật, tiến hành cài đặt gói Apache:

sudo yum install httpd

Sau khi xác nhận cài đặt, yum sẽ cài đặt Apache và tất cả các phụ thuộc cần thiết.

Nếu bạn đã hoàn thành các bước Các bước khuyến nghị bổ sung cho máy chủ CentOS 7 mới.được đề cập trong phần Yêu cầu, bạn sẽ có firewalld được cài đặt trên máy chủ của mình và bạn cần mở cổng 80 để cho phép Apache phục vụ các yêu cầu qua HTTP. Nếu bạn chưa làm như vậy, bạn có thể mở cổng bằng cách kích hoạt dịch vụ http của firewalld với lệnh sau:

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

Nếu bạn dự định cấu hình Apache phục vụ nội dung qua HTTPS, bạn cũng sẽ cần mở cổng 443 bằng cách kích hoạt dịch vụ https:

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

Tiếp theo, tải lại firewall để áp dụng các quy tắc mới:

sudo firewall-cmd --reload

Sau khi firewall được tải lại, bạn đã sẵn sàng để khởi động dịch vụ và kiểm tra máy chủ web.

Bước 2 – Kiểm tra máy chủ Web của bạn

Apache không tự động khởi động trên CentOS ngay sau khi cài đặt xong. Bạn sẽ cần khởi động tiến trình Apache một cách thủ công:

sudo systemctl start httpd

Xác minh rằng dịch vụ đang chạy với lệnh:

sudo systemctl status httpd

Bạn sẽ thấy trạng thái “active” khi dịch vụ đang chạy:

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

Như bạn có thể thấy từ kết quả trên, dịch vụ đã khởi động thành công. Tuy nhiên, cách tốt nhất để kiểm tra là yêu cầu một trang từ Apache.

Bạn có thể truy cập trang landing mặc định của Apache để xác nhận rằng phần mềm đang chạy chính xác thông qua địa chỉ IP của bạn. Nếu bạn không biết địa chỉ IP của máy chủ, bạn có thể lấy nó bằng vài cách khác nhau từ dòng lệnh.

Gõ lệnh sau tại prompt của máy chủ:

hostname -I

Lệnh này sẽ hiển thị tất cả các địa chỉ mạng của máy chủ, nên bạn sẽ nhận được một vài địa chỉ IP được phân tách bởi khoảng trắng. Bạn có thể thử từng địa chỉ trong trình duyệt web của mình để xem có hoạt động hay không.

Ngoài ra, bạn có thể dùng curl để lấy địa chỉ IP từ icanhazip.com, điều này sẽ cung cấp cho bạn địa chỉ IPv4 công khai như được nhìn thấy từ một vị trí khác trên internet:

curl -4 icanhazip.com

Khi bạn có được địa chỉ IP của máy chủ, nhập nó vào thanh địa chỉ của trình duyệt:

http://your_server_ip

Bạn sẽ thấy trang mặc định của Apache trên CentOS 7:

Thiet ke chua co ten 58 1

Giờ đây, khi dịch vụ đã được cài đặt và chạy, bạn có thể sử dụng các lệnh systemctl khác nhau để quản lý dịch vụ.

Bước 3 – Quản lý quá trình Apache

Giờ đây, khi máy chủ web của bạn đã hoạt động, hãy cùng xem qua một số lệnh quản lý cơ bản.

Để dừng máy chủ web của bạn, gõ:

sudo systemctl stop httpd

Để khởi động máy chủ khi nó đang dừng, gõ:

sudo systemctl start httpd

Để dừng rồi khởi động lại dịch vụ, gõ:

sudo systemctl restart httpd

Nếu bạn chỉ đang thực hiện các thay đổi cấu hình, Apache có thể chỉ cần reload mà không ngắt kết nối. Để làm điều này, sử dụng lệnh:

sudo systemctl reload httpd

Theo mặc định, Apache được cấu hình để khởi động tự động khi máy chủ khởi động. Nếu bạn không muốn điều này, hãy vô hiệu hóa hành vi này bằng lệnh:

sudo systemctl disable httpd

Để kích hoạt lại dịch vụ để khởi động cùng máy chủ, gõ:

sudo systemctl enable httpd

Apache sẽ tự khởi động khi máy chủ khởi động lại.

Cấu hình mặc định của Apache cho phép máy chủ của bạn host một website duy nhất. Nếu bạn dự định host nhiều tên miền trên máy chủ của mình, bạn sẽ cần cấu hình virtual hosts cho máy chủ Apache.

Bước 4 – Cấu hình Virtual Hosts

Khi sử dụng máy chủ web Apache, bạn có thể sử dụng virtual hosts (tương tự như server blocks trong Nginx) để đóng gói các chi tiết cấu hình và host nhiều tên miền trên một máy chủ duy nhất. Trong bước này, bạn sẽ thiết lập một tên miền được gọi là your_domain, nhưng bạn nên thay thế bằng tên miền thực của bạn.

Apache trên CentOS 7 có một server block được bật mặc định, cấu hình để phục vụ các tài liệu từ thư mục /var/www/html. Mặc dù điều này hoạt động tốt cho một website duy nhất, nhưng nó có thể trở nên khó quản lý nếu bạn host nhiều trang. Thay vì chỉnh sửa /var/www/html, bạn sẽ tạo cấu trúc thư mục trong /var/www cho trang your_domain, trong khi giữ /var/www/html làm thư mục mặc định được phục vụ nếu không có yêu cầu khớp với bất kỳ trang nào khác.

Tạo thư mục html cho your_domain như sau, sử dụng cờ -p để tạo các thư mục cha cần thiết:

sudo mkdir -p /var/www/your_domain/html

Tạo thêm một thư mục để lưu trữ các tập tin log cho trang web:

sudo mkdir -p /var/www/your_domain/log

Tiếp theo, gán quyền sở hữu cho thư mục html sử dụng biến môi trường $USER:

sudo chown -R $USER:$USER /var/www/your_domain/html

Đảm bảo rằng thư mục gốc của web có quyền truy cập mặc định:

sudo chmod -R 755 /var/www

Tiếp theo, tạo một trang mẫu index.html sử dụng vi hoặc trình soạn thảo yêu thích của bạn:

sudo vi /var/www/your_domain/html/index.html

Nhấn i để chuyển sang chế độ INSERT và thêm đoạn HTML mẫu sau vào tập tin:

<html>
  <head>
    <title>Welcome to your website!</title>
  </head>
  <body>
    <h1>Success! The your_domain virtual host is working!</h1>
  </body>
</html>

Lưu và thoát tập tin bằng cách nhấn ESC, gõ :wq và nhấn ENTER.

Với thư mục website và tập tin index mẫu đã có, bạn gần như đã sẵn sàng để tạo các tập tin virtual host. Các tập tin virtual host chỉ định cấu hình cho các trang riêng biệt và báo cho Apache biết cách phản hồi với các yêu cầu tên miền khác nhau.

Trước khi tạo virtual hosts, bạn sẽ cần tạo một thư mục sites-available để lưu trữ chúng. Bạn cũng sẽ tạo thư mục sites-enabled để báo cho Apache rằng một virtual host đã sẵn sàng phục vụ khách truy cập. Thư mục sites-enabled sẽ chứa các liên kết tượng trưng tới các virtual host mà bạn muốn công khai. Tạo cả hai thư mục bằng lệnh:

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

Tiếp theo, bạn sẽ báo cho Apache tìm kiếm virtual hosts trong thư mục sites-enabled. Để thực hiện điều này, hãy chỉnh sửa tập tin cấu hình chính của Apache và thêm một dòng khai báo một thư mục tùy chọn cho các tập tin cấu hình bổ sung:

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

Thêm dòng sau vào cuối tập tin:

IncludeOptional sites-enabled/*.conf

Lưu và thoát tập tin khi bạn đã thêm xong dòng này. Giờ đây, khi bạn đã có các thư mục virtual host, hãy tạo tập tin virtual host của bạn.

Bắt đầu bằng cách tạo một tập tin mới trong thư mục sites-available:

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

Thêm vào khối cấu hình sau, thay thế tên miền your_domain bằng tên miền thực của bạn:

/etc/httpd/sites-available/your_domain.conf
<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/requests.log combined
</VirtualHost>

Dòng lệnh này báo cho Apache biết thư mục chứa tài liệu web công khai và nơi lưu trữ các tập tin log lỗi và log yêu cầu cho trang web cụ thể này.

Lưu và thoát tập tin khi bạn đã hoàn tất.

Giờ đây, khi bạn đã tạo các tập tin virtual host, hãy kích hoạt chúng để Apache biết rằng chúng sẵn sàng phục vụ khách truy cập. Để làm điều này, tạo một liên kết tượng trưng cho mỗi virtual host trong thư mục sites-enabled:

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

Virtual host của bạn đã được cấu hình và sẵn sàng phục vụ nội dung. Trước khi khởi động lại dịch vụ Apache, hãy đảm bảo rằng SELinux đã có các chính sách phù hợp cho virtual hosts của bạn.

Bước 5 – Điều chỉnh quyền SELinux cho Virtual Hosts

SELinux được cấu hình để làm việc với cấu hình mặc định của Apache. Vì bạn đã thiết lập một thư mục log tùy chỉnh trong tập tin cấu hình virtual hosts, bạn sẽ gặp lỗi nếu khởi động dịch vụ Apache mà không điều chỉnh. Để khắc phục điều này, bạn cần cập nhật các chính sách SELinux để cho phép Apache ghi vào các tập tin cần thiết. SELinux mang lại mức độ bảo mật cao cho môi trường CentOS 7, vì vậy không nên vô hiệu hóa toàn bộ module kernel này.

Có nhiều cách để thiết lập chính sách dựa trên nhu cầu môi trường của bạn, vì SELinux cho phép bạn tùy chỉnh mức độ bảo mật. Bước này sẽ giới thiệu hai phương pháp điều chỉnh chính sách Apache: áp dụng toàn cầu và theo thư mục cụ thể. Điều chỉnh theo thư mục được đánh giá là an toàn hơn, do đó đây là cách khuyến nghị.

Điều chỉnh chính sách Apache toàn cầu

Việc thiết lập chính sách Apache một cách toàn cầu sẽ báo cho SELinux xử lý tất cả các tiến trình Apache theo cùng một kiểu bằng cách sử dụng boolean httpd_unified. Mặc dù phương pháp này tiện lợi hơn, nhưng nó sẽ không mang lại mức kiểm soát như phương pháp điều chỉnh tập trung vào từng tập tin hoặc thư mục.

Chạy lệnh sau để thiết lập chính sách Apache toàn cầu:

sudo setsebool -P httpd_unified 1

Lệnh setsebool thay đổi các giá trị boolean của SELinux. Cờ -P sẽ cập nhật giá trị khởi động, giúp thay đổi này được duy trì qua các lần khởi động lại. httpd_unified là boolean báo cho SELinux xử lý tất cả các tiến trình Apache theo cùng một loại, vì vậy bạn đã kích hoạt nó với giá trị 1.

Điều chỉnh chính sách Apache cho thư mục

Thiết lập quyền SELinux riêng cho thư mục /var/www/your_domain/log sẽ mang lại cho bạn nhiều quyền kiểm soát hơn đối với các chính sách Apache, nhưng có thể đòi hỏi bảo trì nhiều hơn. Vì phương pháp này không áp dụng toàn cục, bạn sẽ cần thiết lập lại ngữ cảnh cho bất kỳ thư mục log mới nào được chỉ định trong cấu hình virtual host của bạn.

Đầu tiên, kiểm tra ngữ cảnh mà SELinux đã gán cho thư mục /var/www/your_domain/log:

sudo ls -dZ /var/www/your_domain/log/

Lệnh này liệt kê và in ra ngữ cảnh SELinux của thư mục. Bạn sẽ thấy đầu ra tương tự như sau:

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

Ngữ cảnh hiện tại là httpd_sys_content_t, báo cho SELinux rằng tiến trình Apache chỉ có thể đọc các tập tin tạo trong thư mục này. Trong hướng dẫn này, bạn sẽ thay đổi ngữ cảnh của thư mục /var/www/your_domain/log sang httpd_log_t. Loại này sẽ cho phép Apache tạo và ghi thêm vào các tập tin log của ứng dụng web:

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

Tiếp theo, sử dụng lệnh restorecon để áp dụng các thay đổi và đảm bảo chúng được duy trì qua các lần khởi động:

sudo restorecon -R -v /var/www/your_domain/log

Cờ -R chạy lệnh này đệ quy, nghĩa là nó sẽ cập nhật tất cả các tập tin hiện có theo ngữ cảnh mới. Cờ -v sẽ in ra các thay đổi ngữ cảnh mà lệnh đã thực hiện. Bạn sẽ thấy đầu ra xác nhận các thay đổi:

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

Bạn có thể liệt kê lại ngữ cảnh một lần nữa để xem thay đổi:

sudo ls -dZ /var/www/your_domain/log/

Đầu ra sẽ phản ánh ngữ cảnh cập nhật:

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

Giờ đây, khi thư mục /var/www/your_domain/log đang sử dụng loại ngữ cảnh httpd_log_t, bạn đã sẵn sàng kiểm tra cấu hình virtual host của mình.

Bước 6 – Kiểm tra Virtual Host

Sau khi ngữ cảnh SELinux đã được cập nhật bằng một trong các phương pháp trên, Apache sẽ có thể ghi vào thư mục /var/www/your_domain/log. Giờ đây, bạn có thể khởi động lại dịch vụ Apache thành công:

sudo systemctl restart httpd

Kiểm tra nội dung của thư mục /var/www/your_domain/log để xem Apache đã tạo các tập tin log hay chưa:

ls -lZ /var/www/your_domain/log

Bạn sẽ thấy rằng Apache đã tạo ra các tập tin error.logrequests.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

Giờ đây, khi bạn đã cấu hình virtual host và cập nhật quyền SELinux, Apache sẽ phục vụ tên miền của bạn. Bạn có thể kiểm tra điều này bằng cách truy cập vào http://your_domain, nơi bạn sẽ thấy giao diện như sau:

Thiet ke chua co ten 33 3

Điều này xác nhận rằng virtual host của bạn đã được cấu hình thành công và đang phục vụ nội dung. Lặp lại Bước 4 và 5 để tạo virtual host mới với quyền SELinux cho các tên miền bổ sung.

Kết luận

Trong bài hướng dẫn này, bạn đã hoàn thành việc cài đặt và cấu hình máy chủ web Apache. Giờ đây, với máy chủ web đã sẵn sàng, bạn có thể lựa chọn và triển khai nhiều loại nội dung khác nhau, đồng thời áp dụng các công nghệ đa dạng để tạo ra những trải nghiệm người dùng phong phú và linh hoạt hơn.

Để tối ưu hóa máy chủ Apache, chọn VPS phù hợp là rất quan trọng. Hãy xem danh mục giá thuê VPS của chúng tôi để tìm hiểu các gói giá thuê VPS hợp lý, giúp bạn tiết kiệm chi phí mà vẫn đảm bảo hiệu suất cao cho website của mình.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *