HƯỚNG DẪN Thêm module ngx_pagespeed cho Nginx trên Centos 7

Thảo luận trong 'KIẾN THỨC VPS/SERVER' bắt đầu bởi quyet1990, 22/10/16.

?

Bạn thấy bài viết này thế nào?

Poll closed 29/10/16.
  1. Quá dài, cần rút ngắn lại

    0 phiếu
    0.0%
  2. Tạm được

    0 phiếu
    0.0%
  3. Tốt

    0 phiếu
    0.0%
Multiple votes are allowed.
  1. quyet1990

    quyet1990 New Member

    Tham gia ngày:
    22/10/16
    Bài viết:
    220
    Đã được thích:
    0
    Giới thiệu
    ngx_pagespeed, hoặc chỉ pagespeed, là một mô-đun Nginx được thiết kế để tối ưu hóa trang web của bạn tự động bằng cách giảm kích thước của các nguồn tài nguyên của nó và do đó thời gian trình duyệt của khách hàng cần phải tải nó. Nếu bạn không quen với nó, hãy kiểm tra trang web chính thức của mình.

    Bài viết này sẽ hướng dẫn bạn thông qua quá trình cài đặt và cấu hình của module pagespeed cho Nginx. Điều quan trọng là phải biết rằng Nginx không hỗ trợ tự động tải các module có sẵn trong các máy chủ web khác như Apache. Kể từ khi Nginx không hỗ trợ tính năng này, bạn cần xây dựng Nginx từ nguồn để thêm các mô-đun.

    Có gói tùy chỉnh riêng của bạn đi kèm với một bất lợi - bạn hoàn toàn chịu trách nhiệm cập nhật khi có phiên bản mới. Đưa vào tài khoản khi cân nhắc những ưu và khuyết điểm của việc sử dụng ngx_pagespeed.

    Điều kiện tiên quyết
    Hướng dẫn này được viết trên CentOS 7. Một phiên bản Ubuntu 14.04 và một phiên bản Debian 8 có sẵn là tốt.
    Trước khi làm theo hướng dẫn này, hãy chắc chắn rằng bạn hoàn thành các điều kiện sau:
    Một CentOS 7 Droplet
    Một người sử dụng sudo không phải root (Kiểm tra cài đặt máy chủ ban đầu với CentOS 7 để biết chi tiết.)
    Ngoại trừ có ghi chú khác, tất cả các lệnh yêu cầu quyền root trong hướng dẫn này có thể được chạy như một người sử dụng không phải root với quyền sudo.

    Bước 1 - Download nguồn và phụ thuộc của nó
    Hãy bắt đầu với việc đảm bảo chúng tôi có tất cả các phần mềm cần thiết cho việc biên soạn và thử nghiệm của Nginx. Hãy chạy lệnh:
    Mã:
     sudo yum install wget curl unzip gcc-c++ pcre-devel zlib-devel 
    Tiếp theo, tạo một thư mục trong thư mục chính của bạn để tải về các gói mã nguồn cho Nginx:
    Mã:
    mkdir ~/custom-nginx
    Thay đổi vào thư mục mới được tạo ra này:
    Mã:
    cd ~/custom-nginx
    Sau đó, tải về các gói nguồn Nginx trong thư mục này từ trang web chính thức của họ. Hiện nay, phiên bản mới nhất là 1.8.0 và có thể được tải về bằng lệnh:
    Mã:
    sudo wget http://nginx.org/download/nginx-1.8.0.tar.gz
    Sau đó giải nén các gói mới được tải về bằng lệnh:
    Mã:
    sudo tar zxvf nginx-1.8.0.tar.gz
    Để xác nhận chúng tôi đang trên cùng một trang, liệt kê các nội dung của thư mục ~ / tùy chỉnh nginx:
    Mã:
    ls ~/custom-nginx
    Kết quả sẽ giống như thế này:
    Mã:
    Output of ls ~/custom-nginx
    nginx-1.8.0 nginx-1.8.0.tar.gz
    
    Như bạn có thể thấy, các phiên bản của gói nguồn Nginx là 1.8.0 tại thời điểm viết bài hướng dẫn này. Để bắt đầu thêm các module ngx_pagespeed, trước tiên bạn cần phải đi đến các thư mục modules trong thư mục trích xuất nginx-1.8.0:
    Mã:
    cd nginx-1.8.0/src/http/modules/
    Trong thư mục này, tải về các tập tin nguồn ngx_pagespeed mới nhất từ kho Github của nó với lệnh:
    Mã:
    sudo wget https://github.com/pagespeed/ngx_pagespeed/archive/master.zip

    Sau khi tải về xong, giải nén nó với các tiện ích giải nén như thế này:
    Mã:
    sudo unzip master.zip
    Điều này sẽ tạo ra một thư mục mới có tên gọi ngx_pagespeed-master bên trong của bạn ~/custom-nginx/nginx-1.8.0/src/http/modules/. Để thuận tiện đổi tên thư mục này giống ngx_pagespeed với lệnh:
    Mã:
    sudo mv ngx_pagespeed-master ngx_pagespeed 
    Đi vào bên trong thư mục ngx_pagespeed mới:
    Mã:
    cd ngx_pagespeed
    Từ đó, tải về PageSpeed Tối ưu hóa thư viện (psol) được yêu cầu cho các biên dịch:
    Mã:
    sudo wget https://dl.google.com/dl/page-speed/psol/1.9.32.6.tar.gz
    Nếu liên kết đến các kho lưu trữ psol không hoạt động tại thời điểm bạn đang đọc bài viết này, chỉ cần bỏ qua bước này. Nếu bạn đang thiếu các thư viện khi biên dịch trong các bước tiếp theo, bạn sẽ thấy một lỗi với các hướng dẫn cập nhật để làm thế nào để có được gói sau.

    Cuối cùng, giải nén gói psol bên trong thư mục ~/custom-nginx/nginx-1.4.6/debian/modules/ngx_pagespeed:
    Mã:
    sudo tar -xzvf 1.9.32.6.tar.gz 
    Bước 2 - Cấu hình nguồn và biên dịch nó
    Tại thời điểm này, bạn đã sẵn sàng để cấu hình các nguồn Nginx và bao gồm các module pagespeed. Tới thư mục cha của nguồn Nginx:
    Mã:
    cd ~/custom-nginx/nginx-1.8.0/
    Sau đó chạy configure nguồn bằng lệnh:
    Mã:
    sudo ./configure --add-module=/home/your_user/custom-nginx/nginx-1.8.0/src/http/modules/ngx_pagespeed/ --user=nobody --group=nobody --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log –pid-path=/var/run/nginx.pid
    
    Các tùy chọn cấu hình quan trọng nhất từ trên là --add-module=/home/your_user/custom-nginx/nginx-1.8.0/src/http/modules/ngx_pagespeed/. Nó đảm bảo rằng các mô-đun pagespeed sẽ là một phần của việc biên soạn Nginx. Hãy chắc chắn để thay thế your_user với người dùng của bạn trên con đường này.

    Để thuận tiện, chúng tôi đã tùy chỉnh một số thiết lập khác như vị trí của các tập tin đăng nhập và user/group, theo đó các máy chủ nên chạy. Để biết thêm thông tin về những gì có thể được tùy chỉnh xin vui lòng kiểm tra các tài liệu hướng dẫn cho các tùy chọn thời gian biên dịch.
    Sau khi cấu hình xong, bắt đầu biên soạn với lệnh:
    Mã:
    sudo make
    Điều này sẽ mất đến mười phút tùy thuộc vào các nguồn tài nguyên của droplet của bạn. Sau đó bạn có thể cài đặt phần mềm bằng lệnh:
    Mã:
    sudo make install
    Bạn có thể tìm thấy tùy chỉnh của bạn Nginx được cài đặt trong thư mục / usr / local / nginx. Để làm cho nó thậm chí còn thuận tiện hơn, chúng ta hãy tạo ra hai liên kết tượng trưng. Đầu tiên cho các tập tin cấu hình:
    Mã:
    sudo ln -s /usr/local/nginx/conf/ /etc/nginx
    Lệnh này sẽ cho phép bạn tìm các tập tin cấu hình trong /etc/nginx/directory nơi thông thường các file cấu hình cư trú.

    Bạn cũng nên tạo một liên kết tượng trưng đến nhị phân chính trong /usr/sbin/directory để bạn có thể tìm thấy nó dễ dàng hơn và bao gồm nó trong kịch bản khởi động. Đây cũng sẽ là cần thiết cho các kịch bản khởi động mà chúng tôi sẽ sử dụng sau này. Đối với mục đích này chạy lệnh:
    Mã:
    sudo ln -s /usr/local/nginx/sbin/nginx /usr/sbin/nginx
    Bước 3 - Tạo Startup Script
    Quá trình cài đặt trước đó sẽ chăm sóc của một số công việc nhàm chán như tạo cho người sử dụng nobody và nhóm cần thiết, theo đó Nginx sẽ chạy. Tuy nhiên, bạn vẫn phải tạo ra kịch bản tự khởi động. May mắn thay, với Nginx trên CentOS 7 hiện đang có sẵn trên nginx.com.

    Đầu tiên, tạo một file mới trong thư mục /etc/init.d:
    Mã:
    sudo nano /etc/init.d/nginx
    Sau đó đi đến https://www.nginx.com/resources/wiki/start/topics/examples/redhatnginxinit/, sao chép kịch bản, và dán nó vào file mới này.

    Cuối cùng, làm cho kịch bản thực thi này bằng cách chạy lệnh:
    Mã:
    sudo chmod +x /etc/init.d/nginx
    Sau đó bạn có thể bắt đầu Nginx cho lần đầu tiên với lệnh:
    Mã:
    sudo service nginx start
    Để chắc chắn rằng Nginx bắt đầu và dừng lại mỗi khi có các Droplet, thêm nó vào runlevel mặc định bằng lệnh:
    Mã:
     sudo chkconfig nginx on
    Bước 4 - Kích hoạt các Module Pagespeed
    Bây giờ bạn có Nginx cài đặt. Bước tiếp theo là cho phép các module ngx_pagespeed.
    Trước khi cho phép các module, bạn phải tạo một thư mục, nơi mà nó sẽ lưu các tập tin cho trang web của bạn:
    Mã:
    sudo mkdir -p /var/ngx_pagespeed_cache
    Hãy chắc chắn rằng để thay đổi quyền sở hữu của thư mục này cho người sử dụng Nginx để các máy chủ web có thể lưu trữ các tập tin trong nó:
    Mã:
    sudo chown -R nobody:nobody /var/ngx_pagespeed_cache
    Sau đó mở nginx.conf tập tin cấu hình Nginx chính trong soạn thảo văn bản yêu thích của bạn như thế này:
    Mã:
    sudo nano /etc/nginx/nginx.conf
    Trong tập tin này thêm những dòng sau vào khối máy chủ và lưu các thay đổi:
    Mã:
    
    ##
    # Pagespeed main settings
    
    pagespeed on;
    pagespeed FileCachePath /var/ngx_pagespeed_cache;
    
    # Ensure requests for pagespeed optimized resources go to the pagespeed
    # handler and no extraneous headers get set.
    
    location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" { add_header "" ""; }
    location ~ "^/ngx_pagespeed_static/" { }
    location ~ "^/ngx_pagespeed_beacon" { }
    
    Bạn có thể thêm những dòng này ở bất cứ đâu trong khối, nhưng trong ví dụ của chúng tôi, chúng tôi có thêm nó vào cuối của khối.

    Đây là cách các tập tin /etc/nginx/nginx.conf nên nhìn bây giờ:
    Mã:
    ...
    http {
        include       mime.types;
        default_type  application/octet-stream;
    
        #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
        #                  '$status $body_bytes_sent "$http_referer" '
        #                  '"$http_user_agent" "$http_x_forwarded_for"';
    
        #access_log  logs/access.log  main;
        sendfile        on;
        #tcp_nopush     on;
    
        #keepalive_timeout  0;
        keepalive_timeout  65;
    
        #gzip  on;
    
        server {
            listen       80;
            server_name  localhost;
    
            #charset koi8-r;
    
            #access_log  logs/host.access.log  main;
            ##
            # Pagespeed main settings
    
            pagespeed on;
            pagespeed FileCachePath /var/ngx_pagespeed_cache;
    
            # Ensure requests for pagespeed optimized resources go to the pagespeed
            # handler and no extraneous headers get set.
    
            location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" { add_header "" ""; }
            location ~ "^/ngx_pagespeed_static/" { }
            location ~ "^/ngx_pagespeed_beacon" { }
            location / {
                root   html;
                index  index.html index.htm;
            }
    ...
    
    Ngoài ra, hãy chắc chắn để thêm dòng cấu hình pagespeed cho mỗi tập tin khối máy chủ bổ sung mà bạn có thể có.
    Cuối cùng, khởi động lại máy chủ Nginx để các thay đổi có hiệu lực:
    Mã:
    sudo service nginx restart
    Để kiểm tra xem mô-đun ngx_pagespeed đã được cài đặt thành công, chạy nhị phân Nginx như thế này:
    Mã:
    sudo /usr/sbin/nginx -V
    Nếu việc cài đặt thành công, bạn sẽ thấy các module ngx_pagespeed liệt kê trong số các đối số tùy chỉnh khác:
    Mã:
    Output
    nginx version: nginx/1.8.0
    ...
    configure arguments: --add-module=/home/your_user/custom-nginx/nginx-1.8.0/src/http/modules/ngx_pagespeed/
    ...
    
    Ở trên không có nghĩa là chưa rằng pagespeed được kích hoạt và làm việc cho trang web của bạn. Để xác nhận bạn có thể sử dụng curl này, một công cụ và thư viện với phía khách hàng chuyển URL. Với nó kiểm tra các tiêu đề X-Page-Speed như thế này:
    Mã:
    curl -I -p http://localhost| grep X-Page-Speed
    Nếu module ngx_pagespeed hoạt động tốt, bạn sẽ thấy nó trong đầu ra cùng với phiên bản của nó:
    Mã:
    Output
    X-Page-Speed: 1.9.32.6-7321
    
    Nếu bạn không thấy tiêu đề này, hãy chắc chắn rằng bạn đã kích hoạt pagespeed theo các hướng dẫn từ các bước trước.
     
    #1 quyet1990, 22/10/16
    Sửa lần cuối: 22/10/16

Chia sẻ trang này

Đang tải...