Cài đặt Apache trên CentOS7

Tài liệu tham khảo chính thức

Trang web chính thức Tài liệu sản phẩm HTTPS Gzip

Thực hiện cài đặt

            yum -y install libmcrypt libmcrypt-devel mcrypt mhash
yum -y install httpd
        

Sửa đổi tệp cấu hình

Sau khi cài đặt xong, chúng ta cần thực hiện một số sửa đổi đối với tệp cấu hình. Nội dung sửa đổi cụ thể thường bao gồm: IP và cổng bị ràng buộc, truyền nén gzip, số lượng kết nối đồng thời và SSL. Chúng ta hãy giải thích từng cái một dưới đây.

Sửa đổi IP và cổng liên kết

IP và cổng mặc định mà Apache lắng nghe là 0.0.0.0:80. Nếu chúng tôi cần sửa đổi IP và cổng được giám sát, chúng tôi có thể sửa đổi trực tiếp. Nếu chúng ta cần liên kết nhiều cổng, chúng ta cũng có thể thêm chúng. Trong ví dụ sau, chúng tôi liên kết các cổng 80 và 443. Cổng 443 là số cổng mặc định cho HTTPS.

            Listen 80
Listen 443 https
        

Mở truyền gzip

Do hiệu suất CPU máy tính của chúng ta tương đối cao, thường thì băng thông mạng sẽ xuất hiện nút cổ chai, vì vậy chúng ta có thể chọn bật truyền nén gzip. Có 9 cấp độ nén, chúng ta có thể lựa chọn theo hiệu suất của máy chủ và tìm cấp độ phù hợp nhất. Trong ví dụ dưới đây, chúng tôi đặt nó ở mức 1. Các loại tập tin nén là: html, xml, php, css, js, chúng ta cũng có thể thêm các loại tập tin nén khi cần thiết.

            <IfModule mod_deflate.c>
    DeflateCompressionLevel 1
    AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-javascript application/x-httpd-php
    AddOutputFilter DEFLATE js css
</IfModule>
        

Thiết lập KeepAlive

Chức năng của KeepAlive là giữ cho máy khách và máy chủ được kết nối trong một khoảng thời gian. Khi chúng tôi mở một trang web, chúng tôi thường cần tải nội dung chính, js, css và hình ảnh. Vì mỗi tài nguyên cần khởi tạo một yêu cầu HTTP riêng biệt, chúng tôi bật KeepAlive để giảm thời gian cần thiết cho mỗi yêu cầu thiết lập liên kết TCP / IP. Nhưng KeepAlive cũng có nhược điểm là nó sẽ khiến tài nguyên IO của máy chủ bị chiếm dụng, vì vậy chúng ta cần lựa chọn có bật KeepAlive tùy theo tình hình thực tế hay không. Nếu bật KeepAlive, chúng ta cũng cần đặt thời gian chờ hợp lý cho nó để tránh tình trạng IO máy chủ bị chiếm dụng trong thời gian dài. Ví dụ sau chứa một số cài đặt chính của KeepAlive.

            KeepAlive On
MaxKeepAliveRequests 400
KeepAliveTimeout 5
        

Định cấu hình số lượng đồng thời

Một cấu hình hợp lý của số lượng đồng thời có thể cải thiện đáng kể thông lượng của máy chủ. Thông thường Apache của chúng tôi hoạt động ở chế độ mpm_prefork. Chúng ta cần cấu hình hợp lý một số thông số chính. Điều chúng ta cần chú ý là số lượng kết nối tối đa không được quá ít, quá nhỏ sẽ khiến số lượng lớn yêu cầu của người dùng bị từ chối khi tính đồng thời cao. Giá trị hợp lý mà chúng ta đặt nên tham chiếu đến CPU và bộ nhớ của máy chủ, miễn là đủ tài nguyên thì đặt càng lớn càng tốt, nhưng nếu đặt quá lớn thì tài nguyên máy chủ sẽ cạn kiệt và Apache cũng sẽ sập.

            <IfModule mpm_prefork_module>
    StartServers         10
    MinSpareServers      25
    MaxSpareServers      50
    ServerLimit          1500
    MaxClients           1000
    MaxRequestsPerChild  3000
</IfModule>
        

Định cấu hình SSL

Hầu hết các trang web hiện đã bật SSL để hỗ trợ kết nối an toàn HTTPS. Ưu điểm của HTTPS là nội dung trong quá trình truyền được mã hóa nên không lo bị rò rỉ thông tin do bị người khác đánh chặn. Trước khi bật SSL, trước tiên chúng ta phải đăng ký chứng chỉ. Sau khi chúng ta nhận được chứng chỉ, hãy tham khảo cấu hình sau để hoàn tất cài đặt SSL.

            <VirtualHost *:443>
    ServerAdmin www.test.com
    ServerName www.testl.com
    DocumentRoot  /var/www/test
    SSLEngine on
    SSLProtocol all -SSLv2 -SSLv3
    SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM
    SSLHonorCipherOrder on
    SSLCertificateFile /etc/httpd/conf/cert/public.crt
    SSLCertificateKeyFile /etc/httpd/conf/cert/1533528967430.key
    SSLCertificateChainFile /etc/httpd/conf/cert/chain.crt
    AllowEncodedSlashes on
    <Directory "/var/www/test.com">
         Options FollowSymLinks
         AllowOverride All
         Order allow,deny
         Allow from all
    </Directory>
</VirtualHost>