Tạo Mẫu VPS với Drupal 9 trên Centos 8

Chúng tôi tiếp tục mở rộng thị trường của mình. Gần đây chúng tôi đã nói với bạn cách đã tạo một hình ảnh Gitlab, và tuần này Drupal đã xuất hiện trên thị trường của chúng tôi.

Chúng tôi cho bạn biết lý do tại sao chúng tôi chọn anh ấy và hình ảnh được tạo ra như thế nào.

Tạo Mẫu VPS với Drupal 9 trên Centos 8

Drupal — một nền tảng thuận tiện và mạnh mẽ để tạo bất kỳ loại trang web nào: từ microsite và blog đến các dự án xã hội lớn, cũng được sử dụng làm nền tảng cho các ứng dụng web, viết bằng PHP và sử dụng cơ sở dữ liệu quan hệ làm nơi lưu trữ dữ liệu.

Drupal 9 bao gồm tất cả các tính năng được giới thiệu trong phiên bản 8.9. Điểm khác biệt chính giữa phiên bản 9 và phiên bản 8 là nền tảng này sẽ tiếp tục nhận được các bản cập nhật và sửa lỗi bảo mật sau tháng 2021 năm 9. Phiên bản 8 cũng đơn giản hóa quá trình cập nhật, giúp quá trình nâng cấp từ phiên bản XNUMX trở nên dễ dàng hơn.

Yêu cầu máy chủ

Để sử dụng Drupal, nên sử dụng RAM 2 GB và 2 lõi CPU.

Các tệp Drupal chính chiếm khoảng 100 MB, ngoài ra, bạn sẽ cần dung lượng để lưu trữ hình ảnh, cơ sở dữ liệu, chủ đề, mô-đun bổ sung và bản sao lưu, điều này sẽ phụ thuộc vào kích thước trang web của bạn.

Drupal 9 yêu cầu PHP 7.4 trở lên với giới hạn tối thiểu (memory_limit) cho bộ nhớ 64 MB; nếu sử dụng thêm mô-đun, nên cài đặt 128 MB.

Drupal có thể sử dụng Apache hoặc Nginx làm máy chủ web và MySQL, PostgreSQL hoặc SQLite làm cơ sở dữ liệu.

Chúng tôi sẽ cài đặt Drupal bằng Nginx và MySQL.

Cài đặt

Hãy cập nhật các gói đã cài đặt lên phiên bản mới nhất:

sudo dnf update -y

Hãy thêm quyền vĩnh viễn cho lưu lượng truy cập đến các cổng http/80 và https/443:

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https

Hãy áp dụng các quy tắc tường lửa mới:

sudo systemctl reload firewalld

Hãy cài đặt Nginx:

sudo dnf install nginx -y

Hãy bắt đầu và kích hoạt máy chủ Nginx:

sudo systemctl start nginx
sudo systemctl enable nginx

Vì kho lưu trữ Centos chính hiện đang sử dụng PHP 7.2, hãy thêm kho lưu trữ REMI với PHP 7.4 (phiên bản tối thiểu cho Drupal 9).
Để thực hiện việc này, hãy thêm kho lưu trữ EPEL (được kho lưu trữ REMI yêu cầu):

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

Hãy thêm kho lưu trữ REMI:

sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm

Hãy kích hoạt mô-đun php:remi-7.4 để cài đặt php 7.4:

sudo dnf module enable php:remi-7.4 -y

Cài đặt php-fpm và php-cli:

sudo dnf install -y php-fpm php-cli

Hãy cài đặt các mô-đun PHP cần thiết để Drupal hoạt động:

sudo dnf install -y php-mysqlnd php-date php-dom php-filter php-gd php-hash php-json php-pcre php-pdo php-session php-simplexml php-spl php-tokenizer php-xml

Chúng tôi cũng sẽ cài đặt các mô-đun opcache mbstring PHP được đề xuất:

sudo dnf install -y php-mbstring php-opcache

Hãy cài đặt máy chủ MySQL:

sudo dnf install mysql-server -y

Hãy bật và khởi động máy chủ MySQL:

sudo systemctl start mysqld
sudo systemctl enable mysqld

Vì chúng tôi đang tạo mẫu cho VDS và chúng có thể chậm nên chúng tôi sẽ thêm độ trễ khởi động mysqld là 30 giây, nếu không, có thể xảy ra sự cố với máy chủ khởi động trong quá trình khởi động hệ thống ban đầu:

sudo sed -i '/Group=mysql/a 
ExecStartPre=/bin/sleep 30
' /usr/lib/systemd/system/mysqld.service

Hãy thay đổi nhóm và người dùng mà nginx sẽ chạy bằng cách thực hiện các thay đổi đối với /etc/php-fpm.d/www.conf:

sudo sed -i --follow-symlinks 's/user = apache/user = nginx/g' /etc/php-fpm.d/www.conf
sudo sed -i --follow-symlinks 's/group = apache/group = nginx/g' /etc/php-fpm.d/www.conf

Hãy thay đổi chủ sở hữu của thư mục phiên PHP thành nginx cho phù hợp:

sudo chown -R nginx. /var/lib/php/session

Hãy xóa các dòng có nhận xét khỏi tệp cấu hình /etc/nginx/nginx.conf (để không có trình kích hoạt kép cho sed):

sudo sed -i -e '/^[ t]*#/d'  /etc/nginx/nginx.conf

Thêm cài đặt nén gzip vào /etc/nginx/nginx.conf

sudo sed -i '/types_hash_max_size 2048;/a 

    gzip on;
    gzip_static on;
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript image/x-icon image/svg+xml application/x-font-ttf;
    gzip_comp_level 9;
    gzip_proxied any;
    gzip_min_length 1000;
    gzip_disable "msie6";
    gzip_vary on; 
' /etc/nginx/nginx.conf

Hãy thêm cài đặt của tệp chỉ mục index.php vào /etc/nginx/nginx.conf:

sudo sed -i '/        root         /usr/share/nginx/html;/a 
        index index.php index.html index.htm;
' /etc/nginx/nginx.conf

Hãy thêm cài đặt cho máy chủ mặc định: Xử lý PHP thông qua ổ cắm php-fpm, vô hiệu hóa nhật ký cho các tệp tĩnh, tăng thời gian hết hạn, vô hiệu hóa quyền truy cập và nhật ký lỗi cho favicon.ico và robots.txt, đồng thời từ chối quyền truy cập vào .ht tập tin cho tất cả mọi người:

sudo sed -i '/        location / {/a 
		try_files $uri $uri/ /index.php?q=$uri&$args;
        }
    
        location ~* ^.+.(js|css|png|jpg|jpeg|gif|ico|woff)$ {
        access_log off;
        expires max;
        }
    
        location ~ .php$ {
        try_files  $uri =404;
        fastcgi_pass   unix:/run/php-fpm/www.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_intercept_errors on;
        fastcgi_ignore_client_abort off;
        fastcgi_connect_timeout 60;
        fastcgi_send_timeout 180;
        fastcgi_read_timeout 180;
        fastcgi_buffer_size 128k;
        fastcgi_buffers 4 256k;
        fastcgi_busy_buffers_size 256k;
        fastcgi_temp_file_write_size 256k;
        }
    
        location = /favicon.ico {
        log_not_found off;
        access_log off;
        }
    
        location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
        }
    
        location ~ /.ht {
        deny all;' /etc/nginx/nginx.conf

Cần cài đặt wget để cài đặt certbot:

sudo dnf install wget -y

Tải xuống tệp thực thi certbot từ bên ngoài:

cd ~
wget https://dl.eff.org/certbot-auto

Di chuyển certbot sang /usr/local/bin/:

mv certbot-auto /usr/local/bin/certbot-auto

Và hãy gán quyền với tư cách là chủ sở hữu để root:

chown root /usr/local/bin/certbot-auto
chmod 0755 /usr/local/bin/certbot-auto

Hãy cài đặt các phần phụ thuộc của certbot và ở giai đoạn này hãy làm gián đoạn công việc của nó (Câu trả lời: Y, c):

certbot-auto

Hãy tải xuống kho lưu trữ với phiên bản mới nhất của Drupal 9 từ ngoại vi:

cd ~
wget https://www.drupal.org/download-latest/tar.gz

Cài đặt tar để giải nén kho lưu trữ:

sudo dnf install tar -y

Hãy xóa các tệp mặc định trong thư mục /usr/share/nginx/html/:

rm -rf /usr/share/nginx/html/*

Hãy giải nén các tập tin vào thư mục máy chủ web:

tar xf tar.gz -C /usr/share/nginx/html/

Hãy di chuyển các tệp từ thư mục con sang thư mục gốc của máy chủ web:

mv /usr/share/nginx/html/drupal-9.0.7/* /usr/share/nginx/html/

Hãy xóa thư mục con:

rm -rf /usr/share/nginx/html/drupal-9.0.7

Hãy xóa kho lưu trữ với các tập tin cài đặt:

rm -f ./tar.gz

Hãy chỉ định chủ sở hữu của các tệp nginx:

chown -R nginx. /usr/share/nginx/html

Ở giai đoạn này, chúng tôi sẽ tắt máy chủ và chụp ảnh nhanh:

shutdown -h now

Sau khi khởi chạy VDS từ ảnh chụp nhanh, chúng tôi sẽ thực hiện thiết lập ban đầu của máy chủ MySQL bằng cách chạy tập lệnh:

mysql_secure_installation

Hãy kích hoạt trình xác thực mật khẩu:

Would you like to setup VALIDATE PASSWORD component? : y

Hãy đặt mật khẩu cho người dùng root MySQL:

New password:
Re-enter new password:

Hãy xóa người dùng ẩn danh:

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y

Hãy ngăn chặn root kết nối từ xa:

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y

Hãy xóa cơ sở dữ liệu thử nghiệm:

Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y

Hãy tải lại các bảng đặc quyền:

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y

Sau đó, để hoàn tất quá trình cài đặt, chúng ta có thể đi tới vps_ip_address
Tại địa chỉ này chúng ta sẽ thấy trang cài đặt Drupal.

Hãy chọn ngôn ngữ để sử dụng. Ví dụ: tiếng Nga. Nhấp vào “Lưu và tiếp tục”

Hãy chọn hồ sơ cài đặt (bản demo chỉ được sử dụng để làm quen với hệ thống). Trong trường hợp của chúng tôi, hãy để nó là "tiêu chuẩn".

Ở trang tiếp theo, chúng tôi sẽ đặt tên cho cơ sở dữ liệu, ví dụ: “drupal”. Hãy chỉ ra tên người dùng cơ sở dữ liệu gốc và mật khẩu được cấp cho anh ta khi chạy mysql_secure_installation. Nhấp vào Lưu Lưu và Tiếp tục.

Hãy đợi quá trình cài đặt và cập nhật bản dịch hoàn tất (quá trình này có thể mất vài phút).

Chúng tôi sẽ cho biết tên của trang web, đặt email của trang web (thay mặt cho thông báo trang web nào sẽ được gửi), thông tin đăng nhập, mật khẩu và email của tài khoản quản trị viên Drupal. Chúng tôi cũng sẽ đặt quốc gia và múi giờ trong cài đặt khu vực. Và hoàn tất quá trình cài đặt bằng cách nhấp vào “Save and Continue”.

Sau này, bạn có thể truy cập bảng điều khiển với thông tin đăng nhập và mật khẩu của quản trị viên Drupal đã tạo.

Thiết lập HTTPS (tùy chọn)

Để định cấu hình HTTPS, VDS phải có tên DNS hợp lệ, hãy chỉ định trong

/etc/nginx/nginx.conf

trong phần máy chủ tên máy chủ (ví dụ):

server_name  domainname.ru;

Hãy khởi động lại nginx:

service nginx restart

Hãy khởi chạy certbot:

sudo /usr/local/bin/certbot-auto --nginx

Nhập e-mail của bạn, đồng ý với các điều khoản dịch vụ (A), Đăng ký nhận bản tin (tùy chọn) (N), chọn tên miền mà bạn muốn cấp chứng chỉ (Enter cho mọi người).

Nếu mọi thứ không có lỗi, chúng ta sẽ thấy thông báo về việc cấp chứng chỉ và cấu hình máy chủ thành công:

Congratulations! You have successfully enabled ...

Sau đó, các kết nối tới cổng 80 sẽ được chuyển hướng đến 443 (https).

Thêm vào /etc/crontab để tự động cập nhật chứng chỉ:

# Cert Renewal
30 2 * * * root /usr/local/bin/certbot-auto renew --post-hook "nginx -s reload"

Thiết lập Bảo mật máy chủ đáng tin cậy (được khuyến nghị)

Cài đặt này nhằm mục đích giải pháp cho vấn đề liên quan đến việc xác định base_url động và được thiết kế để ngăn chặn các cuộc tấn công Tiêu đề HTTP HOST (khi trang web của bạn cho rằng đó là của người khác).

Để thực hiện việc này, bạn cần chỉ định tên miền đáng tin cậy cho trang web trong tệp cài đặt.

Trong tập tin

/usr/share/nginx/html/sites/default/settings.php Hãy bỏ ghi chú hoặc thêm cài đặt với các mẫu tên trang web thực tế, ví dụ:

$settings['trusted_host_patterns'] = [
  '^www.mydomain.ru$',
];

Cài đặt PHP APCu (ĐỀ XUẤT)

Drupal hỗ trợ APCu - Bộ nhớ đệm người dùng PHP thay thế, phiên bản 8 và 9 tận dụng APCu làm bộ nhớ đệm cục bộ ngắn hạn nhiều hơn các phiên bản trước. Kích thước bộ đệm mặc định (32 MB) phù hợp với hầu hết các trang web và không thể vượt quá 512 MB.

Để kích hoạt, hãy cài đặt mô-đun PHP APCu:

dnf -y install php-pecl-apcu

Khởi động lại nginx và php-fpm:

service nginx restart
service php-fpm restart

Nếu bạn sử dụng tiếng Nga và APCu với kích thước bộ nhớ được đề xuất cho bộ đệm, bạn có thể thấy cảnh báo trong bảng điều khiển rằng kích thước bộ nhớ được phân bổ cho bộ đệm khác với kích thước được đề xuất, nhưng trên thực tế, mọi thứ đều hoạt động chính xác, và cảnh báo không chính xác rất có thể sẽ được sửa trong các bản cập nhật tiếp theo.

Hoặc nếu cảnh báo làm bạn đau mắt, bạn có thể sử dụng bản vá tương ứng từ bên ngoài.

Chúng tôi muốn nhắc bạn rằng bạn cũng có thể tạo một hình ảnh cho chúng tôi

Có ba lựa chọn về cách tham gia.

Hãy tự chuẩn bị hình ảnh và nhận 3000 rúp vào số dư của bạn

Nếu bạn sẵn sàng lao vào trận chiến ngay lập tức và tạo ra hình ảnh mà bạn đang thiếu, chúng tôi sẽ ghi có cho bạn 3000 rúp vào số dư nội bộ của bạn mà bạn có thể chi tiêu trên máy chủ.

Cách tạo hình ảnh của riêng bạn:

  1. Tạo một tài khoản với chúng tôi trên website
  2. Hãy cho bộ phận hỗ trợ biết rằng bạn sắp tạo và thử nghiệm hình ảnh
  3. Chúng tôi sẽ ghi có cho bạn 3000 rúp và cho phép bạn tạo ảnh chụp nhanh
  4. Đặt mua máy chủ ảo với hệ điều hành sạch
  5. Cài đặt phần mềm trên VPS này và cấu hình nó
  6. Viết hướng dẫn hoặc kịch bản triển khai phần mềm
  7. Tạo ảnh chụp nhanh cho máy chủ được định cấu hình
  8. Đặt mua một máy chủ ảo mới bằng cách chọn ảnh chụp nhanh đã tạo trước đó trong danh sách thả xuống “Mẫu máy chủ”
  9. Nếu máy chủ được tạo thành công, hãy chuyển tài liệu nhận được ở giai đoạn 6 sang bộ phận hỗ trợ kỹ thuật
  10. Nếu có lỗi, bạn có thể kiểm tra với bộ phận hỗ trợ để tìm nguyên nhân và lặp lại quá trình thiết lập

Dành cho chủ doanh nghiệp: cung cấp phần mềm của bạn

Nếu bạn là nhà phát triển phần mềm được triển khai và sử dụng trên VPS thì chúng tôi có thể đưa bạn vào thị trường. Đây là cách chúng tôi có thể giúp bạn mang lại khách hàng, lưu lượng truy cập và nhận thức mới. Viết cho chúng tôi

Hãy cho chúng tôi biết trong phần nhận xét bạn đang thiếu hình ảnh nào?

Và chúng tôi sẽ tự chuẩn bị nó

Tạo Mẫu VPS với Drupal 9 trên Centos 8

Tạo Mẫu VPS với Drupal 9 trên Centos 8

Nguồn: www.habr.com