Drupal là một hệ thống quản lý nội dung miễn phí, mã nguồn mở và có thể mở rộng, có thể được cá nhân sử dụng để tạo và quản lý bất kỳ loại trang web nào. Nó được viết bằng PHP và sử dụng MySQL/MariaDB để lưu trữ dữ liệu của mình. Drupal cung cấp một bộ tính năng phong phú có thể được mở rộng bằng hàng nghìn tiện ích bổ sung. Drupal hỗ trợ rất nhiều máy chủ web bao gồm Apache, Nginx, IIS, Lighttpd và cơ sở dữ liệu MySQL, MariaDB, MongoDB, SQLite, PostgreSQL và MS SQL server. Drupal đi kèm với giao diện người dùng web đơn giản và thân thiện với người dùng, cho phép bạn tạo trang web mà không cần bất kỳ kiến thức lập trình nào.
Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách cài đặt Drupal 8 trên máy chủ CentOS 8 và bảo mật nó bằng SSL miễn phí Let's Encrypt.
Sau khi cài đặt, hãy khởi động dịch vụ Nginx, MariaDB và php-fpm và cho phép chúng khởi động sau khi khởi động lại hệ thống bằng lệnh sau:
Trả lời tất cả các câu hỏi như được hiển thị bên dưới:
Sau khi hoàn tất, hãy đăng nhập vào shell MariaDB bằng lệnh sau:
Cung cấp mật khẩu root của bạn khi được nhắc, sau đó tạo cơ sở dữ liệu và người dùng cho Drupal bằng lệnh sau:
Tiếp theo, cấp tất cả các quyền cho drupaldb bằng lệnh sau:
Tiếp theo, flush các đặc quyền và thoát khỏi shell MariaDB bằng lệnh sau:
Sau khi tải xuống, hãy giải nén tệp đã tải xuống bằng lệnh sau:
Tiếp theo, di chuyển thư mục đã giải nén đến thư mục gốc web Nginx bằng lệnh sau:
Tiếp theo, tạo một thư mục để lưu trữ các tệp trang web và đổi tên tệp default.settings.php như hiển thị bên dưới:
Tiếp theo, thay đổi quyền sở hữu thư mục Drupal thành nginx như hiển thị bên dưới:
Thêm các dòng sau:
Lưu và đóng tệp khi bạn hoàn tất. Sau đó, tạo tệp cấu hình máy chủ ảo Nginx cho Drupal:
Thêm các dòng sau:
Lưu và đóng tệp. Sau đó, khởi động lại dịch vụ php-fpm và Nginx để áp dụng các thay đổi:
Trước tiên, cho phép Drupal ghi vào các thư mục tệp công khai và riêng tư bằng lệnh sau:
Tiếp theo, cho phép Drupal gửi email đi bằng lệnh sau:
Tiếp theo, bạn sẽ cần tạo một quy tắc tường lửa để cho phép dịch vụ HTTP và HTTPS từ các mạng bên ngoài. Bạn có thể cho phép bằng lệnh sau:
Để thực hiện, bạn sẽ cần tải xuống máy khách certbot trên máy chủ của mình. Bạn có thể tải xuống và thiết lập quyền chính xác bằng cách chạy lệnh sau:
Bây giờ, hãy chạy lệnh sau để lấy và cài đặt chứng chỉ SSL cho trang web Drupal của bạn.
Lệnh trên sẽ cài đặt tất cả các phụ thuộc bắt buộc trên máy chủ của bạn trước. Sau khi cài đặt, bạn sẽ được yêu cầu cung cấp địa chỉ email và chấp nhận điều khoản dịch vụ như hiển thị bên dưới:
Tiếp theo, bạn sẽ cần chọn có chuyển hướng lưu lượng HTTP sang HTTPS hay không như hiển thị bên dưới:
Nhập 2 và nhấn Enter để tiếp tục. Sau khi quá trình cài đặt hoàn tất, bạn sẽ thấy kết quả sau:
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 sau:
Chọn hồ sơ cài đặt của bạn và nhấp vào nút Lưu và tiếp tục. Bạn sẽ thấy trang sau:
Cung cấp thông tin chi tiết về cơ sở dữ liệu của bạn và nhấp vào nút Lưu và tiếp tục. Bạn sẽ thấy trang sau:
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ẽ thấy bảng điều khiển Drupal của mình trong trang sau:
Xin chúc mừng! bạn đã cài đặt và bảo mật Drupal thành công trên máy chủ CentOS 8.
Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách cài đặt Drupal 8 trên máy chủ CentOS 8 và bảo mật nó bằng SSL miễn phí Let's Encrypt.
Yêu cầu
- Máy chủ chạy CentOS 8.
- Tên miền hợp lệ được trỏ bằng IP máy chủ của bạn
- Mật khẩu gốc được cấu hình trên máy chủ.
Cài đặt Nginx, MariaDB và PHP
Trước khi bắt đầu, bạn sẽ cần cài đặt máy chủ LEMP trên máy chủ của mình. Bạn có thể cài đặt bằng cách chạy lệnh sau:
Mã:
dnf install nginx mariadb-server php php-fpm php-cli php-mbstring php-gd php-xml php-curl php-mysqlnd php-pdo php-json php-opcache -y
Mã:
systemctl start nginx
systemctl start php-fpm
systemctl start mariadb
systemctl bật nginx
systemctl bật php-fpm
systemctl bật mariadb
Cấu hình Cơ sở dữ liệu
Theo mặc định, MariaDB không được bảo mật nên bạn sẽ cần bảo mật nó. Bạn có thể bảo mật nó bằng cách chạy 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 root? [Y/n] CóMậ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] CóKhông cho phép root đăng nhập từ xa? [Y/n] CóXóa cơ sở dữ liệu thử nghiệm và quyền truy cập vào cơ sở dữ liệu đó? [Y/n] CóTả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 CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
MariaDB [(none)]> CREATE USER drupal@localhost IDENTIFIED BY "password";
Mã:
MariaDB [(none)]> GRANT ALL ON drupaldb.* TO drupal@localhost IDENTIFIED BY "password";
Mã:
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;
Tải xuống Drupal
Đầu tiên, bạn sẽ cần tải xuống phiên bản Drupal mới nhất từ trang web chính thức của họ. Bạn có thể tải xuống bằng lệnh sau:
Mã:
wget https://ftp.drupal.org/files/projects/drupal-8.7.10.tar.gz
Mã:
tar -xvzf drupal-8.7.10.tar.gz
Mã:
mv drupal-8.7.10 /var/www/html/drupal
Mã:
mkdir /var/www/html/drupal/sites/default/files
cp /var/www/html/drupal/sites/default/default.settings.php /var/www/html/drupal/sites/default/settings.php
Mã:
chown -R nginx:nginx /var/www/html/drupal/
Cấu hình Nginx cho Drupal
Trước tiên, tạo tệp cấu hình php-fpm cho Drupal bằng lệnh sau:
Mã:
nano /etc/php-fpm.d/drupal.conf
Mã:
[drupal]user = nginxgroup = nginxlisten.owner = nginxlisten.group = nginxlisten = /run/php-fpm/drupal.sockpm = ondemandpm.max_children = 50pm.process_idle_timeout = 10 giâypm.max_requests = 500chdir = /
Mã:
nano /etc/nginx/conf.d/drupal.conf
Mã:
server { listen 80; server_name example.com; root /var/www/html/drupal; access_log /var/log/nginx/example.com.access.log; error_log /var/log/nginx/example.com.error.log; location = /favicon.ico { log_not_found tắt; access_log tắt; } location = /robots.txt { cho phép tất cả; log_not_found tắt; access_log tắt; } location ~ \..*/.*\.php$ { trả về 403; } location ~ ^/sites/.*/private/ { trả về 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$ { từ chối tất cả; } location ~ (^|/)\. { trả về 403; } location / { try_files $uri /index.php?$query_string; } location @rewrite { rewrite ^/(.*)$ /index.php?q=$1; } location ~ /vendor/.*\.php$ { deny all; return 404; } location ~ '\.php$|^/update.php' { fastcgi_split_path_info ^(.+?\.php)(|/.*)$; include fastcgi_params; # Chặn các cuộc tấn công httpoxy. Xem https://httpoxy.org/. fastcgi_param HTTP_PROXY ""; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param QUERY_STRING $query_string; fastcgi_intercept_errors on; fastcgi_pass unix:/run/php-fpm/drupal.sock; } location ~ ^/sites/.*/files/styles/ { # Đối với Drupal >= 7 try_files $uri @rewrite; } # Xử lý các tệp riêng tư thông qua Drupal. Đường dẫn của tệp riêng tư có thể đi kèm # với tiền tố ngôn ngữ. location ~ ^(/[a-z\-]+)?/system/files/ { # Đối với Drupal >= 7 try_files $uri /index.php?$query_string; } location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ { try_files $uri @rewrite; expires max; log_not_found off; }}
Mã:
systemctl restart php-fpm
systemctl restart nginx
Cấu hình SELinux và Tường lửa
Theo mặc định, SELinux được bật trong CentOS 8. Vì vậy, bạn sẽ cần cấu hình SELinux để Drupal hoạt động chính xác.Trước tiên, cho phép Drupal ghi vào các thư mục tệp công khai và riêng tư bằng lệnh sau:
Mã:
semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/drupal(/.*)?"
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/drupal/sites/default/settings.php'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/drupal/sites/default/files'
restorecon -Rv /var/www/html/drupal
restorecon -v /var/www/html/drupal/sites/default/settings.php
restorecon -Rv /var/www/html/drupal/sites/default/files
Mã:
setsebool -P httpd_can_sendmail on
Mã:
firewall-cmd --permanent --add-service=http
Mã:
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
Bảo mật Drupal bằng Let's Encrypt SSL
Drupal hiện đã được cài đặt và cấu hình. Đã đến lúc bảo mật bằng Let's Encrypt SSL miễn phí.Để thực hiện, bạn sẽ cần tải xuống máy khách certbot trên máy chủ của mình. Bạn có thể tải xuống và thiết lập quyền chính xác bằng cách chạy lệnh sau:
Mã:
wget https://dl.eff.org/certbot-auto
mv certbot-auto /usr/local/bin/certbot-auto
chown root /usr/local/bin/certbot-auto
chmod 0755 /usr/local/bin/certbot-auto
Mã:
certbot-auto --nginx -d example.com
Mã:
Lưu nhật ký gỡ lỗi vào /var/log/letsencrypt/letsencrypt.logCác plugin đã chọn: Authenticator apache, Installer apacheNhậ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 example.comĐang chờ xác minh...Dọn dẹp các thử tháchTriển khai chứng chỉ cho VirtualHost /etc/nginx/conf.d/drupal.conf
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ã:
Đang chuyển hướng tất cả lưu lượng truy cập trên cổng 80 sang ssl trong /etc/nginx/conf.d/drupal.conf- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Xin chúc mừng! Bạn đã bật thành công https://example.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=example.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/example.com/fullchain.pem Tệp khóa của bạn đã được lưu tại: /etc/letsencrypt/live/example.com/privkey.pem Chứng chỉ của bạn sẽ hết hạn vào ngày 23-03-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-auto 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-auto 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 trang web Drupal
Bây giờ, hãy mở trình duyệt web của bạn và nhập URL . Bạn sẽ được chuyển hướng đến trang sau: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 sau:
Chọn hồ sơ cài đặt của bạn và nhấp vào nút Lưu và tiếp tục. Bạn sẽ thấy trang sau:
Cung cấp thông tin chi tiết về cơ sở dữ liệu của bạn và nhấp vào nút Lưu và tiếp tục. Bạn sẽ thấy trang sau:
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ẽ thấy bảng điều khiển Drupal của mình trong trang sau:
Xin chúc mừng! bạn đã cài đặt và bảo mật Drupal thành công trên máy chủ CentOS 8.