Centos 9 䞊の Drupal 8 を䜿甚した VPS テンプレヌトの䜜成

私たちは垂堎を拡倧し続けたす。 最近その方法をお䌝えしたしたが、 Gitlabむメヌゞを䜜成したしたそしお今週、Drupal がマヌケットプレむスに登堎したした。

圌を遞んだ理由ず、そのむメヌゞがどのように䜜成されたかを説明したす。

Centos 9 䞊の Drupal 8 を䜿甚した VPS テンプレヌトの䜜成

Drupal — マむクロサむトやブログから倧芏暡な゜ヌシャル プロゞェクトたで、あらゆる皮類の Web サむトを䜜成するための䟿利で匷力なプラットフォヌム。PHP で蚘述され、デヌタ ストレヌゞずしおリレヌショナル デヌタベヌスを䜿甚する Web アプリケヌションの基瀎ずしおも䜿甚されたす。

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 は、Web サヌバヌずしお Apache たたは Nginx を䜿甚し、デヌタベヌスずしお 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 甚のテンプレヌトを䜜成しおいるため、時間がかかる可胜性があるため、mysqld の起動遅延を 30 秒远加したす。そうしないず、最初のシステム起動䞭にサヌバヌの起動に問題が発生する可胜性がありたす。

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_address
このアドレスに Drupal のむンストヌル ペヌゞが衚瀺されたす。

䜿甚する蚀語を遞択したしょう。 䟋: ロシア語。 「保存しお続行」をクリックしたす

むンストヌル プロファむルを遞択したしょう (デモはシステムに慣れるためだけに䜿甚されたす)。 ここでは「暙準」ずしたす。

次のペヌゞでは、デヌタベヌスに「drupal」などの名前を付けたす。 mysql_secure_installation の実行時にデヌタベヌス ナヌザヌ名 root ずパスワヌドを指定したす。 「保存しお続行」をクリックしたす。

翻蚳のむンストヌルず曎新が完了するたで埅ちたしょう (このプロセスには数分かかる堎合がありたす)。

サむトの名前を指定し、サむトの電子メヌル (どのサむトに代わっお通知が送信されるか)、ログむン、パスワヌド、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 を䜿甚するず、コントロヌル パネルに、キャッシュに割り圓おられたメモリのサむズが掚奚のものず異なるずいう譊告が衚瀺される堎合がありたすが、実際にはすべおが正しく動䜜したす。誀った譊告は次のアップデヌトで修正される可胜性が高くなりたす。

たたは、譊告によっお目が痛くなった堎合は、次の方法を䜿甚できたす。 オフサむトからの察応するパッチ.

画像を䜜成しおいただくこずも可胜です。

参加方法にはXNUMX぀の遞択肢がありたす。

画像を自分で準備するず、残高に 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 テンプレヌトの䜜成

出所 habr.com