Drupal là một hệ thống quản lý nội dung mã nguồn mở và miễn phí giúp bạn tạo và phân phối nội dung kỹ thuật số cho web và điện thoại di động. Nó được viết bằng PHP và được nhiều tổ chức trên khắp thế giới sử dụng. Với Drupal, bạn có thể tạo nhiều loại trang web khác nhau, từ các blog nhỏ đến trang web doanh nghiệp lớn. Nó cung cấp giao diện dễ sử dụng và các công cụ chỉnh sửa mạnh mẽ để quản lý nội dung.
Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách cài đặt Drupal với Nginx và bảo mật bằng Let's Encrypt SSL trên Ubuntu 20.04.
Sau khi tất cả các gói được cài đặt, hãy chỉnh sửa tệp php.ini và điều chỉnh một số cài đặt:
Thay đổi các dòng sau:
Lưu và đóng tệp khi bạn hoàn tất.
Trả lời tất cả các câu hỏi như hiển thị bên dưới:
Sau khi MariaDB được bảo mật, hãy đăng nhập vào shell MariaDB bằng lệnh sau:
Cung cấp mật khẩu root MariaDB của bạn rồi tạo cơ sở dữ liệu và người dùng cho Drupal:
Tiếp theo, cấp tất cả các đặc quyền cho cơ sở dữ liệu Drupal bằng lệnh sau:
Tiếp theo, xóa các đặc quyền và thoát khỏi shell MariaDB bằng lệnh sau:
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.
Sau khi tải xuống hoàn tất, hãy giải nén tệp đã tải xuống bằng lệnh sau:
Tiếp theo, đổi tên thư mục đã giải nén thành drupal và cấp quyền thích hợp bằng lệnh sau:
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.
Thêm các dòng sau:
Lưu và đóng tệp, sau đó tạo liên kết tượng trưng đến thư mục sites-enabled:
Tiếp theo, đặt hash_bucket_size trong tệp cấu hình mặc định của Nginx:
Thêm dòng sau bên dưới "http {"
Lưu và đóng tệp, sau đó kiểm tra Nginx xem có lỗi cú pháp nào không:
Bạn sẽ nhận được kết quả sau:
Tiếp theo, khởi động lại dịch vụ Nginx để áp dụng các thay đổi:
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.
Tiếp theo, hãy cập nhật kho lưu trữ và cài đặt máy khách Certbot bằng lệnh sau:
Sau khi máy khách Certbot được cài đặt, hãy chạy lệnh sau để tải xuống và cài đặt Let's Encrypt SSL cho trang web của bạn:
Bạn sẽ được nhắc cung cấp email hợp lệ và chấp nhận điều khoản dịch vụ như hiển thị bên dưới:
Tiếp theo, chọn có chuyển hướng lưu lượng HTTP sang HTTPS hay không:
Nhập 2 và nhấn Enter để hoàn tất cài đặt:
Tại thời điểm này, trang web Drupal của bạn được bảo mật bằng Let's Encrypt SSL.
Chọn ngôn ngữ mong muốn và nhấp vào nút Lưu và tiếp tục. Bạn sẽ thấy trang hồ sơ cài đặt:
Chọn hồ sơ cài đặt mong muốn và nhấp vào nút Lưu và tiếp tục. Bạn sẽ thấy trang cấu hình Cơ sở dữ liệu:
Nhấp vào nút Lưu và tiếp tục. Bạn sẽ thấy trang Cấu hình trang web:
Cung cấp tên trang web, tên người dùng quản trị, mật khẩu và nhấp vào nút Lưu và tiếp tục. Bạn sẽ được chuyển hướng đến bảng điều khiển mặc định của Drupal trong trang sau:
Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách cài đặt Drupal với Nginx và bảo mật bằng Let's Encrypt SSL trên Ubuntu 20.04.
Điều kiện tiên quyết
- Một máy chủ chạy Ubuntu 20.04.
- Một tên miền hợp lệ được trỏ đến máy chủ của bạn.
- Một mật khẩu gốc được cấu hình trên máy chủ của bạn.
Cài đặt LEMP Server
Trước tiên, bạn sẽ cần cài đặt máy chủ web Nginx, cơ sở dữ liệu MariaDB, PHP và các tiện ích mở rộng bắt buộc khác vào máy chủ của mình. Bạn có thể cài đặt tất cả chúng bằng lệnh sau:
Mã:
apt-get install nginx mariadb-server php7.4 php7.4-fpm php7.4-common php7.4-mysql php7.4-gmp php7.4-curl php7.4-intl php7.4-mbstring php7.4-xmlrpc php7.4-gd php7.4-xml php7.4-cli php7.4-zip -y
Mã:
nano /etc/php/7.4/fpm/php.ini
Mã:
short_open_tag = Oncgi.fix_pathinfo=0memory_limit = 256Mupload_max_filesize = 100Mmax_execution_time = 300date.timezone = America/Chicago
Cấu hình Cơ sở dữ liệu MariaDB
Trước tiên, hãy bảo mật cài đặt MariaDB và đặt mật khẩu gốc MariaDB bằng lệnh sau:
Mã:
mysql_secure_installation
Mã:
Nhập mật khẩu hiện tại cho root (nhập nếu không có):Đặt mật khẩu gốc? [Y/n] YMật khẩu mới:Nhập lại mật khẩu mới:Xóa người dùng ẩn danh? [Y/n] YKhông cho phép đăng nhập root từ xa? [Y/n] YXóa cơ sở dữ liệu thử nghiệm và truy cập vào cơ sở dữ liệu đó? [Y/n] YTải lại bảng đặc quyền ngay bây giờ? [Y/n] Y
Mã:
mysql -u root -p
Mã:
MariaDB [(none)]> CREATE DATABASE drupaldb;
MariaDB [(none)]> CREATE USER 'drupal'@'localhost' IDENTIFIED BY 'password';
Mã:
MariaDB [(none)]> GRANT ALL ON drupaldb.* TO 'drupal'@'localhost' WITH GRANT OPTION;
Mã:
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;
Tải xuống Drupal
Tại thời điểm viết hướng dẫn này, phiên bản Drupal mới nhất là 8.8.5. Bạn có thể tải xuống thư mục gốc web Nginx bằng lệnh sau:
Mã:
cd /var/www/html/
wget https://ftp.drupal.org/files/projects/drupal-8.8.5.tar.gz
Mã:
tar -xvzf drupal-8.8.5.tar.gz
Mã:
mv drupal-8.8.5 drupal
chown -R www-data:www-data drupal
chmod -R 755 drupal
Cấu hình Nginx cho Drupal
Tiếp theo, tạo tệp cấu hình máy chủ ảo Nginx cho drupal bằng lệnh sau:
Mã:
nano /etc/nginx/sites-available/drupal
Mã:
server { listen 80; listen [::]:80; root /var/www/html/drupal; index index.php index.html index.htm; server_name drupal.linuxbuz.com; client_max_body_size 100M; autoindex off; location ~ \..*/.*\.php$ { return 403; } location ~ ^/sites/.*/private/ { return 403; } # Chặn quyền truy cập vào các tập lệnh trong thư mục tệp site location ~ ^/sites/[^/]+/files/.*\.php$ { deny all; } location ~ (^|/)\. { return 403; } location / { try_files $uri /index.php?$query_string; } location @rewrite { rewrite ^/(.*)$ /index.php?q=$1; } # Không cho phép truy cập trực tiếp vào các tệp PHP trong thư mục nhà cung cấp. vị trí ~ /vendor/.*\.php$ { từ chối tất cả; trả về 404; } vị trí ~ '\.php$|^/update.php' { bao gồm các đoạn mã/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.4-fpm.sock; fastcgi_param TỆP_KẾ_HỆ_TIN $document_root$fastcgi_script_name; bao gồm fastcgi_params; } vị trí ~ ^/sites/.*/files/styles/ { # Đối với Drupal >= 7 tệp_thử $uri @rewrite; } vị trí ~ ^(/[a-z\-]+)?/system/files/ { # Đối với Drupal >= 7 tệp_thử $uri /index.php?$query_string; }}
Mã:
ln -s /etc/nginx/sites-available/drupal /etc/nginx/sites-enabled/
Mã:
nano /etc/nginx/nginx.conf
Mã:
server_names_hash_bucket_size 64;
Mã:
nginx -t
Mã:
nginx: tệp cấu hình /etc/nginx/nginx.conf cú pháp là oknginx: tệp cấu hình Kiểm tra /etc/nginx/nginx.conf thành công
Mã:
systemctl restart nginx
Bảo mật Drupal bằng Let's Encrypt SSL
Bạn nên bảo mật Drupal bằng Let's Encrypt SSL. Trước tiên, hãy thêm kho lưu trữ Certbot bằng lệnh sau:
Mã:
add-apt-repository ppa:ahasenack/certbot-tlssni01-1875471
Mã:
apt-get update -y
apt-get install certbot python3-certbot-nginx -y
Mã:
certbot --nginx -d drupal.linuxbuz.com
Mã:
Lưu nhật ký gỡ lỗi vào /var/log/letsencrypt/letsencrypt.logCác plugin đã chọn: Authenticator nginx, Installer nginxNhập địa chỉ email (dùng để gia hạn khẩn cấp và thông báo bảo mật) (Nhập 'c' đểhủy): [emailprotected]- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Vui lòng đọc Điều khoản dịch vụ tạihttps://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. Bạn phảiđồng ý để đăng ký với máy chủ ACME tạihttps://acme-v02.api.letsencrypt.org/directory- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -(A)gree/(C)ancel: A- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Bạn có sẵn lòng chia sẻ địa chỉ email của mình với Electronic Frontier Foundation, đối tác sáng lập của dự án Let's Encrypt và tổ chức phi lợi nhuận phát triển Certbot không? Chúng tôi muốn gửi cho bạn email về công việc của chúng tôimã hóa web, tin tức EFF, các chiến dịch và các cách hỗ trợ tự do kỹ thuật số.- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -(C)ó/(K)o: CNhận chứng chỉ mớiThực hiện các thử thách sau:Thử thách http-01 cho drupal.linuxbuz.comĐang chờ xác minh...Đang dọn dẹp các thử tháchTriển khai chứng chỉ cho VirtualHost /etc/nginx/sites-enabled/drupal
Mã:
Vui lòng chọn có chuyển hướng lưu lượng HTTP sang HTTPS hay không, xóa quyền truy cập HTTP.- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -1: Không chuyển hướng - Không thực hiện thêm bất kỳ thay đổi nào đối với cấu hình máy chủ web.2: Chuyển hướng - Chuyển hướng tất cả các yêu cầu đến quyền truy cập HTTPS an toàn. Chọn tùy chọn này chocác trang web mới hoặc nếu bạn tin tưởng rằng trang web của mình hoạt động trên HTTPS. Bạn có thể hoàn tácthay đổi này bằng cách chỉnh sửa cấu hình máy chủ web của mình.- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Chọn số thích hợp [1-2] rồi [enter] (nhấn 'c' để hủy): 2
Mã:
Chuyển hướng tất cả lưu lượng truy cập trên cổng 80 sang ssl trong /etc/nginx/sites-enabled/drupal- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Xin chúc mừng! Bạn đã bật thành công https://drupal.linuxbuz.comBạn nên kiểm tra cấu hình của mình tại:https://www.ssllabs.com/ssltest/analyze.html?d=drupal.linuxbuz.com- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -LƯU Ý QUAN TRỌNG: - Xin chúc mừng! Chứng chỉ và chuỗi của bạn đã được lưu tại: /etc/letsencrypt/live/drupal.linuxbuz.com/fullchain.pem Tệp khóa của bạn đã được lưu tại: /etc/letsencrypt/live/drupal.linuxbuz.com/privkey.pem Chứng chỉ của bạn sẽ hết hạn vào ngày 12-08-2020. Để có phiên bản mới hoặc đã chỉnh sửa của chứng chỉ này trong tương lai, chỉ cần chạy lại certbot với tùy chọn "certonly". Để gia hạn không tương tác *tất cả* chứng chỉ của bạn, hãy chạy "certbot renew" - Nếu bạn thích Certbot, vui lòng cân nhắc hỗ trợ công việc của chúng tôi bằng cách: Quyên góp cho ISRG / Let's Encrypt: https://letsencrypt.org/donate Quyên góp cho EFF: https://eff.org/donate-le
Truy cập Trình hướng dẫn cài đặt web Drupal
Bây giờ, hãy mở trình duyệt web của bạn và nhập URL https://drupal.linuxbuz.com. Bạn sẽ được chuyển hướng đến trang lựa chọn ngôn ngữ Drupal:Chọn ngôn ngữ mong muốn và nhấp vào nút Lưu và tiếp tục. Bạn sẽ thấy trang hồ sơ cài đặt:
Chọn hồ sơ cài đặt mong muốn và nhấp vào nút Lưu và tiếp tục. Bạn sẽ thấy trang cấu hình Cơ sở dữ liệu:
Nhấp vào nút Lưu và tiếp tục. Bạn sẽ thấy trang Cấu hình trang web:
Cung cấp tên trang web, tên người dùng quản trị, mật khẩu và nhấp vào nút Lưu và tiếp tục. Bạn sẽ được chuyển hướng đến bảng điều khiển mặc định của Drupal trong trang sau: