HƯỚNG DẪN Cài đặt Drupal 8.1 với Nginx, PHP-FPM và SSL trên Ubuntu 16.04

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

  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
    Drupal là một hệ thống quản lý nội dung nổi tiếng mã nguồn mở dựa trên PHP. Nó có sẵn miễn phí và phát hành theo giấy phép GNU General Public.

    Drupal có thể được sử dụng cho tất cả các kích cỡ của trang web, từ các trang web quốc tế rất lớn cho đến các blog cá nhân, các trang web của công ty hoặc chính phủ. Phần cốt lõi của drupal được đặt tên là "Drupal Core", nó chứa các hệ thống quản lý nội dung, quản lý người dùng, quản lý menu, bố trí tùy biến và quản trị hệ thống. Drupal Core có thể được mở rộng bằng plugins, cho đến bây giờ, các cộng đồng drupal đã được cung cấp hơn 31.000 module cho Drupal.

    Trong hướng dẫn này, chúng tôi sẽ cài đặt Drupal 8.1.10 với máy chủ web Nginx, MariaDB 10 và PHP-FPM (PHP 7.0) để xử lý các yêu cầu PHP. Tôi cũng sẽ cho bạn thấy làm thế nào để cài đặt một chứng chỉ SSL để bảo vệ.
    Bước 1: Cập nhật hệ thống Ubuntu
    Đăng nhập vào máy chủ bằng ssh, sau đó sử dụng câu lệnh sau:
    Mã:
    apt-get update
    Bước 2 - Cài đặt Nginx và PHP-FPM
    Cài đặt Nginx với lệnh:
    Mã:
     apt-get install nginx -y
    Tiếp theo, cài đặt php7.0-fpm với phần mở rộng php-gd:
    Mã:
    apt-get install php7.0-fpm php7.0-cli php7.0-gd php7.0-mysql php7.0-xml -y
    Trong bước tiếp theo, chúng ta sẽ cấu hình Nginx.

    Bước 3 - Cấu hình Nginx và PHP-FPM
    Chuyển đến thư mục "/etc/php/7.0/fpm" php-fpm và chỉnh sửa file "php.ini":
    Mã:
    cd /etc/php/7.0/fpm/
    vim php.ini
    
    Dòng 761, uncomment dòng cgi.fix_pathinfo và thay đổi giá trị "0".
    Mã:
    cgi.fix_pathinfo=0
    Lưu file và thoát khỏi trình soạn thảo.
    Chỉnh sửa các tập tin "default" và cho phép các chỉ thị php-fpm.
    Mã:
    cd /etc/nginx/sites-available/
    vim default
    
    Uncomment dòng 51-58 để sử dụng php-fpm với nginx.
    Mã:
    location ~ \.php$ {
                include snippets/fastcgi-php.conf;
        #
        # # With php7.0-cgi alone:
            # fastcgi_pass 127.0.0.1:9000;
        # # With php7.0-fpm:
                fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    }
    
    
    Lưu file và thoát.
    Sau đó kiểm tra cấu hình Nginx với lệnh sau để đảm bảo rằng nó là hợp lệ:
    Mã:
    nginx -t
    Nếu không có lỗi, khởi động lại nginx và dịch vụ php-fpm:
    Mã:
    systemctl restart nginx
    systemctl restart php7.0-fpm
    
    Tạo ra tập tin php.info trong thư mục /var/www/html
    Mã:
    cd /var/www/html/
    Mã:
    echo "<?php phpinfo(); ?>" > info.php
    Truy cập vào tập tin info.php tại IP máy chủ (trong trường hợp http://192.168.1.4/info.php của tôi) trong một trình duyệt web. Kết quả sẽ được tương tự như hình dưới đây.
    [​IMG]


    Bước 4 - Cài đặt và cấu hình MariaDB
    MariaDB là cơ sở dữ liệu máy chủ phân nhánh của hệ thống quản lý cơ sở dữ liệu quan hệ MYSQL.
    Cài đặt phiên bản mới nhất của MariaDB với lệnh:
    Mã:
    apt-get install mariadb-client mariadb-server -y
    Khi cài đặt xong, khởi động MariaDB:
    Mã:
    systemctl start mysql
    Bây giờ chúng ta sẽ cấu hình tên người dùng và mật khẩu MariaDB với lệnh dưới đây:
    Mã:
    mysql_secure_installation
    Mã:
    Set root password? [Y/n] Y
    New password:
    Re-enter new password:
    
    Remove anonymous users? [Y/n] Y
    ... Success!
    
    Disallow root login remotely? [Y/n] Y
    ... Success!
    
    Remove test database and access to it? [Y/n] Y
    ... Success!
    
    Reload privilege tables now? [Y/n] Y
    ... Success!
    
    
    Đăng nhập vào MariaDB với mật khẩu của bạn đã tạo ở trên và tạo ra một cơ sở dữ liệu mới cho drupal gọi là "drupaldb" và tạo mới user MariaDB/MySQL là "drupaluser" với mật khẩu "123456789012” và cuối cùng sau đó cấp lại quyền truy cập vào cơ sở dữ liệu. Vui lòng chọn một mật khẩu an toàn thay vì "123456789012" đối với cài đặt của bạn!

    Mã:
    mysql -u root -p
    create database drupaldb;
    create user drupaluser@localhost identified by '123456789012';
    grant all privileges on drupaldb.* to drupaluser@localhost identified by '123456789012';
    flush privileges;
    quit;
    
    Cơ sở dữ liệu "drupaldb" với người sử dụng "drupaluser" đã được tạo ra.

    Bước 5 - Tạo ra một chứng chỉ SSL
    Chuyển đến thư mục /etc/nginx và tạo ra một thư mục mới với tên "ssl" cho tập tin cấu hình SSL.
    Mã:
    mkdir -p /etc/nginx/ssl
    cd /etc/nginx/ssl
    
    Sau đó, tạo ra một giấy chứng nhận SSL mới với lệnh openssl dưới đây:
    Mã:
    openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/drupal.key -out /etc/nginx/ssl/drupal.crt
    Điền vào các thông tin được yêu cầu. Tập tin chứng chỉ SSL đã được tạo ra, bây giờ thay đổi quyền truy cập của tập tin quan trọng "drupal.key" đến 600:
    Mã:
    chmod 600 drupal.key
    
    Bước 6 - Cấu hình VirtualHost cho Drupal
    Chúng tôi sẽ cài đặt Drupal 8 trong thư mục "/var/www/drupal8" với tên miền "drupal.vn". Hãy thay thế tên miền trong cài đặt của bạn với tên miền của trang web mà bạn muốn sử dụng cài đặt drupal này. Vì vậy, hãy tạo thư mục:
    Mã:
    mkdir -p /var/www/drupal8
    Sau đó vào thư mục Nginx VirtualHost "/etc/nginx/sites-available/" và tạo ra một tập tin mới "drupal8" với trình biên tập vim:
    Mã:
    cd /etc/nginx/sites-available/
    vim drupal8
    
    Dán cấu hình Nginx cho drupal dưới đây vào file drupal8:
    Mã:
    server {
        server_name drupal.vn;
        root /var/www/drupal8; ## <-- Your only path reference.
    
        listen 80;
        listen [::]:80;
        listen 443 default ssl;
    
        ssl_certificate      /etc/nginx/ssl/drupal.crt;
        ssl_certificate_key  /etc/nginx/ssl/drupal.key;
    
        # Redirect HTTP to HTTPS
        if ($scheme = http) {
            return 301 https://$server_name$request_uri;
        }
    
        location = /favicon.ico {
            log_not_found off;
            access_log off;
        }
    
        location = /robots.txt {
            allow all;
            log_not_found off;
            access_log off;
        }
    
        # Very rarely should these ever be accessed outside of your lan
        location ~* \.(txt|log)$ {
            allow 192.168.0.0/16;
            deny all;
        }
    
        location ~ \..*/.*\.php$ {
            return 403;
        }
    
        location ~ ^/sites/.*/private/ {
            return 403;
        }
    
        # Block access to "hidden" files and directories whose names begin with a
        # period. This includes directories used by version control systems such
        # as Subversion or Git to store control files.
        location ~ (^|/)\. {
            return 403;
        }
    
        location / {
            # try_files $uri @rewrite; # For Drupal <= 6
            try_files $uri /index.php?$query_string; # For Drupal >= 7
        }
    
        location @rewrite {
            rewrite ^/(.*)$ /index.php?q=$1;
        }
    
        # In Drupal 8, we must also match new paths where the '.php' appears in the middle,
        # such as update.php/selection. The rule we use is strict, and only allows this pattern
        # with the update.php front controller.  This allows legacy path aliases in the form of
        # blog/index.php/legacy-path to continue to route to Drupal nodes. If you do not have
        # any paths like that, then you might prefer to use a laxer rule, such as:
        #   location ~ \.php(/|$) {
        # The laxer rule will continue to work if Drupal uses this new URL pattern with front
        # controllers other than update.php in a future release.
        location ~ '\.php$|^/update.php' {
            fastcgi_split_path_info ^(.+?\.php)(|/.*)$;
            #NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
            include fastcgi_params;
            include snippets/fastcgi-php.conf;
            fastcgi_param SCRIPT_FILENAME $request_filename;
            fastcgi_intercept_errors on;
            fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        }
    
        # Fighting with Styles? This little gem is amazing.
        # location ~ ^/sites/.*/files/imagecache/ { # For Drupal <= 6
        location ~ ^/sites/.*/files/styles/ { # For Drpal >= 7
            try_files $uri @rewrite;
        }
    
        location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
            expires max;
            log_not_found off;
        }
    }
    
    Lưu lại và thoát khỏi trình biên tập
    Tập tin Drupal virtual host đã được tạo ra, bây giờ chúng ta phải kích hoạt nó bằng cách tạo ra một liên kết đến thư mục "sites-enabled":
    Mã:
    ln -s /etc/nginx/sites-available/drupal8 /etc/nginx/sites-enabled/
    Kiểm tra cấu hình Nginx và khởi động lại Nginx:
    Mã:
    nginx -t
    systemctl restart nginx
    
    Bước 7 - Cài đặt và cấu hình Drupal
    Vào thư mục drupal8 mà chúng tôi tạo ra trước đó và tải về Drupal với wget.
    Mã:
    cd /var/www/drupal8
    wget https://ftp.drupal.org/files/projects/drupal-8.1.10.tar.gz
    
    Chờ cho đến khi tải xong rồi giải nén, sau đó di chuyển tất cả các file vào thư mục Drupal chính:
    Mã:
    tar -xzvf drupal-8.1.10.tar.gz
    mv drupal-8.1.10/* .
    rm -rf drupal-8.1.10
    
    Từ thư mục chính Drupal, hãy vào thư mục "sites/default" và copy hai file cấu hình "settings.php" và "services.yml":
    Mã:
    cd sites/default
    cp default.settings.php settings.php
    cp default.services.yml services.yml
    
    Sau đó, chúng ta phải tạo một thư mục mới với tên "files" bên trong thư mục "site/default". Dùng lệnh "chmod" để đảm bảo rằng các tập tin cấu hình và thư mục ”files” có quyền writable để cài đặt Drupal:
    Mã:
    mkdir files/
    chmod a+w *
    
    Bây giờ ghé thăm trang web Drupal của bạn (trong trường hợp của tôi là http://drupal.vn) với trình duyệt web, bạn sẽ được chuyển hướng đến kết nối https tự động và trang cài đặt Drupal hiện ra.
    Chọn ngôn ngữ của bạn, tôi sẽ sử dụng "tiếng Anh" ở đây.
    Nhấp vào "Save and continue".
    [​IMG]

    Bây giờ chọn kiểu cài đặt. Bạn có thể sử dụng loại standard hoặc minimal. Tôi sẽ sử dụng "standard".
    Nhấp vào "Save and continue".
    [​IMG]
    Bây giờ bạn sẽ được hiển thị ở trang cấu hình cơ sở dữ liệu. Điền vào các chi tiết cho cơ sở dữ liệu mà chúng tôi đã tạo ra cho Drupal.
    Nhấp vào "Save and continue".
    [​IMG]
    Chờ cho đến khi quá trình cài đặt kết thúc.
    [​IMG]

    Bây giờ chúng ta phải cấu hình các cài đặt trang web như tên trang web, người dùng và mật khẩu cho các admin, địa chỉ email v.v
    Nhấp vào "Save and continue".

    [​IMG]
    Bây giờ Drupal được cài đặt. Bạn sẽ được chuyển đến trang chủ của Drupal.
    [​IMG]

    Bạn có thể thấy một thông báo lỗi về các quyền của các tập tin cấu hình drupal "settings.php" và "services.yml". Chỉ cần thay đổi quyền của chúng với các lệnh sau:
    Mã:
    cd sites/default/
    chmod 644 settings.php services.yml
    
    Bây giờ Drupal 8.1 được cài đặt với Nginx và SSL trên ubuntu 16.04.
     
    #1 quyet1990, 2/11/16
    Sửa lần cuối: 2/11/16

Chia sẻ trang này

Đang tải...