在 Centos 9 上使用 Drupal 8 創建 VPS 模板

我們繼續擴大我們的市場。 我們最近討論瞭如何 製作了一個 Gitlab 鏡像,本週 Drupal 出現在我們的市場中。

我們講述為​​什麼選擇它以及圖像是如何創建的。

在 Centos 9 上使用 Drupal 8 創建 VPS 模板

Drupal的 是一個方便而強大的平台,可用於創建任何類型的網站:從微型網站和博客到大型社交項目,它也用作 Web 應用程序的基礎,用 PHP 編寫並使用關係數據庫作為數據存儲。

Drupal 9 包含版本 8.9 中引入的所有功能。 版本 9 和版本 8 之間的主要區別在於,該平台將在 2021 年 9 月之後繼續接收更新和安全修復。 同樣在版本 8 中,升級過程也得到了簡化,使得從版本 XNUMX 的升級過程變得更加容易。

服務器要求

要使用 Drupal,建議使用 2 GB RAM 和 2 個 CPU 內核。

主 Drupal 文件約為 100 MB,此外您還需要空間來存儲圖像、數據庫、主題、附加組件和備份,這取決於您站點的大小。

Drupal 9 需要 PHP 7.4 或更高版本,但有最低限制 (memory_limit)至 64 MB 內存,如果使用附加模塊,建議安裝 128 MB。

Drupal 可以使用 Apache 或 Nginx 作為 Web 服務器,並使用 MySQL、PostgreSQL 或 SQLite 作為數據庫。

我們將使用 Nginx 和 MySQL 安裝 Drupal。

安裝

將已安裝的軟件包更新到最新版本:

sudo dnf update -y

讓我們為 http/80 和 https/443 端口的傳入流量添加永久權限:

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

應用新的防火牆規則:

sudo systemctl reload firewalld

安裝 Nginx:

sudo dnf install nginx -y

讓我們啟動並啟用 Nginx 服務器:

sudo systemctl start nginx
sudo systemctl enable nginx

由於 Centos 主存儲庫當前使用 PHP 7.2,因此我們使用 PHP 7.4(Drupal 9 的最低版本)添加 REMI 存儲庫。
為此,請添加 EPEL 存儲庫(REMI 存儲庫需要):

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

讓我們添加 REMI 存儲庫:

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

啟用 php:remi-7.4 模塊來安裝 php 7.4:

sudo dnf module enable php:remi-7.4 -y

安裝 php-fpm 和 php-cli:

sudo dnf install -y php-fpm php-cli

安裝 Drupal 工作所需的 PHP 模塊:

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

我們還將安裝推薦的 PHP 模塊 mbstring opcache:

sudo dnf install -y php-mbstring php-opcache

安裝MySQL服務器:

sudo dnf install mysql-server -y

啟用並啟動 MySQL 服務器:

sudo systemctl start mysqld
sudo systemctl enable mysqld

由於我們正在為 VDS 製作模板,並且它們可能很慢,因此我們將添加 30 秒的 mysqld 啟動延遲,否則在初始系統啟動期間啟動服務器可能會出現問題:

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

讓我們通過更改 /etc/php-fpm.d/www.conf 來更改 nginx 運行的組和用戶:

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

相應地將 PHP 會話目錄的所有者更改為 nginx:

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

讓我們從 /etc/nginx/nginx.conf 配置文件中刪除註釋行(這樣 sed 就不會出現雙重命中):

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

將 gzip 壓縮設置添加到 /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

讓我們將index.php索引文件的設置添加到/etc/nginx/nginx.conf中:

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

讓我們通過 php-fpm 套接字添加默認服務器處理 php 的設置,禁用靜態文件的日誌,增加過期時間,禁用 favicon.ico 和 robots.txt 的訪問和錯誤日​​志,並拒絕訪問 .ht 文件每個人:

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

安裝安裝 certbot 所需的 wget:

sudo dnf install wget -y

從場外下載 certbot 可執行文件:

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

將 certbot 移動到 /usr/local/bin/:

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

並將權利和所有權分配給 root:

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

安裝 certbot 的依賴項並在此階段停止它(答案:Y、c):

certbot-auto

從場外下載最新版本 Drupal 9 的存檔:

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

安裝 tar 以解壓存檔:

sudo dnf install tar -y

刪除/usr/share/nginx/html/目錄下的默認文件:

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

將文件解壓到Web服務器目錄:

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

將文件從子目錄移動到 Web 服務器的根目錄:

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

刪除子目錄:

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

刪除包含安裝文件的存檔:

rm -f ./tar.gz

設置 nginx 文件的所有者:

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

在此階段,我們將關閉服務器並拍攝快照:

shutdown -h now

從快照啟動 VDS 後,我們將通過運行以下腳本來執行 MySQL 服務器的初始設置:

mysql_secure_installation

啟用密碼驗證器:

Would you like to setup VALIDATE PASSWORD component? : y

設置MySQL root用戶密碼:

New password:
Re-enter new password:

刪除匿名用戶:

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

讓我們阻止 root 遠程連接:

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

讓我們刪除測試數據庫:

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

重新加載權限表:

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

之後,為了完成安裝,我們可以去 vps_ip_地址
在這個地址我們會看到一個Drupal安裝的頁面。

選擇要使用的語言。 例如:俄語。 點擊“保存並繼續”

讓我們選擇一個安裝配置文件(演示僅用於熟悉系統)。 在我們的例子中,讓它成為“標準”。

在下一頁上,為數據庫命名,例如“drupal”。 指定數據庫用戶名 root 以及啟動 mysql_secure_installation 時給他的密碼。 單擊“保存並繼續”。

讓我們等待翻譯的安裝和更新完成(該過程可能需要幾分鐘)。

指定站點名稱,設置站點電子郵件(代表將收到哪個站點通知)、Drupal 管理員帳戶的登錄名、密碼和電子郵件。 我們還將在區域設置中設置國家和時區。 並單擊“保存並繼續”完成安裝。

之後,您可以使用創建的Drupal管理員登錄名和密碼進入控制面板。

HTTPS 設置(可選)

要配置 HTTPS,VDS 必須具有有效的 DNS 名稱,在中指定

/etc/nginx/nginx.conf

在服務器部分中的服務器名稱(例如):

server_name  domainname.ru;

重啟nginx:

service nginx restart

讓我們啟動 certbot:

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

輸入您的電子郵件,同意服務條款 (A),訂閱時事通訊(可選)(N),選擇您要為其頒發證書的域名(全部輸入)。

如果一切順利,我們將看到一條有關證書頒發和服務器設置成功的消息:

Congratulations! You have successfully enabled ...

之後,端口 80 上的連接將被重定向到 443 (https)。

添加到/etc/crontab以自動更新證書:

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

設置可信主機安全(推薦)

此設置旨在作為動態 base_url 檢測問題的解決方案,並旨在防止 HTTP HOST 標頭攻擊(當您的網站認為是其他人時)。

為此,您需要在設置文件中指定站點的受信任域名。

在文件中

/usr/share/nginx/html/sites/default/settings.php 取消註釋或添加具有實際站點名稱模式的設置,例如:

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

安裝 PHP APCu(推薦)

Drupal 支持 APCu - 替代 PHP 用戶緩存,版本 8 和 9 比以前的版本更頻繁地使用 APCu 作為短期本地緩存。 默認緩存大小 (32 MB) 適合大多數站點,並且不能超過 512 MB。

要激活,請安裝 PHP APCu 模塊:

dnf -y install php-pecl-apcu

重新啟動 nginx 和 php-fpm:

service nginx restart
service php-fpm restart

在使用俄語和APCu以及推薦的緩存大小的情況下,您可以在控制面板中看到一條警告,指出分配的緩存內存的大小與推薦的大小不同,但實際上一切正常,並且不正確警告很可能會在下次更新中得到修復。

或者,如果警告傷害眼睛,您可以使用 來自異地的相應補丁.

我們想提醒您,您也可以為我們製作圖像

參與方式有三種選擇。

自行準備圖像並獲得 3000 盧布的餘額

如果您準備好立即投入戰鬥並塑造您所缺乏的形象,我們將在您的內部餘額中存入 3000 盧布 - 您可以將其花在服務器上。

如何創建您的形象:

  1. 在我們這裡創建一個帳戶 在線
  2. 告訴支持人員您將創建和測試圖像
  3. 我們將向您贈送 3000 盧布並啟用創建快照的功能
  4. 訂購具有乾淨操作系統的虛擬服務器
  5. 在此 VPS 上安裝軟件並進行設置
  6. 編寫軟件部署的說明或腳本
  7. 為配置的服務器創建快照
  8. 通過在“服務器模板”下拉列表中選擇之前創建的快照來訂購新的虛擬服務器
  9. 服務器創建成功後,將第6步收到的材料轉發給技術支持
  10. 如果出現錯誤,您可以向支持人員檢查原因並重複設置

對於企業主:提供您的軟件

如果您是在 VPS 上部署和使用的軟件開發人員,那麼我們可以將您納入市場。 這就是我們如何幫助您引入新客戶、流量和知名度的方式。 寫信給我們

請在評論中告訴我們您錯過了哪張圖片?

我們會自己準備

在 Centos 9 上使用 Drupal 8 創建 VPS 模板

在 Centos 9 上使用 Drupal 8 創建 VPS 模板

來源: www.habr.com